OSDN Git Service

2007-04-03 Richard Guenther <rguenther@suse.de>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-04-03  Richard Guenther  <rguenther@suse.de>
2
3         * genpreds.c (write_insn_constraint_len): Write function
4         optimized for CONSTRAINT_LEN implementation.
5         (write_tm_preds_h): Output insn_constraint_len inline and
6         use it for CONSTRAINT_LEN.
7         (write_insn_preds_c): Don't output insn_constraint_len.
8         * doc/md.texi (define_register_constraint): Document multi-letter
9         constraints shall have the same length if they start with the same
10         letter.
11
12 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
13
14         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
15         (x86_64-*-linux*): Ditto.
16         * config/i386/i386.opt (mpc): New option.
17         * config/i386/i386.c (overrride_options): Handle
18         ix87_precision_string.
19         * config/i386/crtprec.c: New file.
20         * config/i386/t-crtpc: Ditto.
21         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
22         and -mpc80 options.
23         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
24         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
25         crtprec32.o, crtprec64.o and crtprec80.o.
26
27         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
28         and -mpc80 options.
29         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
30
31 2007-04-02  Eric Christopher  <echristo@apple.com>
32
33         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
34         limitations on darwin.
35
36 2007-04-02  Anatoly Sokolov <aesok@post.ru>
37
38         PR target/31137
39         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
40
41 2007-04-02  Dave Korn  <dave.korn@artimi.com>
42
43         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
44
45 2007-04-02  Dave Korn  <dave.korn@artimi.com>
46
47         * libgcc2.h (exception_descriptor): Don't forward-declare.
48         (__get_eh_table_language, __get_eh_table_version): Delete
49         prototypes of long-dead functions.
50
51 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
52
53         * ebitmap.h: New file
54         * ebitmap.c: New file
55         * Makefile.in (ebitmap.o): New target.
56
57 2007-04-01  Jan Hubicka  <jh@suse.cz>
58
59         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
60         before very first instruction.
61
62 2007-04-01  Jan Hubicka  <jh@suse.cz>
63
64         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
65         waring on 64bit hosts.
66         * bitmap.h: Fix typo in bitmap_head_def.
67
68 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
69
70         PR rtl-optimization/31391
71         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
72         into a DELETED_LABEL note, and the label is in an empty basic
73         block, update BB_END as well as BB_HEAD.
74
75 2007-04-01  Richard Henderson  <rth@redhat.com>
76
77         PR tree-optimization/31169
78         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
79         to varying if the range is outside [0,  prec-1].
80
81 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
82
83         PR target/31388
84         * config/mips/mips.md (load_const_gp): New insn.
85         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
86         the MIPS16 GP pseudo register if no_new_pseudos.
87         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
88
89 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
90
91         PR target/31364
92         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
93         secureplt.
94         (call_value): Likewise.
95
96 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
97             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
98
99         PR 14737
100         * doc/invoke.texi: (optimization options): Reword description
101         of -ffast-math. Document its primary purpose.
102
103 2007-03-31  Richard Guenther  <rguenther@suse.de>
104
105         * omp-low.c (splay-tree.h): Include.
106         (lookup_decl): Replace splay-tree usage by pointer-map.
107         (maybe_lookup_decl): Likewise.
108         (new_omp_context): Likewise.
109         (delete_omp_context): Likewise.
110         * gimplify.c (splay-tree.h): Include.
111         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
112         pointer-map.
113         (remap_ssa_name): Likewise.
114         (remap_decl): Likewise.
115         (remap_type_1): Likewise.
116         (remap_type): Likewise.
117         (copy_body_r): Likewise.
118         (expand_call_inline): Likewise.
119         (clone_body): Likewise.
120         (copy_tree_r): Likewise.
121         (remap_save_expr): Likewise.
122         (unsave_r): Likewise.
123         (unsave_expr_now): Likewise.
124         (tree_function_versioning): Likewise.
125         (build_duplicate_type): Likewise.
126         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
127         (struct copy_body_data): Replace splay-tree by pointer-map.
128         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
129         not $(SPLAY_TREE_H).
130         (gimplify.o): Depend on $(SPLAY_TREE_H).
131         (omp-low.p): Likewise.
132
133 2007-03-31  Anatoly Sokolov <aesok@post.ru>
134
135         * config/avr/predicates.md (even_register_operand,
136         odd_register_operand): New predicates.
137         * config/avr/avr.md (movw peephole2): New.
138         (movw_r peephole2): New.
139
140 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
141
142         * tree.h (get_signed_or_unsigned_type): New.
143         * fold-const.c (operand_equal_for_comparison_p): Use
144         get_signed_or_unsigned_type instead of
145         lang_hooks.types.signed_or_unsigned_type.
146         * expr.c (store_expr): Ditto.
147         * langhooks.c (get_signed_or_unsigned_type): New.
148         (lhd_signed_or_unsigned_type): New.
149         * langhooks.h (lhd_signed_or_unsigned_type): New.
150         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
151
152 2007-03-30  Richard Henderson  <rth@redhat.com>
153
154         * tree-ssa-loop-ivopts.c: Include target.h.
155         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
156         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
157         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
158         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
159
160 2007-03-30  Richard Henderson  <rth@redhat.com>
161             Kai Tietz  <kai.tietz@onevision.com>
162
163         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
164         default for 64-bit.
165         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
166         (TARGET_64BIT_MS_ABI): New.
167         (DBX_REGISTER_NUMBER): Handle 64-bit.
168         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
169         (LONG_TYPE_SIZE): Force to 32.
170         (REG_PARM_STACK_SPACE): New.
171         (OUTGOING_REG_PARM_STACK_SPACE): New.
172         (REGPARM_MAX, SSE_REGPARM_MAX): New.
173         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
174         (STACK_BOUNDARY): Use 128 for 64-bit.
175         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
176         Add 64-bit implementation.
177         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
178         argument unused.
179         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
180         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
181         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
182         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
183         (ix86_handle_cconv_attribute): Don't warn when ignoring if
184         TARGET_64BIT_MS_ABI.
185         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
186         (ix86_pass_by_reference): Likewise.
187         (ix86_function_value_regno_p): Likewise.
188         (ix86_build_builtin_va_list): Likewise.
189         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
190         (function_arg_advance_ms_64): New.
191         (function_arg_advance): Call it.
192         (function_arg_ms_64): New.
193         (function_arg): Call it.
194         (function_value_ms_64): New.
195         (ix86_function_value_1): Call it.
196         (return_in_memory_ms_64): New.
197         (ix86_return_in_memory): Call it.
198         (setup_incoming_varargs_ms_64): New.
199         (ix86_setup_incoming_varargs): Call it.
200         (ix86_expand_prologue): Handle 64-bit stack probing.
201         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
202         (output_pic_addr_const): Likewise.
203         (x86_this_parameter): Likewise.
204         (x86_output_mi_thunk): Likewise.
205         (x86_function_profiler): Likewise.
206         (TARGET_STRICT_ARGUMENT_NAMING): New.
207         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
208         (TARGET_64BIT_MS_ABI): New.
209         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
210         * config/i386/i386.md (allocate_stack_worker): Remove.
211         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
212         describe the clobber of eax without a match_scratch.
213         (allocate_stack_worker_postreload): Remove.
214         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
215         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
216         (allocate_stack_worker_rex64_postreload): Remove.
217         (allocate_stack): Handle 64-bit.
218         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
219         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
220         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
221         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
222         (STANDARD_STARTFILE_PREFIX_1): Likewise.
223         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
224         * config.build (x86_64-*-mingw*): New host.
225         * config.host (x86_64-*-mingw*): New host.
226         * config.gcc (x86_64-*-mingw*): New target.
227         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
228
229 2007-03-30  Richard Henderson  <rth@redhat.com>
230             Kai Tietz  <kai.tietz@onevision.com>
231
232         * c-pragma.c (struct def_pragma_macro_value): New.
233         (struct def_pragma_macro): New.
234         (pushed_macro_table): New.
235         (dpm_hash, dpm_eq): New.
236         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
237         (init_pragma): Install them.
238         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
239
240 2007-03-30  Anatoly Sokolov <aesok@post.ru>
241
242         * config/avr/avr.c (avr_override_options): Clear
243         'flag_delete_null_pointer_checks'.
244
245 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
246
247         PR c++/26099
248         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
249         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
250         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
251         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
252         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
253         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
254         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
255         C++ extensions.
256         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
257
258 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
259
260         * regmove.c: Move all of pass_stack_adjustments from here...
261         * combine-stack-adj.c: ...to this new file.
262         * Makefile.in: Add rules for combine-stack-adj.o.
263
264 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
265
266         PR tree-optimization/31383
267         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
268         to have the same length.
269
270 2007-03-30  Jan Hubicka  <jh@suse.cz>
271
272         PR middle-end/PR30700
273         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
274         availablility; add more sanity checking; ask varpool only about
275         VAR_DECL.
276
277 2007-03-29  Richard Henderson  <rth@redhat.com>
278
279         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
280         to decide, but __SIZEOF_LONG_LONG__.
281
282 2007-03-29  Richard Henderson  <rth@redhat.com>
283
284         * emutls.c (struct __emutls_array): New.
285         (emutls_destroy): Use it instead of casting element 0 from void*.
286         (__emutls_get_address): Likewise.
287
288 2007-03-29  Richard Henderson  <rth@redhat.com>
289
290         * varasm.c (initializer_constant_valid_p): Don't deny
291         DECL_DLLIMPORT_P on functions.
292
293         * config/i386/cygming.h: Remove function declarations.
294         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
295         (ASM_OUTPUT_LABELREF): Remove.
296         (COMMON_ASM_OP): Remove.
297         (ASM_OUTPUT_COMMON): Remove.
298         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
299         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
300         (ASM_DECLARE_FUNCTION_NAME): Likewise.
301         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
302         Rename from TARGET_ENCODE_SECTION_INFO.
303         * config/i386/netware.h: Likewise.
304         * config/i386/i386-protos.h: Update.
305         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
306         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
307         (legitimate_constant_p): Reject dllimports.
308         (dllimport_map, get_dllimport_decl): New.
309         (legitimize_dllimport_symbol): New.
310         (legitimize_address, ix86_expand_move): Use it.
311         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
312         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
313         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
314         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
315         * config/i386/predicates.md (constant_call_address_operand): Only
316         accept symbols; reject dllimport_p symbols.
317         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
318         i386_pe_maybe_record_exported_symbol.
319         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
320         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
321         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
322         trust the setting of DECL_DLLIMPORT_P.
323         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
324         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
325         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
326         tidy the argument scanning loop.
327         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
328         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
329         (i386_pe_strip_name_encoding): Remove.
330         (i386_pe_binds_local_p): New.
331         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
332         (i386_pe_output_labelref): Remove.
333         (i386_pe_asm_output_aligned_decl_common): New.
334         (i386_pe_maybe_record_exported_symbol): Rename from
335         i386_pe_record_exported_symbol; check for dllexported symbols.
336
337 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
338
339         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
340         add comment explaining why vsnprintf cannot be used.
341
342 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
343
344         PR tree-optimization/30666
345         * tree.c (build_complex_type): When creating type names for DWARF2
346         debug info, create TYPE_DECLs for TYPE_NAME instead of
347         IDENTIFIER_NODEs.
348         (build_common_tree_nodes_2): Use build_complex_type when building
349         predefined complex types, to preserve canonical types.
350
351 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
352
353         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
354         (noce_get_alt_condition): Look at it to determine whether to
355         reverse the condition or not.
356         (noce_get_condition): Substitute the truth for lies.
357         (noce_find_if_block): Set the then_else_reversed field.
358
359 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
360
361         * config/fr30/fr30.md (movdi): Do not accept immediates as the
362         destination of this insn.
363         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
364         than calling gen_rtx_SET directly.  Use r0 to hold the value of
365         'address + 4' rather than a stack based temporary which can be
366         mis-optimized away.
367
368 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
369
370         * config/s390/s390.c (s390_secondary_input_reload_class,
371         s390_secondary_output_reload_class): Functions removed.
372         (s390_secondary_reload): New function.
373         (TARGET_SECONDARY_RELOAD): Target macro defined.
374         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
375         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
376         * config/s390/s390.md ("reload_outti", "reload_outdi",
377         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
378         "reload_out<mode>"): Expanders removed.
379         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
380         "reload<mode>_nonoffmem_out"): Expanders added.
381
382 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
383
384         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
385         SRC->DEST replacement failed anyway.
386
387 2007-03-28  Mike Stump  <mrs@apple.com>
388
389         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
390         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
391         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
392
393 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
394
395         * config.gcc: Accept barcelona as a variant of amdfam10.
396         * config/i386/i386.c (override_options): Likewise.
397         * doc/invoke.texi: Likewise.
398
399 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
400
401         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
402         offsets for BIT_FIELD_REF and COMPONENT_REF.
403
404 2007-03-28  Richard Guenther  <rguenther@suse.de>
405
406         * tree.c (is_global_var): Move ...
407         * tree-flow-inline.h (is_global_var): ... here.
408         * tree.h (is_global_var): Remove declaration.
409
410 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
411
412         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
413         option.
414         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
415         * config/i386/i386.c (ix86_tune_features): Initialize new
416         tuning option.
417         * config/i386/predicates.md (promotable_binary_operator): Use
418         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
419
420 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
421
422         PR target/31380
423         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
424
425 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
426
427         * config/fr30/fr30.md (movsi_internal): Change destination
428         constraint from m to V and add m to the end.
429
430 2007-03-28  Christian Bruel  <christian.bruel@st.com>
431
432         * config/sh/sh.md (movsi_i): Fix type attribute.
433
434 2007-03-28  Christian Bruel  <christian.bruel@st.com>
435
436         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
437         (movsf_ie): Likewise.
438
439 2007-03-28  Christian Bruel  <christian.bruel@st.com>
440
441         * config.gcc: Add sh4-300 to multilib.
442         * config/sh/t-mlib-sh4-300: New file.
443
444 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
445
446         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
447         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
448         fix_trunc<mode>di2.
449         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
450         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
451         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
452         "fixuns_trunctddi2"): Whitespace fix.
453
454 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
455
456         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
457         the definition of struct sh_args.
458         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
459         CALL_COOKIE_INT_REG_GET): Likewise.
460
461 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
462
463         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
464         transformations are applied successfully.
465
466 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
467
468         * tree.c (tree_contains_struct): Permit 512 tree codes.
469         * tree.h (tree_contains_struct): Ditto.
470         (MAX_TREE_CODES): Ditto.
471         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
472         SPARE member to store remaining padding bits.
473
474 2007-03-27  Anatoly Sokolov <aesok@post.ru>
475
476         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
477         architecture.
478
479 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
480
481         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
482         * configure: Regenerate.
483
484         * configure: Regenerate using the correct version of autoconf.
485
486 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
487
488         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
489         pointer regs.
490         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
491         regs to "__SP_L__" and "__SP_H__".
492
493 2007-03-27  Richard Guenther  <rguenther@suse.de>
494
495         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
496         computations with it with a HOST_WIDE_INT variable.
497
498 2007-03-26  Mike Stump  <mrs@apple.com>
499
500         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
501         objective-c-header, objective-c++-header and objc++-cpp-output
502         support.
503         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
504
505 2007-03-26  Richard Henderson  <rth@redhat.com>
506
507         PR target/31361
508         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
509         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
510         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
511         IX86_BUILTIN_PSRLQ128): New.
512         (ix86_init_mmx_sse_builtins): Add them.
513         (ix86_expand_builtin): Expand them.
514         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
515         operand 2 be TImode.
516         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
517         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
518         _mm_srli_epi64): Mark __B const.
519         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
520         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
521         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
522         new two-vector shift builtins.
523
524 2007-03-26  Ian Lance Taylor  <iant@google.com>
525
526         PR tree-optimization/31345
527         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
528         [+INF, +INF(OVF)] into VARYING.
529
530 2007-03-26  Zack Weinberg  <zackw@panix.com>
531
532         * gengtype-parse.c: New file.
533         * gengtype-yacc.y: Delete.
534         * gengtype-lex.l: Don't include gengtype-yacc.h.
535         Define YY_DECL and yyterminate appropriately for recursive
536         descent parser.  yylval is now a string out-parameter to yylex.
537         (HWS, EOID): New shorthand.
538         (IWORD): Add a couple more types.
539         (yylex): Add a setup stanza.  Remove the complex rules for
540         detecting GTY'ed types and typedefs; replace with simple
541         keyword detectors.  Adjust everything for the changed
542         definition of yylval.  Ignore all pp-directives, not just #define.
543         (yyerror): Delete.
544         (parse_file): Rename yybegin; do not call yyparse.
545         (yyend): New.
546         * gengtype.c (xasprintf): Export again.
547         (this_file): New.  Use everywhere __FILE__ was being used.
548         (get_lang_bitmap): Special case types defined in gengtype.c.
549         (do_typedef, new_structure): Suppress definition of certain types.
550         (new_structure): Improve diagnostics of duplicate definitions.
551         Make sure location_s is associated with input.h.
552         (nreverse_pairs, define_location_structures): New functions.
553         (main): Improve tagging of kludge types.  Remove old kludges
554         for input.h types; use define_location_structures.
555         * gengtype.h: Update prototypes.  Define token codes here.
556         * Makefile.in: Remove all references to gengtype-yacc.
557         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
558         and gengtype.
559         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
560         add GTY((skip)) to the field that's only conditionally there.
561         * doc/install.texi: Document that Bison is no longer required
562         unless building treelang.
563
564         * gengtype.c: Don't include gtyp-gen.h.
565         (srcdir): Declare here.
566         (base_files, lang_dir_names): Allocate dynamically.
567         (gt_files, num_gt_files, num_lang_dirs): New globals.
568         (measure_input_list, read_input_line, read_input_list)
569         (set_lang_bitmap): New functions.
570         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
571         simplify, relying on read_input_list to set up the bitmaps.
572         (main): Arguments are no longer unused.  Check for correct number
573         of command line arguments, set srcdir and srcdir_len, then call
574         read_input_list, before doing anything else.  No need to worry
575         about duplicates in main loop.
576         * configure.ac: Simplify the calculation of all_gtfiles.
577         Put language tags in there.  Don't set or substitute
578         all_gtfiles_files_langs or all_gtfiles_files_frags.
579         * Makefile.in: Revamp the way gengtype is invoked, now that it
580         takes a file on its command line with a much simpler format.
581         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
582         (GTFILES): Remove duplicates and C source files.
583         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
584         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
585         * configure: Regenerate.
586
587         * gengtype.h: Remove all type definitions to gengtype.c; leave
588         only definitions of options_p, type_p, and pair_p as opaque
589         pointers.  Update prototypes.
590         * gengtype.c: Many type definitions moved here from gengtype.h.
591         Consolidate type definitions at the top of the file.
592         (xvasprintf): Delete.
593         (xasprintf): Make static.
594         (create_nested_pointer_option): Add 'next' parameter.
595         (create_field_all, create_field_at): New functions.
596         (create_field): Now a thin wrapper around create_field_all.
597         (create_optional_field): Rename create_optional_field_ and add
598         line argument.  Original name is now a macro which supplies
599         __LINE__.
600         (oprintf): Use vsnprintf directly.
601         (close_output_files): Use fatal rather than perror/exit.
602         (note_def_vec, note_def_vec_alloc): Use create_field_at.
603         (main): Set progname.  Don't use exit.
604         * gengtype-yacc.y (struct_fields): Use create_field_at.
605         (option, optionseqopt): Delete.
606         (optionseq): Consolidate productions from option here so we
607         can use the first argument to create_option.
608
609         * gengtype-lex.l: Distinguish unions from structures in the
610         token type.  Don't call find_structure; return the tag as a string.
611         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
612         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
613         Reorganize typedef_struct production accordingly.
614         Use create_nested_ptr_option.
615         * gengtype.c (create_nested_ptr_option): New function.
616         * gengtype.h: Declare it.
617
618         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
619         (string_type): Don't declare.
620         (do_scalar_typedef): Declare.
621         (create_scalar_type): Update prototype.
622         * gengtype.c (string_type): Make static.
623         (scalar_nonchar, scalar_char): New.
624         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
625         (resolve_typedef): Use scalar_nonchar for error recovery.
626         (create_scalar_type): Remove name_len field.  Return scalar_char
627         or scalar_nonchar as appropriate.
628         (adjust_field_type): Look at scalar_is_char boolean to decide whether
629         to use string_type.
630         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
631         whenever possible.
632         (main): Initialize scalar_char and scalar_nonchar before calling
633         gen_rtx_next.
634         * gengtype-lex.l: Adjust for removal of second argument to
635         create_scalar_type.  Use yylval.s instead of yylval.t when
636         returning SCALAR.
637         * gengtype-yacc.y: Type of SCALAR is string.  Call
638         create_scalar_type from type:SCALAR rule.  Adjust for removal of
639         second argument to create_scalar_type.
640
641         * vec.h: Remove all #if IN_GENGTYPE blocks.
642         Add comment saying that changes may require adjustments to gengtype.
643         * gengtype.c: Don't include coretypes.h or tm.h.
644         Add comment to inclusion of errors.h.
645         (note_def_vec, note_def_vec_alloc): New functions.
646         * gengtype.h: Declare new functions.
647         * gengtype-lex.l: Don't include coretypes.h.
648         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
649         Delete.
650         (update_lineno): Remove unnecessary prototype.
651         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
652         (VEC rule): Just return VEC_TOKEN.
653         * gengtype-yacc.y (VEC_TOKEN): New token type.
654         (type): Add a production for VEC(a,b).
655         * Makefile.in: Update dependencies.
656
657         * gengtype-lex.l: Remove rules for parsing pointer-to-function
658         typedefs that use the old PARAMS macro.
659
660         * gengtype-lex.l: Remove all rules and states relating to yacc
661         input files.
662         * gengtype-yacc.y: Similarly.
663         * gengtype.c (note_yacc_type): Delete function.
664         * gengtype.h: Update prototypes.
665
666 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
667
668         * tree-pretty-print.c (dump_generic_node): Report precision of
669         unnamed integer types.
670
671 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
672
673         * ifcvt.c (noce_try_store_flag_constants): Don't check
674         no_new_pseudos here.
675         (noce_try_store_flag_constants): Don't check no_new_pseudos.
676         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
677         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
678         noce_try_sign_mask): Likewise.
679         (if_convert): Check no_new_pseudos here.
680
681         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
682         Remove prototypes.
683         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
684         (noce_get_condition): Handle new then_else_reversed argument.
685         (noce_init_if_info): Remove, fold into noce_find_if_block.
686         (noce_process_if_block): Take a struct noce_if_info as the
687         argument.  Don't set up one based on ce_if_info.  Update pointer
688         references accordingly.
689         (cond_move_process_if_block): Likewise.
690         (process_if_block): Removed.
691         (find_if_block): Removed.  Move functionality two new functions,
692         noce_find_if_block and cond_exec_find_if_block.
693         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
694         blocks and the symmetric IF-ELSE-JOIN case.
695         (cond_exec_find_if_block): Also new function mostly based on old
696         find_if_block and process_if_block.
697         (find_if_header): Replace find_if_block call with separately
698         guarded calls to noce_find_if_block and cond_exec_find_if_block.
699         (find_cond_trap): Update noce_get_condition call.
700         (dead_or_predicable): Likewise.
701
702 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
703
704         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
705         Remove.
706         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
707         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
708         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
709         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
710         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
711         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
712         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
713         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
714         __builtin_ia32_psrad128 builtins.
715
716 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
717
718         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
719         * config/i386/constraints.md
720         (define_constraint "I"): Use IN_RANGE macro.
721         (define_constraint "J"): Ditto.
722         (define_constraint "K"): Ditto.
723         (define_constraint "M"): Ditto.
724         (define_constraint "N"): Ditto.
725         (define_constraint "O"): Ditto.
726         * config/i386/predicates.md
727         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
728         (define_predicate "const_0_to_3_operand"): Ditto.
729         (define_predicate "const_0_to_7_operand"): Ditto.
730         (define_predicate "const_0_to_15_operand"): Ditto.
731         (define_predicate "const_0_to_63_operand"): Ditto.
732         (define_predicate "const_0_to_255_operand"): Ditto.
733         (define_predicate "const_1_to_31_operand"): Ditto.
734         (define_predicate "const_2_to_3_operand"): Ditto.
735         (define_predicate "const_4_to_7_operand"): Ditto.
736
737 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
738
739         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
740         in SImode for save_world.
741         * config/rs6000/altivec.md (save_world, restore_world): Convert to
742         LR hard reg.
743
744 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
745
746         PR tree-optimization/30784
747         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
748         BIT_FIELD_REF.
749
750 2007-03-25  Revital Eres  <eres@il.ibm.com>
751
752         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
753           Fold movement_possibility function into it.
754
755 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
756
757         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
758         (load_macho_picbase_{si,di}): Convert to LR hard reg.
759         (call_indirect_nonlocal_darwin64): Same.
760         (call_nonlocal_darwin64): Same.
761         (call_value_indirect_nonlocal_darwin64): Same.
762         (call_value_nonlocal_darwin64): Same.
763         (sibcall_nonlocal_darwin64): Same.
764         (sibcall_value_nonlocal_darwin64): Same.
765         (sibcall_symbolic_64): Same.
766         (sibcall_value_symbolic_64): Same.
767         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
768         LR pseudo.
769         (rs6000_emit_load_toc_table): Same.
770         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
771         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
772         (mull_call): Same.
773         (divss_call): Same.
774         (divus_call): Same.
775         (quoss_call): Same.
776         (quous_call): Same.
777         (load_toc_v4_pic_si): Same
778         (load_toc_v4_PIC_1): Same.
779         (load_toc_v4_PIC_1b): Same.
780         (call_indirect_aix{32,64}): Same.
781         (call_value_indirect_aix{32,64}): Same.
782         (call): Same.
783         (call_value): Same.
784         (call_local{32,64}): Same.
785         (call_value_local{32,64}): Same.
786         (call_indirect_nonlocal_aix{32,64}): Same.
787         (call_nonlocal_aix{32,64}): Same.
788         (call_value_indirect_nonlocal_aix{32,64}): Same.
789         (call_value_nonlocal_aix{32,64}): Same.
790         (call_indirect_nonlocal_sysv<mode>): Same.
791         (call_nonlocal_sysv<mode>): Same.
792         (call_value_indirect_nonlocal_sysv<mode>): Same.
793         (call_value_nonlocal_sysv<mode>): Same.
794         (sibcall): Same.
795         (sibcall_local{32,64}): Same.
796         (sibcall_value_local{32,64}): Same.
797         (sibcall_nonlocal_aix{32,64}): Same.
798         (sibcall_value_nonlocal_aix{32,64}): Same.
799         (sibcall_nonlocal_sysv<mode>): Same.
800         (sibcall_value): Same.
801         (sibcall_value_nonlocal_sysv<mode>): Same.
802
803 2007-03-24  Paul Brook  <paul@codesourcery.com>
804
805         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
806         * config/arm/linux-eabi.h: Remove legacy syscall hack.
807
808 2007-03-24  Richard Henderson  <rth@redhat.com>
809
810         * config/ia64/constraints.md: New file.
811         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
812         satisfies_constraint_?.
813         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
814         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
815         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
816         ia64_output_mi_thunk): Likewise.
817         (ia64_const_ok_for_letter_p): Remove.
818         (ia64_const_double_ok_for_letter_p): Remove.
819         (ia64_extra_constraint): Remove.
820         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
821         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
822         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
823         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
824         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
825         EXTRA_MEMORY_CONSTRAINT): Remove.
826         * config/ia64/ia64.md: Include constriants.md.  Replace
827         CONST_OK_FOR_? with satisfies_constraint_?.
828
829 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
830             H.J. Lu  <hongjiu.lu@intel.com>
831
832         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
833         DPD or BID name.
834         (name macros): Use DPD_BID_NAME to convert names properly.
835
836         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
837         decimal floating point format.
838         (init_floating_libfuncs): Change decimal functions so that they
839         have a "bid_" prefix if the decimal system uses the BID format,
840         and "dpd_" prefix if the decimal system uses the DPD format.
841         (init_interclass_conv_libfuncs): Ditto.
842         (init_intraclass_conv_libfuncs): Ditto.
843
844         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
845         using the BID format.
846
847         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
848         whether we are using the BID decimal format.
849         * configure: Regenerate.
850
851         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
852         the compiler has decimal floating point enabled.  Define
853         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
854         instead of DPD.
855
856         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
857         using the BID format.
858
859         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
860         whether we are using the BID decimal format.
861         * configure: Regenerate.
862
863         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
864         the compiler has decimal floating point enabled.  Define
865         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
866         instead of DPD.
867
868         * doc/install.texi (--enable-decimal-float): Document BID and DPD
869         options, and that it is enabled for i386/x86_64 systems.
870
871         * Makefile.in (enable_decimal_float): New.
872         (DECNUMFMT): New.
873         (DECNUMINC): Add  -I$(DECNUMFMT).
874         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
875         to $(DECNUMFMT) from $(DECNUM).
876
877         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
878         Substitute enable_decimal_float.
879         * configure: Regenerated.
880
881         PR other/30529
882         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
883         unsigned long.
884
885         * configure.ac: Enable decimal float for x86_64-*-linux*.
886         * configure: Regenerated.
887
888         PR other/30530
889         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
890         decimal128ClearSign to flip and clear the sign bit in decimal128.
891         (decimal_real_maxval): Set decimal128SetSign to set the sign
892         bit in decimal128.
893
894 2007-03-23  Ian Lance Taylor  <iant@google.com>
895
896         * fold-const.c (fold_binary): Correct warning for X - c >= X.
897
898 2007-03-23  Ian Lance Taylor  <iant@google.com>
899
900         * tree-dump.c (dump_files): Correct comment.
901
902 2007-03-23  Ian Lance Taylor  <iant@google.com>
903
904         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
905
906 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
907
908         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
909         in cfglayout mode.  Don't go into and out of cfglayout mode.
910         Link the blocks in the order of the constructed traces.
911         (rest_of_handle_tracer): Adjust call to tracer.
912         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
913         Don't go into cfglayout mode.
914         (rtl_loop_done): Don't go out of cfglayout mode.
915         * cfglayout.c (relink_block_chain): New function, split out from...
916         (fixup_reorder_chain): ...here.  Remove redundant checking.
917         (cfg_layout_finalize): Don't clear the header, footer, and aux
918         fields here, move the code to do so to relink_block_chain.  Likewise
919         for free_original_copy_tables.
920         * rtl.h (tracer): Update prototype.
921         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
922         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
923         mode.  Use relink_block_chain to serialize the CFG according to the
924         new basic block order.  Move targetm.cannot_modify_jumps_p check from
925         here...
926         (gate_handle_reorder_blocks): ...to here.
927         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
928         from here...
929         (gate_duplicate_computed_gotos): ...to here.
930         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
931         something always changes when going into and out of cfglayout mode.
932         Perform an expensive cfg cleanup while going into cfglayout mode.
933         Always update liveness information on HAVE_conditional_execution
934         targets.  Reserialize the basic blocks and go out of cfglayout mode.
935         * reg-stack.c: Include cfglayout.h.
936         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
937         the call to reorder_basic_blocks.
938         * basic-block.h (reorder_basic_blocks): Update prototype.
939         (relink_block_chain): New prototype.
940         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
941
942 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
943
944         * config/mips/mips.md (type, hazard, *movdi_32bit,
945         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
946         *movhi_internal, *movqi_internal, *movsf_hardfloat,
947         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
948         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
949         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
950         applicable.
951         (movcc): Change first xfer to multi.
952         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
953         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
954         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
955         config/mips/generic.md: Change reservations using "xfer" to use
956         "mfc,mtc".
957         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
958         using match_operand.
959         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
960         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
961         examining mode.
962         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
963
964 2007-03-22  Richard Henderson  <rth@redhat.com>
965
966         * config/i386/i386.c: Remove unnecessary function declarations.
967         Move targetm definition, and all related macros, to the end of
968         the file.  Resort some functions to put definitions before uses.
969         (ix86_attribute_table): Make static.  Move to end of file.
970         (ix86_gimplify_va_arg): Make static.
971
972 2007-03-22  Richard Henderson  <rth@redhat.com>
973
974         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
975         don't increase local_regparm with force_align_arg_pointer check.
976         (ix86_function_sseregparm): Assert 32-bit.
977         (type_has_variadic_args_p): New.
978         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
979         type_has_variadic_args_p.
980         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
981         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
982         use memset instead.  Do maybe_vaarg check first; skip attribute
983         tests if true; skip attribute tests for 64-bit.
984         (construct_container): Remove TARGET_DEBUG_ARG.
985         (function_arg_advance_32, function_arg_advance_64): Split out ...
986         (function_arg_advance): ... from here.
987         (function_arg_32, function_arg_64): Split out ...
988         (function_arg): ... from here.
989         (ix86_pass_by_reference): Tidy.
990         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
991         (function_value_32): New, from parts of ix86_function_value
992         and ix86_value_regno.
993         (function_value_64): New, from parts of ix86_function_value
994         and ix86_libcall_value.
995         (ix86_function_value_1): New.
996         (ix86_function_value, ix86_libcall_value): Use it.
997         (return_in_memory_32, return_in_memory_64): Split out ...
998         (ix86_return_in_memory): ... from here.
999         (ix86_struct_value_rtx): Skip for 64-bit.
1000         (ix86_libcall_value, ix86_value_regno): Remove.
1001         (setup_incoming_varargs_64): Split out ...
1002         (ix86_setup_incoming_varargs): ... from here.
1003         (ix86_va_start): Remove TARGET_DEBUG_ARG.
1004         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
1005         * config/i386/i386-protos.h (ix86_function_value): Remove.
1006         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
1007
1008 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1009
1010         PR other/23572
1011         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
1012         infinities not supported, otherwise emit warning if -Woverflow. On
1013         underflow, emit warning if -Woverflow.
1014         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
1015         and 0 otherwise.
1016         * real.h (real_from_string): Update declaration
1017
1018 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
1019             Richard Henderson  <rth@redhat.com>
1020
1021         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
1022         * calls.c (compute_argument_block_size, expand_call,
1023         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
1024         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
1025         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
1026         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
1027         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
1028         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
1029         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
1030         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
1031         Set to 1.
1032
1033 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
1034
1035         * c-incpath.c (add_sysroot_to_chain): New.
1036         (merge_include_chains): Add sysroot argument.  Call
1037         add_sysroot_to_chain if sysrooted.
1038         (register_include_chains): Update call to merge_include_chains.
1039         * doc/cppopts.texi: Document use of '=' in include directory
1040         arguments.
1041
1042 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
1043
1044         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
1045         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
1046         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
1047         insn pattern using X87MODEF12 mode macro.
1048
1049 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
1050
1051         * regmove.c (regmove_optimize): Use reg_mentioned_p
1052         instead of reg_overlap_mentioned_p for DST.
1053
1054 2007-03-21  Mike Stump  <mrs@apple.com>
1055
1056         * c.opt: Fixup for Objective-C/C++.
1057
1058 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
1059
1060         * explow.c (convert_memory_address): Fold memory reference when
1061         POINTERS_EXTEND_UNSIGNED < 0
1062
1063 2007-03-21  Richard Henderson  <rth@redhat.com>
1064
1065         PR target/31245
1066         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
1067         * config/i386/mmintrin.h (__m64): Likewise.
1068         * config/i386/xmmintrin.h (__m128): Likewise.
1069
1070 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
1071
1072         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
1073         (VXWORKS_OS_CPP_BUILTINS): Define.
1074         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
1075         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
1076
1077 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
1078
1079         * rtl.h (constant_pool_reference_p): Delete.
1080         (find_constant_src): Declare.
1081         * rtlanal.c (find_constant_src): New function.
1082         * simplify-rtx.c (constant_pool_reference_p): Delete.
1083         * config/i386/i386.md: Use find_constant_src instead of
1084         constant_pool_reference_p/avoid_constant_pool_reference pairs.
1085
1086 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
1087
1088         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
1089         * c-cppbuiltin.c (c_cpp_builtins): Define them.
1090
1091 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
1092
1093         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
1094         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
1095         (arm_elf_asm_constructor): Use it.
1096         (arm_elf_asm_destructor): New function.
1097
1098 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
1099
1100         * jump.c (mark_jump_label): Treat SEQUENCE specially.
1101
1102 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
1103
1104         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
1105
1106 2007-03-19  Andrew Haley  <aph@redhat.com>
1107
1108         PR tree-optimization/31264
1109         * tree-vrp.c (register_edge_assert_for_1): Don't look though
1110         VIEW_CONVERT_EXPRs.
1111
1112 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
1113
1114         PR rtl-optimization/30907
1115         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
1116         (fwprop_init): Always call loop_optimizer_initialize.
1117         (fwprop_done): Always call loop_optimizer_finalize.
1118         (fwprop): We always have loop info now.
1119         (gate_fwprop_addr): Remove.
1120         (pass_fwprop_addr): Use gate_fwprop as gate.
1121
1122         PR rtl-optimization/30841
1123         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
1124         df_chain_alloc): Call df_reorganize_refs unconditionally.
1125         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
1126         refs_organized to refs_organized_size.
1127         (df_ref_create_structure): Use refs_organized_size instead of
1128         bitmap_size if refs had been organized, and keep refs_organized_size
1129         up-to-date.
1130         * df.h (struct df_ref_info): Change refs_organized to
1131         refs_organized_size.
1132         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
1133         bitmap_size.
1134
1135 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
1136
1137         * except.c (output_function_exception_table): Do not reference the
1138         EH personality routine for functions that do not require an
1139         exception table.
1140
1141 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
1142
1143         PR c/30762
1144         * c-typeck.c (convert_for_assignment): Call comptypes for
1145         RECORD_TYPE or UNION_TYPE.
1146
1147         PR inline-asm/30505
1148         * reload1.c (reload): Do invalid ASM checking after
1149         cleanup_subreg_operands.
1150
1151 2007-03-19  Jeff Law  <law@redhat.com>
1152
1153         * tree-cfg.c (find_taken_edge): Tighten conditions for
1154         optimizing computed gotos.
1155
1156 2007-03-19  Michael Matz  <matz@suse.de>
1157
1158         * builtins.c (expand_builtin_sync_operation,
1159         expand_builtin_compare_and_swap,
1160         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
1161         correctly.
1162
1163         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
1164         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
1165         for operand 3.
1166
1167 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
1168
1169         * doc/tm.texi: Add brackets around the return type of
1170         TARGET_SECONDARY_RELOAD.
1171
1172 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1173         Richard Guenther  <rguenther@suse.de>
1174
1175         PR tree-optimization/31254
1176         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
1177         Use handled_component_p () where appropriate.  Continue
1178         propagating into the rhs if we propagated into an INDIRECT_REF
1179         on the lhs.
1180
1181 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
1182
1183         * config/s390/s390.md (op_type attribute): RRR instruction type added.
1184         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
1185         (xde, xdee): Mode attributes adjusted to support DFP modes.
1186         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
1187         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
1188         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
1189         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
1190         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
1191         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
1192         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
1193         numbers.
1194         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
1195         "movsf"): Insn definitions removed.
1196         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
1197         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
1198         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
1199         definitions added.
1200         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
1201         "reload_in<mode>", "reload_out<mode>"): Expander added.
1202         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
1203         Expander removed.
1204
1205 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
1206
1207         * config/s390/s390.md: Only non-functional changes.  Renamed
1208         FPR mode macro to BFP all over the file.
1209
1210 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
1211
1212         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
1213         (op_type attribute): RRF instruction type added.
1214         (fT0): New mode attribute.
1215         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
1216         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
1217         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
1218         no secondary memory is needed when moving DFmode values between GPRs
1219         and FPRs.
1220
1221 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
1222
1223         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
1224         inverted and documentation adjusted.
1225         ("mhard-dfp", "msoft-dfp"): New options.
1226         * config/s390/s390.c (s390_handle_arch_option): New architecture
1227         switch: z9-ec.
1228         (override_options): Sanity checks for the new options added.
1229         * config.gcc: New architecture switch: z9-ec.
1230         * config/s390/s390.h (processor_flags): PF_DFP added.
1231         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
1232         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
1233         when the bit is NOT set so remove it from the defaults.
1234
1235 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
1236
1237         * genemit.c (main): Print include statement for dfp.h.
1238         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
1239         is not available.
1240
1241 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
1242
1243         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
1244
1245 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
1246
1247         PR target/31022
1248         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
1249         instead of PATTERN.
1250
1251 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1252
1253         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
1254         attr_length_call, output_call, output_indirect_call): Cleanup
1255         formatting of targetm calls.
1256
1257 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
1258
1259         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
1260
1261 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1262
1263         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
1264         reservation, bypass and anti-bypass descriptions for these instructions.
1265         Update move patterns.
1266         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
1267         TYPE_FPSTORE.
1268
1269 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
1270
1271         * tree-vect-transform.c (get_initial_def_for_induction): Replace
1272         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
1273         (get_initial_def_for_reduction): Likewise.
1274
1275 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
1276
1277         Fix PR tree-optimization/29922
1278         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
1279         (get_representative): Removed.
1280         (value_dies_in_block_x): Update for rvuse removal.
1281         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
1282         (compute_antic_aux): Handle when PHI nodes appear in
1283         non-single-successors.
1284         (dump_bitmap_of_names): Removed.
1285         (compute_antic_safe): Renamed and removed rvuse calculation.
1286         Calculate only antic safe.
1287         (insert_into_preds_of_block): Remove assert.
1288         (execute_pre): Update for renamed functions.
1289         (defer_or_phi_translate_block): New function.
1290
1291 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
1292
1293         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
1294         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
1295         typos.
1296         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
1297         Follow spelling conventions.
1298
1299         * tree-data-ref.h: Remove the prototype for analyze_array.
1300
1301 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
1302
1303         PR tree-optimization/31041
1304         * tree-vect-transform.c (get_initial_def_for_induction): Call
1305         force_gimple_operand.
1306
1307 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
1308
1309         * ipa-type-escape.c (look_for_casts) : Revert code to use
1310         handled_component_p due to ada test a-numaux.adb.
1311
1312 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
1313
1314         * final.c (final_scan_insn): Alter the condition of a
1315         conditional trap if we have nonstandard CC.
1316
1317 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
1318
1319         * configure.ac: Remove excess quoting from asm line 0 test.
1320         * configure: Rebuilt.
1321
1322 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1323
1324         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
1325         * c-common.c (convert_and_check): Move warning logic to...
1326         (warnings_for_convert_and_check): ...here. Define.
1327         * c-common.h (warnings_for_convert_and_check): Declare.
1328
1329 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1330
1331         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
1332         (output_call): Likewise.
1333
1334 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
1335
1336         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
1337
1338 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
1339
1340         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
1341
1342 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
1343
1344         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
1345         opteron, athlon-64 and athlon-fx processor_alias_table entries.
1346
1347 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
1348
1349         PR tree-optimization/31183
1350         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
1351         Use double_int instead of unsigned int for representing access_strides.
1352         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
1353
1354 2007-03-16  Richard Guenther  <rguenther@suse.de>
1355
1356         PR tree-optimization/31146
1357         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
1358         to allow recursion of forward_propagate_addr_expr.
1359         (forward_propagate_addr_into_variable_array_index): Likewise.
1360         (forward_propagate_addr_expr): Likewise.
1361         (tree_ssa_forward_propagate_single_use_vars): Likewise.
1362         (forward_propagate_addr_expr_1): Recurse on simple copies
1363         instead of propagating into them.  Do so for useless conversions
1364         as well.
1365         (forward_propagate_addr_expr): Clean up unused statements after
1366         recursion.
1367
1368 2007-03-16  Richard Guenther  <rguenther@suse.de>
1369
1370         * builtins.c (expand_builtin_cexpi): Use the right argument
1371         for the expansion via cexp.
1372
1373 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
1374
1375         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
1376         * configure: Rebuilt.
1377
1378 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
1379
1380         PR debug/29906
1381         * dwarf2out.c (force_type_die): Adjust comment.
1382         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
1383
1384 2007-03-15  DJ Delorie  <dj@redhat.com>
1385
1386         * config/frv/predicates.md (minmax_operator): Don't check operands
1387         here.
1388
1389 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
1390
1391         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
1392         Update constant estimates of number of iterations.
1393         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
1394         argument renamed to "realistic".
1395         (compute_estimated_nb_iterations): Removed.
1396         (record_niter_bound): New function.
1397         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
1398         call record_nonwrapping_iv with upper = false.
1399         (infer_loop_bounds_from_signedness): Pass upper argument to
1400         record_nonwrapping_iv.
1401         (estimate_numbers_of_iterations_loop): Do not call
1402         compute_estimated_nb_iterations.  Record estimate based on profile
1403         information.  Initialize the constant estimates of number of
1404         iterations.
1405         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
1406         estimates.
1407         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
1408         number of iterations is too small.
1409         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
1410         (EST_NOT_AVAILABLE): Removed.
1411         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
1412         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
1413         fields.
1414
1415 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
1416
1417         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
1418         Handle NE_EXPR guards.
1419
1420 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1421
1422         PR c++/24924
1423         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
1424         Set also -pedantic-errors by default for the  preprocessor unless
1425         -fpermissive is given.
1426
1427 2007-03-15  Richard Guenther  <rguenther@suse.de>
1428
1429         PR middle-end/29719
1430         PR middle-end/31161
1431         * builtins.c (expand_builtin_cexpi): As a fallback if we
1432         don't have builtins for sincos or cexp create a function
1433         declaration for cexp and expand to a call to that.
1434         (expand_builtin_int_roundingfn): Always fall
1435         back to floor/ceil and its variants even if they may be
1436         not available.
1437
1438 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
1439
1440         PR middle-end/31159
1441         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
1442         jump tables, move the call to delete_dead_jumptables from here...
1443         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
1444         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
1445         don't allow merging of blocks that try_redirect_by_replacing_jump
1446         also does not handle when not optimizing.
1447
1448 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
1449             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1450
1451         * config/i386/i386.md (x86_sahf_1): Correctly handle
1452         HAVE_AS_IX86_SAHF.
1453
1454 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
1455
1456         PR target/31167
1457         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
1458         x86_64_general_operand as operand[2] predicate.  Remove "iF"
1459         from operand constraints and use "e" constraint instead.
1460         (*subti3_1, *subti3_1 splitter): Ditto.
1461         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
1462         operand[1] predicate.
1463
1464 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
1465
1466         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
1467         arrays, multiply the access strides by the size of the sub-array.
1468         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
1469
1470 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
1471
1472         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
1473         the configured assembler supports the sahf mnemonic.
1474         * configure: Regenerate.
1475         * config.in: Regenerate.
1476
1477         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
1478         emit "sahf" or ".byte\t0x9e" as asm template.
1479
1480 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
1481
1482         PR 31018
1483         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
1484         option to replace hard coded TARGET_xxx in md file.
1485         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
1486         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
1487         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
1488         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
1489         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
1490         (X86_TUNE_NOT_VECTORMODE): Ditto.
1491         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
1492         (TUNE_AVOID_VECTOR_DECODE): Ditto.
1493         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
1494         (TUNE_SLOW_IMUL_IMM8): Ditto.
1495         (TUNE_MOVE_M1_VIA_OR): Ditto.
1496         (TUNE_NOT_UNPAIRABLE): Ditto.
1497         (TUNE_NOT_VECTORMODE): Ditto.
1498
1499         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
1500         options.
1501
1502         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
1503         tuning options instead of hard coded TARGET_xxx.
1504         (fix ssemode peephole2's): Ditto.
1505         (imul peephole2's): Ditto.
1506         (movsi_or): Ditto.
1507         (movdi_or_rex64): Ditto.
1508         (move peephole2): Ditto.
1509         (not peephole2's): Ditto.
1510
1511 2007-03-14  Dirk Mueller  <dmueller@suse.de>
1512
1513         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
1514         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
1515         * c-parser.c (c_parser_if_body): Always add an empty statement in case
1516         of empty body.
1517         * c-parser.c (c_parser_do_statement): Warn about empty body in
1518         do/while statement.
1519         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
1520         * doc/invoke.texi (-Wempty-body): Update documentation.
1521
1522 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1523
1524         PR c/21438
1525         * c-common.h (warn_for_div_by_zero): Declare.
1526         * c-common.c (warn_for_div_by_zero): Define.
1527         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
1528         warning.
1529
1530 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
1531
1532         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
1533         to PREFIX and STANDARD_PREFIX.
1534
1535 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
1536             Phil Edwards  <phil@codesourcery.com>
1537
1538         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
1539         (__gthread_once_t): Remove busy field for RTPs.
1540         (__GTHREAD_ONCE_INIT): Update accordingly.
1541
1542 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
1543
1544         * doc/invoke.texi: Document VxWorks options.
1545
1546 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
1547
1548         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
1549
1550 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
1551
1552         PR tree-optimization/30590
1553         * tree-nrv.c (tree_nrv): Check for the partial update of the
1554         return value.
1555
1556 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
1557
1558         * flags.h (flag_random_seed): Remove declaration, in favor of...
1559         * toplev.h (get_random_seed, set_random_seed): ... these.
1560         * tree.c (get_file_function_name): Use the former.
1561         * opts.c (common_handle_option): Use the latter.
1562         * toplev.c
1563
1564 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
1565
1566         PR middle-end/31127
1567         * cse.c (cse_find_path): Do not bail out if a basic block that
1568         we already visited now becomes part of a path that starts at a
1569         different basic block.  Just disallow this, to make sure we
1570         visit each basic block at most once.
1571
1572 2007-03-13  Jan Hubicka  <jh@suse.cz>
1573
1574         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
1575         when profile esitmate is present, calls with very low frequency are
1576         cold.
1577
1578 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
1579
1580         PR tree-optimization/30730
1581         PR tree-optimization/26900
1582         * tree-ssa-loop-niter.c: Include gmp.h.
1583         (bounds): New type.
1584         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
1585         split_to_var_and_offset, determine_value_range,
1586         bound_difference_of_offsetted_base, refine_bounds_using_guard,
1587         bound_difference, bounds_add, bounds_negate,
1588         number_of_iterations_ne_max, dump_affine_iv): New functions.
1589         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
1590         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
1591         difference of initial and final value of control iv to validate
1592         results.
1593         (number_of_iterations_cond): Add loop parameter.  Determine bounds
1594         on the difference of the extremes of the control iv.  Add dumps.
1595         (expand_simple_operations): Handle phi nodes.
1596         (simplify_using_initial_conditions): Do not record used conditions.
1597         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
1598         Do not set additional_info.
1599         (implies_nonnegative_p, implies_ge_p): Removed.
1600         (derive_constant_upper_bound): Do not use parameter `additional'.
1601         (record_estimate): Parameter `additional' removed.  Parameter
1602         `i_bound' added.  Do not call derive_constant_upper_bound.
1603         (record_nonwrapping_iv): Use derive_constant_upper_bound to
1604         bound the number of iterations estimate.
1605         (estimate_numbers_of_iterations_loop): Pass the estimate from
1606         the number of iterations analysis to record_estimate.
1607         * tree.h (multiple_of_p): Declare.
1608         * tree-scalar-evolution.c (expression_expensive_p): Removed.
1609         (scev_const_prop): Do not check expression_expensive_p.
1610         * fold-const.c (multiple_of_p): Exported.
1611         * double-int.c (double_int_mask): Exported.
1612         * double-int.h (double_int_mask): Declare.
1613         * tree-flow.h (struct tree_niter_desc): Removed additional_info
1614         field.  Added max field.
1615
1616 2007-03-13  David Taylor  <taylor@candd.org>
1617
1618         PR driver/12448:
1619         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
1620         default -MQ.
1621
1622 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1623
1624         PR target/31123
1625         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
1626         two unamed patterns.
1627
1628 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
1629
1630         * config/i386/i386.opt (mcx16, msahf): New options.
1631         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
1632         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
1633
1634         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
1635         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
1636         Output -mcx16 and -msahf options when corresponding bit is set.
1637
1638         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
1639         and -msahf options.
1640
1641 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
1642
1643         * configure.ac: Test for assembler tolerance to # 0 "".
1644         * configure, config.in: Rebuilt.
1645         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
1646
1647 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
1648
1649         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
1650
1651         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
1652         (handle_syscall): Handle direct system calls.
1653         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
1654
1655 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
1656
1657         * doc/invoke.texi: Fix cpp.info cross-reference.
1658         * doc/passes.texi: Fix gcc.info cross-reference.
1659
1660 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
1661
1662         PR tree-optimization/30835
1663         * lambda-code.c (can_convert_to_perfect_nest): Check whether
1664         bb_for_stmt is not NULL before accessing it.
1665
1666 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
1667
1668         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
1669         some multilibs.
1670
1671 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
1672
1673         PR 30635
1674         * doc/install.texi: Document --enable-stage1-languages
1675
1676 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
1677
1678         * tree-pass.h (pass_into_cfg_layout_mode,
1679         pass_outof_cfg_layout_mode): Declare.
1680         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
1681         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
1682         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
1683         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
1684
1685 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
1686
1687         * c-decl.c (warn_variable_length_array): New function.
1688         Refactored from grokdeclarator to handle warn_vla
1689         and handle unnamed array case.
1690         (grokdeclarator): Refactored VLA warning case.
1691         * c.opt (Wvla): New flag.
1692         * doc/invoke.texi (Wvla): New warning.
1693
1694 2007-03-12  Richard Henderson  <rth@redhat.com>
1695
1696         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
1697         (TARGET_SECTION_TYPE_FLAGS): New.
1698
1699 2007-03-12  Richard Henderson  <rth@redhat.com>
1700
1701         * config/darwin.c (machopic_reloc_rw_mask): New.
1702         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
1703         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
1704
1705 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
1706
1707         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
1708         * cppdefault.h (cpp_PREFIX): Document.
1709         (cpp_PREFIX_len): Likewise.
1710         (cpp_EXEC_PREFIX): New variable.
1711         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
1712         * c-incpath.c (add_standard_paths): Correct logic for relocating
1713         paths within prefix.
1714
1715 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
1716
1717         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
1718         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
1719         mode macro.
1720         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
1721         fix_truncdfdi_sse using SSEMODEF mode macro.
1722         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
1723         fix_truncdfsi_sse using SSEMODEF mode macro.
1724         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
1725         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
1726
1727 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
1728
1729         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
1730         elfos.h to tm_file.
1731
1732 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
1733
1734         * tree.h : Add multiple_of_p declaration.
1735         * fold-const.c (multiple_of_p): Make multiple_of_p public.
1736         * ipa-type-escape.c (results_of_malloc): Redundant.
1737         (visited_stmts): New. Visited stmt for walk_use_def_chains.
1738         (cast_type): Extended with new members.
1739         (check_cast): Returns cast_type.
1740         (cast): New structure for data of walk_use_def_chains.
1741         (is_malloc_result, is_cast_from_non_pointer_1,
1742         is_cast_from_non_pointer,
1743         is_array_access_through_pointer_and_index): New functions.
1744         (look_for_casts): Returns cast types.
1745         (check_call): Returns void.
1746         (okay_pointer_operation): Use support of pointer plus index,
1747         pointer plus constant and allow all multiplications.
1748
1749 2007-03-11  Richard Guenther  <rguenther@suse.de>
1750
1751         PR tree-optimization/31115
1752         * tree-vrp.c (extract_range_from_binary_expr): Make sure
1753         the shift count is positive and non-anti-range for RSHIFT_EXPR.
1754         A shift count of zero is not special as with *_DIV_EXPR.
1755         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
1756         direction.
1757
1758 2007-03-11  Ian Lance Taylor  <iant@google.com>
1759
1760         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
1761         the *_DIV_EXPR codes correctly with overflow infinities.
1762
1763 2007-03-11  Ira Rosen  <irar@il.ibm.com>
1764
1765         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
1766         indicate success/failure of the analysis. Add negation to subtrahend
1767         in case of subtraction. Fail if both operands contain constants.
1768         (create_data_ref): Fail if analyze_offset fails.
1769
1770 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
1771
1772         * config/i386/i386.md (frndintxf2): Rename to ...
1773         (rintxf2): ... this. Remove expander having same name.
1774         (rintsf2, rintdf2): Implement using SSEMODEF macro.
1775         (roundsf2, rounddf2): Ditto.
1776         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
1777         (lround<mode>di2, lround<mode>si2): Ditto.
1778
1779 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
1780
1781         * lower-subreg.c: Include except.h.
1782         (decompose_multiword_subregs): Verify that the only control flow
1783         insns we can split are loads to multi-words pseudos.
1784         Handle breaking such blocks after splitting, instead of calling
1785         find_many_sub_basic_blocks.
1786
1787         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
1788         on the new basic block.  Add a lengthy comment explaining why we
1789         thought this was necessary.
1790         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
1791
1792 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
1793
1794         PR c++/30924
1795         * tree.c (walk_type_fields): Recurse into the element type of
1796         ARRAY_TYPEs if there is a pointer set.
1797
1798 2007-03-10  Dirk Mueller  <dmueller@suse.de>
1799
1800         * c-common.c (warn_logical_operator): Fix condition.
1801
1802 2007-03-10  Tobias Schlüter  <tobi@gcc.gnu.org>
1803
1804         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
1805         quotation mark.
1806         * config/darwin.c (machopic_select_section): Remove superfluous
1807         argument in call to categorize_decl_for_section.  Remove unused
1808         variable shlib.
1809
1810 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
1811
1812         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
1813         defined.
1814         * configure: Regenerate.
1815
1816 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
1817
1818         PR target/31101
1819         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
1820         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
1821         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
1822         Add LABEL_NUSES to emitted label.
1823         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
1824         branch probability value to emitted jump insn.
1825         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
1826         Do not check life information and do not re-arrange input operands
1827         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
1828
1829 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
1830
1831         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
1832         the change of decode_asm_operands.
1833
1834 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
1835
1836         * mode-switching.c (create_pre_exit): Skip blockage insn.
1837
1838 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
1839
1840         * tree-pass.h (TODO_update_smt_usage): Remove.
1841         Update all users.
1842         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
1843         argument SOME.
1844         Update all users.
1845
1846 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1847
1848         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
1849         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
1850         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
1851         SOM target.
1852
1853 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
1854
1855         * gcc.c: Document %{, in big comment at top.
1856         (input_suffix_matches): Remove special handling for .s and
1857         .S.
1858         (input_spec_matches): New.
1859         (handle_braces): Handle %{,.
1860         (validate_switches): ',' indicates a value which is not a switch.
1861         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
1862         to detect assembler input.
1863         * config/i386/sol2.h (CPP_SPEC): Likewise.
1864         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
1865         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
1866         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
1867         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
1868         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
1869         -m64 causes deployment target to default to 10.5.
1870         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
1871
1872 2007-03-09  Richard Henderson  <rth@redhat.com>
1873
1874         PR target/26090
1875         * target.h (targetm.asm.out.reloc_rw_mask): New.
1876         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
1877         (TARGET_ASM_OUT): Use it.
1878         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
1879         * varasm.c (categorize_decl_for_section): Remove shlib argument;
1880         use the new reloc_rw_mask target hook instead.
1881         (default_section_type_flags_1): Merge into...
1882         (default_section_type_flags): ... here.
1883         (decl_readonly_section_1): Merge into...
1884         (decl_readonly_section): ... here.
1885         (default_elf_select_section_1): Merge into...
1886         (default_elf_select_section): ... here.
1887         (default_unique_section_1): Merge into...
1888         (default_unique_section): ... here.
1889         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
1890         (default_select_rtx_section): Use it.
1891         (default_elf_select_rtx_section): Likewise.
1892         * output.h: Update to match.
1893         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
1894         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
1895         (TARGET_ASM_RELOC_RW_MASK): New.
1896         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
1897         to categorize_decl_for_section.
1898         (x86_64_elf_unique_section): Likewise.
1899         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
1900         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
1901         (TARGET_ASM_RELOC_RW_MASK): New.
1902         * config/ia64/ia64.c (ia64_rwreloc_select_section,
1903         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
1904         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
1905         (TARGET_RWRELOC): Remove.
1906         (ia64_section_type_flags): Adjust call to default_section_type_flags.
1907         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
1908         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
1909         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
1910         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
1911         (rs6000_xcoff_select_section): Use decl_readonly_section.
1912         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
1913         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
1914         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
1915         (TARGET_SECTION_TYPE_FLAGS): Remove.
1916         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
1917
1918 2007-03-09  Roger Sayle  <roger@eyesopen.com>
1919
1920         * fold-const.c (fold_comparison): Remove compile-time evaluation of
1921         complex constant equality/inequality comparisons for here.
1922         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
1923         known at compile-time or can be simplified to a scalar comparison.
1924         (fold_relational_const): Move compile-time evaluation of complex
1925         constant equality/inequality comparisons to here.
1926
1927 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
1928
1929         PR rtl-optimization/30643
1930         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
1931         dest_addr_elt.
1932         (fold_rtx): Recurse, like before 2006-11-03.
1933
1934 2007-03-09  DJ Delorie  <dj@redhat.com>
1935
1936         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
1937         m32c-pragma.o.
1938
1939 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
1940
1941         PR tree-optimization/30375
1942         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
1943         LHS of statements is not the same.
1944         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
1945
1946 2007-03-09  Chao-ying Fu  <fu@mips.com>
1947
1948         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
1949         REV 2.
1950         * doc/invoke.texi (-mdspr2): Document new option.
1951         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
1952         New unspec for DSP REV 2.
1953         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
1954         these instructions are extended in DSP REV 2.
1955         (mips-dspr2.md): Include.
1956         * config/mips/mips.opt (mdspr2): New option.
1957         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
1958         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
1959         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
1960         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
1961         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
1962         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
1963         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
1964         and 2 builtins.
1965         (bdesc_map): Add one field of unsupported_target_flags.
1966         (bdesc_arrays):  Update entries to have extra fields.  Add
1967         dsp_32only_bdesc.
1968         (mips_init_builtins): Initialize new function types.
1969         Check unsupported_target_fileds to filter out builtins.
1970         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
1971         TARGET_DSPR2.
1972         (ASM_SPEC): Pass mdspr2 to the assembler.
1973         * config/mips/mips-dspr2.md: New file.
1974
1975 2007-03-09  Sa Liu  <saliu@de.ibm.com>
1976
1977         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
1978
1979 2007-03-09  Ian Lance Taylor  <iant@google.com>
1980
1981         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
1982         argument) like -Wstrict-overflow=2.
1983         * doc/invoke.texi (Warning Options): Update documentation.
1984
1985 2007-03-09  Dirk Mueller  <dmueller@suse.de>
1986
1987         PR c++/17946
1988         * doc/invoke.texi (-Wlogical-op): Document.
1989         * common.opt (-Wlogical-op): New.
1990         * c-common.h (warn_logical_operator): Declare.
1991         * c-common.c (warn_logical_operator): Define.
1992         * c-typeck.c (parser_build_binary_op): Call
1993         warn_logical_operator.
1994
1995 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
1996
1997         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
1998         * final.c (final_scan_insn): Test for non-"" file name.
1999
2000 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
2001
2002         * doc/loop.texi: Document the Omega linear constraints solver.
2003         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
2004         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
2005         omega-hash-table-size, omega-max-keys, and
2006         omega-eliminate-redundant-constraints.
2007         * tree-pass.h (pass_check_data_deps): Declared.
2008         * omega.c: New.
2009         * omega.h: New.
2010         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
2011         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
2012         pass_check_data_deps): New.
2013         * tree-data-ref.c (init_data_ref): Remove declaration.
2014         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
2015         (analyze_array): Renamed init_array_ref, move up initializations.
2016         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
2017         Removed arguments that are set to NULL.
2018         (analyze_indirect_ref): Correct indentation, correct call to
2019         init_pointer_ref.
2020         (object_analysis): Call init_array_ref instead of analyze_array.
2021         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
2022         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
2023         of DR_ACCESS_FNS_ADDR.
2024         (init_omega_eq_with_af, omega_extract_distance_vectors,
2025         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
2026         ddr_consistent_p): New.
2027         (compute_affine_dependence): Check consistency of ddrs when
2028         flag_check_data_deps is passed.
2029         (analyze_all_data_dependences): Uncomment.
2030         (tree_check_data_deps): New.
2031         * tree-data-ref.h: Include omega.h.
2032         (DR_ACCESS_FNS_ADDR): Removed.
2033         (data_dependence_relation): Add inner_loop.
2034         (DDR_INNER_LOOP): New.
2035         * common.opt (fcheck-data-deps): New.
2036         * tree-flow.h (tree_check_data_deps): Declare.
2037         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
2038         (OBJS-common): Depend on omega.o.
2039         (omega.o): Define.
2040         * passes.c (pass_check_data_deps): Scheduled.
2041         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
2042         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
2043         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
2044         PARAM_VECT_MAX_VERSION_CHECKS,
2045         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
2046
2047 2007-03-09  Richard Guenther  <rguenther@suse.de>
2048
2049         PR tree-optimization/30904
2050         PR middle-end/31058
2051         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
2052         the same way as *_DIV_EXPR.
2053
2054 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
2055
2056         * recog.c (decode_asm_operands): No mixed declarations and code.
2057
2058 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
2059
2060         * rtl.def (ASM_INPUT): Add location.
2061         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
2062         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
2063         (decode_asm_operands): Add loc operand.
2064         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
2065         * stmt.c (expand_asm): Rename to...
2066         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
2067         gen_rtx_ASM_INPUT_loc.
2068         (expand_asm_expr): Adjust.
2069         * recog.c (decode_asm_operands): Add loc operand.
2070         (check_asm_operands, extract_insn): Adjust.
2071         * reload1.c (maybe_fix_stack_asms): Likewise.
2072         * final.c (asm_insn_count): Likewise.
2073         (final_scan_insn): Output # line before and after asm.
2074
2075 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
2076
2077         * tree-ssa-structalias.c (variable_info): Remove
2078         finished_solution.
2079         (new_var_info): Ditto.
2080         (shared_bitmap_info_t): New structure.
2081         (shared_bitmap_table): New variable.
2082         (shared_bitmap_hash): New function.
2083         (shared_bitmap_eq): Ditto
2084         (shared_bitmap_lookup): Ditto.
2085         (shared_bitmap_add): Ditto.
2086         (merge_smts_into): Change to take bitmap directly.
2087         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
2088         (init_alias_vars): Init shared bitmap hashtable.
2089         (delete_points_to_sets): Delete shared bitmap hashtable.
2090         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
2091         is_aliased removal as a change that was still necessary was
2092         deleted.
2093
2094 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
2095
2096         * config/i386/i386.h (override_options): Conditionally disable
2097         x86_sahf for 64bit targets only.
2098
2099 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2100
2101         PR C/31072
2102         * c-decl.c (merge_decls): Don't call make_var_volatile.
2103         * varasm.c (make_var_volatile): Remove.
2104         * output.h (make_var_volatile): Remove.
2105
2106 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
2107
2108         PR tree-optimization/31085
2109         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
2110
2111 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2112
2113         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
2114         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
2115         ATTR_CONST_NOTHROW_LIST.
2116
2117         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
2118         FIX_TRUNC_EXPR.
2119
2120 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
2121
2122         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
2123
2124 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
2125
2126         PR 31013
2127         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
2128         is declared.
2129         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
2130         passed, use shared libgcc.
2131
2132 2007-03-08  Roger Sayle  <roger@eyesopen.com>
2133
2134         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
2135         instead of calling build2 with a GIMPLE_MODIFY_STMT.
2136         (honor_protect_cleanup_actions, lower_try_finally_switch):
2137         Likewise.
2138         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
2139         ifc_temp_var): Likewise.
2140         * tree-inline.c (setup_one_parameter): Likewise.
2141         * tree-mudflap.c (mf_decl_cache_locals,
2142         mf_build_check_statement_for): Likewise.
2143         * tree-nested.c (init_tmp_var, save_tmp_var,
2144         finalize_nesting_tree_1): Likewise.
2145         * tree-outof-ssa.c (insert_copy_on_edge,
2146         insert_backedge_copies): Likewise.
2147         * tree-profile.c (tree_gen_edge_profiler,
2148         tree_gen_ic_profiler): Likewise.
2149         * tree-scalar-evolution.c (scev_const_prop): Likewise.
2150         * tree-sra.c (sra_build_assignment): Likewise.
2151         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
2152         * tree-ssa-math-opts.c (insert_reciprocals,
2153         execute_cse_sincos_1): Likewise.
2154         * tree-tailcall.c (adjust_accumulator_values,
2155         adjust_return_value): Likewise.
2156         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
2157         * tree-vect-transform.c (vect_create_data_ref_ptr,
2158         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
2159         vect_create_epilog_for_reduction, vectorizable_reduction,
2160         vectorizable_call, vectorizable_conversion,
2161         vectorizable_assignment, vectorizable_operation,
2162         vectorizable_type_demotion, vect_gen_widened_results_half,
2163         vect_permute_store_chain, vectorizable_store,
2164         vect_setup_realignment, vect_permute_load_chain,
2165         vectorizable_load, vectorizable_condition,
2166         vect_create_cond_for_align_checks): Likewise.
2167         * tree-vrp.c (build_assert_expr_for): Likewise.
2168
2169 2007-03-08  Ian Lance Taylor  <iant@google.com>
2170
2171         * tree-vrp.c: Include "intl.h".
2172         (usable_range_p): New static function.
2173         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
2174         overflowed values, juts set *strict_overflow_p.
2175         (compare_values): Only return -2 if one of the operands is not a
2176         constant.
2177         (compare_ranges): Call usable_range_p.
2178         (compare_range_with_value): Likewise.
2179         (vrp_evaluate_conditional_warnv): Rename from
2180         vrp_evaluate_conditional.  Make static.  Change all callers.
2181         (vrp_evaluate_conditional): New function.
2182         (simplify_div_or_mod_using_ranges): Issue warning about reliance
2183         on signed overflow.
2184         (simplify_abs_using_ranges): Likewise.
2185         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
2186         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
2187         within_stmt parameter.
2188         * tree-ssa-propagate.c (fold_predicate_in): Update call to
2189         vrp_evaluate_conditional.
2190         * tree-ssa-threadedge.c
2191         (record_temporary_equivalences_from_stmts_at_dest): Change
2192         simplify parameter to take a second tree parameter.
2193         (simplify_control_stmt_condition): Likewise.
2194         (thread_across_edge): Likewise.
2195         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
2196         (thread_across_edge): Likewise.
2197         * gcc/Makefile.in (tree-vrp.o): Depend upon intl.h.
2198
2199 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
2200
2201         * config/i386/i386.h (TARGET_SAHF): New define.
2202         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
2203         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
2204         (x86_sahf): New global variable.
2205         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
2206         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
2207         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
2208         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
2209         for 64-bit.
2210         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
2211         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
2212         when expanding fcomi/sahf based tests.
2213         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
2214         expanding sahf based alternative. Emit sahf based sequence when
2215         optimizing for code size.
2216         * config/i386/i386.md (x86_sahf_1): Do not disable for
2217         TARGET_64BIT, enable for TARGET_SAHF.
2218
2219 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
2220
2221         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
2222         spurious whitespace from error message.
2223
2224 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
2225
2226         PR c++/30852
2227         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
2228
2229 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
2230
2231         * c-decl.c (grokdeclarator): Disable warnings for anonymous
2232         bitfields.
2233         * tree-sra.c (instantiate_element): Propagate disabled warnings
2234         from the element itself to the created variable.
2235
2236 2007-03-07  Richard Henderson  <rth@redhat.com>
2237
2238         PR target/30848
2239         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
2240         silently fix up the stack in the case of a missing register.
2241
2242 2007-03-07  Paul Brook  <paul@codesourcery.com>
2243
2244         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
2245
2246 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
2247
2248         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
2249         New.
2250         (phase1_vrs): Use them.
2251         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
2252         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
2253         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
2254         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
2255         __gnu_Unwind_Restore_WMMXC if required.
2256         (_Unwind_VRS_Pop): Implement iWMMXt support.
2257         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
2258         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
2259         gnu_Unwind_Save_WMMXC): Define.
2260
2261 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
2262
2263         * config/vxworks.h (vxworks_override_options): Declare.
2264         (VXWORKS_OVERRIDE_OPTIONS): Use it.
2265         * config/vxworks.c: Include target.h and toplev.h.
2266         (vxworks_override_options): New function.
2267         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
2268
2269 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
2270
2271         * config/s390/s390.c (override_options): Don't emit an error when
2272         -mstack-size is used without providing -mstack-guard.
2273         (s390_emit_prologue): Choose stack_guard value automatically if not
2274         provided via command line.
2275         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
2276
2277 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
2278
2279         * config/i386/i386.c (output_set_got): Add a GOT initialization
2280         sequence for VxWorks PIC.
2281         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
2282         around labels as well as symbols.  Use gotoff_operand instead
2283         of local_symbolic_operand.
2284         (legitimize_pic_address): Use gotoff_operand instead of
2285         local_symbolic_operand.  Use @GOT accesses for labels as
2286         well as symbols.
2287         (ix86_output_addr_diff_elt): Use PC-relative rather than
2288         GP-relative offsets for VxWorks PIC.
2289         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
2290         no_new_pseudos.  Check whether the returned register is op0.
2291         * config/i386/i386.md (tablejump): Use PC-relative rather than
2292         GP-relative offsets for VxWorks PIC.
2293         * config/i386/predicates.md (gotoff_operand): New predicate.
2294
2295 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2296
2297         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
2298         before defining.
2299         * config/vxworks-dummy.h: New file.
2300         * config/i386/i386.h: Include it.
2301
2302 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
2303
2304         * dwarf2out.c (is_inlined_entry_point): New
2305         (add_high_low_attributes): Emit DW_AT_entry_pc along with
2306         DW_AT_ranges if the first subblock is the entry point.
2307
2308 2007-03-06  David Daney  <ddaney@avtrex.com>
2309
2310         * doc/install.texi (mips-*-*): Change recommended binutils
2311         version.
2312
2313 2007-03-06  Anatoly Sokolov <aesok@post.ru>
2314
2315         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
2316         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
2317         devices.
2318         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
2319         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
2320
2321 2007-03-06  Jan Hubicka  <jh@suse.cz>
2322
2323         * errors.h (warning, error, fatal, internal_error): Mark as cold.
2324         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
2325         are hot.
2326         (probably_cold_bb_p): Cold functions are cold.
2327         (probably_never_executed_bb_p): Cold functions are cold.
2328         (tree_bb_level_predictions): Predict calls to cold functions as not
2329         taken.
2330         (compute_function_frequency): Check hot/cold attributes.
2331         * function.h (function_frequency): Update comments.
2332         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
2333         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
2334         (c_common_att): Add cold and hot.
2335
2336         * doc/extend.texi (hot,cold attributes): Document.
2337
2338 2007-03-06  Andrew Haley  <aph@redhat.com>
2339
2340         * function.c (expand_function_end): Move blockage to just after we
2341         emit the label for the naked return from the function.
2342
2343 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2344
2345         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
2346         before redefining.
2347
2348 2007-03-06  Jan Hubicka  <jh@suse.cz>
2349
2350         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
2351         loaded for constant large models.  Non-large 64bit PIC can do.
2352         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
2353         * cmodel.h: Add LARGE PIC.
2354         * i386.md (UNSPEC_PLTOFF): New.
2355         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
2356         needed.
2357         (*call_1_rex64): Disable for large models.
2358         (*call_1_rex64_large): New.
2359         (*call_value_1_rex64): Disable for large models.
2360         (*call_value_1_rex64_large): New.
2361         (set_rip_rex4): New.
2362         (set_got_offset_rex64): New.
2363         * predicates.md (constant_call_address_operand): For large model
2364         constant calls are not possible.
2365         * i386-protos.h (construct_plt_address): Declare.
2366         * i386.c (override_options): Accept large models.
2367         (ix86_expand_prologue): Expand large PIC GOT pointer load.
2368         (legitimate_constant_p): Add new UNSPECs.
2369         (legitimate_pic_operand_p): Likewise.
2370         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
2371         (legitimize_pic_address): Do easy RIP relative way for TLS only for
2372         non-large model.
2373         (output_pic_addr_const): Add PLTOFF.
2374         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
2375         (ix86_expand_move): Legitimize pic address when in PIC mode.
2376         (construct_plt_address): New function.
2377         (ix86_expand_call): Offload the address to register and use GOT pointer
2378         for large model.
2379         * invoke.texi (mcmodel=large): Update documentation.
2380
2381 2007-03-06  Richard Henderson  <rth@redhat.com>
2382
2383         * config/i386/i386.c (x86_use_leave, x86_push_memory,
2384         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
2385         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
2386         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
2387         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
2388         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
2389         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
2390         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
2391         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
2392         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
2393         x86_partial_reg_dependency, x86_memory_mismatch_stall,
2394         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
2395         x86_sse_partial_reg_dependency, x86_sse_split_regs,
2396         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
2397         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
2398         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
2399         x86_schedule, x86_use_bt, x86_pad_returns,
2400         x86_use_xchgb): Merge into ...
2401         (ix86_tune_features): ... here.  New array.
2402         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
2403         x86_bswap): Merge into ...
2404         (ix86_arch_features): ... here.  New array.
2405         (x86_3dnow_a): Remove.
2406         (x86_accumulate_outgoing_args): Make static.
2407         (x86_arch_always_fancy_math_387): Make static.
2408         (ix86_tune_mask, ix86_arch_mask): Move ...
2409         (override_options): ... to local variables here.  Apply the
2410         appropriate mask to each element of ix86_arch_features and
2411         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
2412         as were done in the old macros.
2413         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
2414         * config/i386/i386.h (x86_use_leave, x86_push_memory,
2415         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
2416         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
2417         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
2418         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
2419         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
2420         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
2421         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
2422         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
2423         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
2424         x86_partial_reg_dependency, x86_memory_mismatch_stall,
2425         x86_accumulate_outgoing_args, x86_prologue_using_move,
2426         x86_epilogue_using_move, x86_decompose_lea,
2427         x86_arch_always_fancy_math_387, x86_shift1,
2428         x86_sse_partial_reg_dependency, x86_sse_split_regs,
2429         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
2430         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
2431         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
2432         x86_use_incdec, x86_pad_returns, x86_bswap,
2433         x86_partial_flag_reg_stall): Remove.
2434         (enum ix86_tune_indices): New.
2435         (ix86_tune_features): New.
2436         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
2437         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
2438         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
2439         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
2440         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
2441         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
2442         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
2443         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
2444         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
2445         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
2446         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
2447         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
2448         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
2449         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
2450         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
2451         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
2452         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
2453         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
2454         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
2455         TARGET_EXT_80387_CONSTANTS): Use it.
2456         (enum ix86_arch_indices): New.
2457         (ix86_arch_features): New.
2458         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
2459         TARGET_BSWAP): Use it.
2460         (ix86_tune_mask, ix86_arch_mask): Remove.
2461
2462 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
2463
2464         PR bootstrap/31020
2465         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
2466         Define using $${sysroot_headers_suffix}.
2467         * configure: Regenerate.
2468         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
2469         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
2470         defined.
2471         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
2472         * gcc.c (print_sysroot_headers_suffix): New.
2473         (option_map): Include --print-sysroot-headers-suffix.
2474         (display_help): Mention -print-sysroot-headers-suffix.
2475         (process_command): Handle -print-sysroot-headers-suffix.
2476         (do_spec_1): Append multilib directory to include-fixed path if
2477         sysroot suffixes in use.
2478         (main): Handle -print-sysroot-headers-suffix.
2479         * Makefile.in (start.encap): Don't depend on xlimits.h
2480         (xlimits.h): Remove.
2481         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
2482         limits.h for each multilib in fixinc_list.
2483         (fixinc_list, s-fixinc_list): New.
2484         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
2485         generate them for each multilib in fixinc_list.
2486         (stmp-fixproto): Use include-fixed.  Run fixproto for each
2487         multilib in fixinc_list.
2488         (mostlyclean): Don't remove xlimits.h.
2489         (clean): Remove include-fixed.
2490         (real-install-headers-tar, real-install-headers-cpio,
2491         real-install-headers-cp): Don't copy include, only include-fixed.
2492         (install-mkheaders): Depend on fixinc_list.  Don't depend on
2493         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
2494         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
2495         SYSTEM_HEADER_DIR setting in mkheaders.conf.
2496
2497 2007-03-06  Jan Hubicka  <jh@suse.cz>
2498
2499         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
2500         NANs easilly.
2501
2502 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2503
2504         * configure.ac: Allow tm_file to contain build-directory files.
2505         * configure: Regenerate.
2506         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
2507         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
2508         * config/m68k/print-sysroot-suffix.sh: New file.
2509
2510 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2511
2512         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
2513         of pic_offset_table_rtx if reload_completed.
2514         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
2515         PIC_OFFSET_TABLE_REGNUM.
2516         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
2517         return true.
2518         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
2519         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
2520
2521 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2522
2523         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
2524         functions that call eh_return.
2525
2526 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2527
2528         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
2529         functions that need a constant pool.
2530
2531 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2532
2533         PR target/28181
2534         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
2535         (m68k_preferred_reload_class): Likewise.
2536         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
2537         (SECONDARY_RELOAD_CLASS): Define.
2538         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
2539         (LIMIT_RELOAD_CLASS): Delete.
2540         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
2541         registers from storing bytes.
2542         (m68k_secondary_reload_class): New function.
2543         (m68k_preferred_reload_class): Likewise.
2544
2545 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2546
2547         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
2548         leaf functions.
2549         (m68k_expand_prologue): Likewise.
2550
2551 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2552
2553         * config/m68k/m68k-protos.h (output_sibcall): Declare.
2554         (mips_expand_epilogue): Add a bool parameter.
2555         (m68k_legitimize_sibcall_address): Declare.
2556         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
2557         (m68k_expand_epilogue): Add a parameter to select between sibling
2558         and normal epilogues.  Only generate a return for the latter.
2559         (m68k_ok_for_sibcall_p): New function.
2560         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
2561         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
2562         (sibcall_value, *sibcall_value): Likewise.
2563         (*call, *call_value): Require !SIBLING_CALL_P.
2564         (epilogue): Update call to m68k_expand_epilogue.
2565         (sibcall_epilogue): New pattern.
2566         * config/m68k/predicates.md (const_call_operand): Say that this
2567         predicate applies to sibling calls too.
2568         (sibcall_operand): New predicate.
2569
2570 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2571
2572         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
2573         alternatives as movsi_cf.
2574         (movsf_cf_hard): Add commentary.
2575
2576 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
2577             Richard Sandiford  <richard@codesourcery.com>
2578
2579         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
2580         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
2581         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
2582         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
2583         as being live on exit from an interrupt function.
2584         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
2585         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
2586         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
2587         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
2588         (m68k_interrupt_function_p): Globalize.
2589         (m68k_compute_frame_layout): Remove reverse mask code.
2590         (m68k_emit_movem, m68k_set_frame_related): New functions.
2591         (m68k_output_function_prologue): Delete in favor of...
2592         (m68k_expand_prologue): ...this new function.
2593         (m68k_output_function_epilogue): Delete in favor of...
2594         (m68k_expand_epilogue): ...this new function.
2595         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
2596         functions.
2597         (print_operand): Handle %?.
2598         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
2599         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
2600         (prologue, epilogue): New patterns.
2601         (return): Turn into a define_expand.
2602         (*return): New pattern, derived from old "return" pattern.  Use rte
2603         rather than rts for interrupt functions.  Only use rtd if the pop
2604         count is nonzero.
2605         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
2606         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
2607         (link, *link, unlink, *unlink, load_got): Likewise.
2608
2609 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2610
2611         PR target/23482
2612         PR target/17114
2613         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
2614         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
2615         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
2616         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
2617         and m68k_matches_u_p.
2618         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
2619         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
2620         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
2621         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
2622         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
2623         (REG_STRICT_P): New macro.
2624         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
2625         PCREL_GENERAL_OPERAND_OK.
2626         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
2627         m68k_legitimate_base_reg_p.
2628         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
2629         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
2630         (PIC_CASE_VECTOR_ADDRESS): Update comment.
2631         * config/m68k/m68k.c (m68k_address): New structure.
2632         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
2633         (m68k_decompose_index, m68k_legitimate_constant_address_p)
2634         (m68k_jump_table_ref_p, m68k_decompose_address)
2635         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
2636         (m68k_matches_u_p): New functions.
2637         (print_operand_address): Rewrite to use m68k_decompose_index.
2638
2639 2007-03-05  David Taylor  <dtaylor@emc.com>
2640
2641         * gcc.c: Correct copyright date in --version output.
2642
2643 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2644
2645         * pa.md: In unamed move patterns, disparge copies between general
2646         and floating point registers using '?' modifier.  Don't include 'f'
2647         constraint for register preferences in DImode, SImode, HImode and
2648         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
2649         Remove constraints for copies between general and floating registers
2650         in soft-float DFmode pattern.
2651         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
2652         floating register.
2653         (movsf): Likewise.
2654
2655 2007-03-05  Mike Stump  <mrs@apple.com>
2656
2657         * c-common.c (targetcm): Add.
2658         * c-opts.c (c_common_handle_option): Handle language specific
2659         target options.
2660         * opts.c (handle_option): Verify language for target options, if
2661         any are given.
2662         * opth-gen.awk: Add CL_LANG_ALL.
2663         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
2664         (TARGETCM_INITIALIZER): Add.
2665         * target.h (struct gcc_targetcm): Add.
2666         (targetcm): Add.
2667         * targhooks.c (default_handle_c_option): Add.
2668         * targhooks.h (default_handle_c_option): Add.
2669         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
2670
2671         * config/darwin.opt (iframework): Add.
2672         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
2673         * config/darwin-c.c (handle_c_option): Add.
2674         (TARGET_HANDLE_C_OPTION): Add.
2675         (targetcm): Add.
2676         * doc/invoke.texi (Darwin Options): Add -iframework.
2677
2678 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2679
2680         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
2681         conversion.
2682
2683 2007-03-05  Ian Lance Taylor  <iant@google.com>
2684
2685         * c.opt (fgnu89-inline): New option.
2686         * c-opts.c (c_common_post_options): Set default value for
2687         flag_gnu89_inline.
2688         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
2689         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
2690         inline functions.
2691         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
2692         (grokdeclarator, start_function): Likewise.
2693         * c-cppbuiltin.c (c_cpp_builtins): Define either
2694         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
2695         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
2696         (C Dialect Options): Document -fgnu89-inline.
2697         * doc/extend.texi (Function Attributes): Explain what the
2698         gnu_inline attribute does.
2699         * doc/cpp.texi (Common Predefined Macros): Document
2700         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
2701
2702 2007-03-05  Ian Lance Taylor  <iant@google.com>
2703
2704         PR tree-optimization/31034
2705         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
2706         half-range if the other side is an overflow infinity.
2707
2708 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
2709
2710         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
2711         (bfin*-linux-uclibc*): New configuration.
2712         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
2713         defining.
2714         * config/bfin/linux.h: New file.
2715         * config/bfin/libgcc-bfin.ver: New file.
2716         * config/bfin/t-bfin-uclinux: New file.
2717         * config/bfin/t-bfin-linux: New file.
2718         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
2719         (TARGET_OS_CPP_BUILTINS): New macro.
2720
2721 2007-03-05  Richard Guenther  <rguenther@suse.de>
2722
2723         * fold-const.c (fold_binary): Remove duplicate folding
2724         of comparison of non-null ADDR_EXPR against null.
2725
2726 2007-03-05  Richard Guenther  <rguenther@suse.de>
2727             Dorit Nuzman  <dorit@il.ibm.com>
2728
2729         PR tree-optimization/26420
2730         * tree-vectorizer.c (vectorize_loops): Bail out early if there
2731         are no loops in the function.  Only print the number of
2732         vectorized loops if it is greater than zero or we are supposed
2733         to print information about unvectorized loops.
2734
2735 2007-03-05  Revital Eres  <eres@il.ibm.com>
2736
2737         * gcc.dg/var-expand1.c: New test.
2738         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
2739         when an accumulator is expanded.
2740
2741 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2742
2743         PR other/30465
2744         * c-common.c (convert_and_check): Don't give warnings for
2745         conversion if 'expr' already overflowed.
2746
2747 2007-03-04  Roger Sayle  <roger@eyesopen.com>
2748
2749         PR middle-end/30744
2750         * fold-const.c (fold_comparison): Enforce type consistency when
2751         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
2752
2753 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
2754
2755         * tree-ssa-address.c (create_mem_ref): Do not put an expression
2756         containing a cast to the base of TARGET_MEM_REF.
2757
2758 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
2759
2760         * tree.c (tree_contains_struct_check_failed): Remove spurious
2761         whitespace from error message.
2762
2763 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
2764
2765         PR target/30406
2766         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
2767         instead of precision.
2768
2769 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
2770             Nathan Sidwell  <nathan@codesourcery.com>
2771
2772         * emit-rtl.c (find_auto_inc): New.
2773         (try_split): recreate REG_INC notes,
2774         Use regular for loops rather than whiles.
2775
2776 2007-03-03  Andreas Schwab  <schwab@suse.de>
2777
2778         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
2779         * configure: Regenerate.
2780
2781 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2782
2783         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
2784         flag_rounding_math, not flag_unsafe_math_optimizations.
2785
2786         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
2787         fold_build2.
2788         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
2789         alpha_fold_vector_minmax): Likewise.
2790         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
2791         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
2792
2793 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
2794
2795         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
2796         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
2797         if the lhs has side-effects.
2798         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
2799
2800 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
2801
2802         * config/i386/i386.h (TUNEMASK): Remove define.
2803         (ARCHMASK): Remove define.
2804         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
2805          Use ix86_arch_mask variable instead of ARCHMASK.
2806         * config/i386/i386.c (override_options): Ditto.
2807         (standard_80387_constant_p): Ditto.
2808
2809 2007-03-02  Ian Lance Taylor  <iant@google.com>
2810
2811         Used signed infinities in VRP.
2812         * tree-vrp.c (uses_overflow_infinity): New static function.
2813         (supports_overflow_infinity): New static function.
2814         (make_overflow_infinity): New static function.
2815         (negative_overflow_infinity): New static function.
2816         (positive_overflow_infinity): New static function.
2817         (is_negative_overflow_infinity): New static function.
2818         (is_positive_overflow_infinity): New static function.
2819         (is_overflow_infinity): New static function.
2820         (overflow_infinity_range_p): New static function.
2821         (compare_values_warnv): New function split out of compare_values.
2822         (compare_value): Call it.
2823         (set_value_range_to_nonnegative): Add overflow_infinity
2824         parameter.  Change caller.
2825         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
2826         Change callers.
2827         (vrp_expr_computes_nonzero): Likewise.
2828         (compare_ranges, compare_range_with_value): Likewise.
2829         (compare_name_with_value, compare_names): Likewise.
2830         (vrp_evaluate_conditional): Likewise.
2831         (set_value_range): Handle infinity
2832         (vrp_operand_equal_p, operand_less_p): Likewise.
2833         (extract_range_from_assert): Likewise.
2834         (vrp_int_const_binop): Likewise.
2835         (extract_range_from_binary_expr): Likewise.
2836         (extract_range_from_unary_expr): Likewise.
2837         (extract_range_from_comparison): Likewise.
2838         (extract_range_from_expr): Likewise.
2839         (dump_value_range): Likewise.
2840         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
2841         (test_for_singularity): Likewise.
2842         (vrp_int_const_binop): Remove inline qualifier.
2843         (adjust_range_with_scev): Add comment.
2844         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
2845
2846 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
2847
2848         * tree-ssa-structalias.c (could_have_pointers): Tidy.
2849         (get_constraint_for): Likewise.
2850         (do_structure_copy): Likewise.
2851         (find_func_aliases): Fix references to MODIFY_EXPR.
2852         (intra_create_variable_infos): Tidy.
2853         * tree-ssa-operands.c (add_virtual_operand): Add argument
2854         IS_CALL_SITE.
2855         When adding members of alias sets, if IS_CALL_SITE is true and
2856         the symbol is not call-clobbered, skip it.
2857         Adjust all callers.
2858
2859 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
2860
2861         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
2862         entry by means of emit_insn_at_entry.
2863
2864 2007-03-02  Richard Henderson  <rth@redhat.com>
2865
2866         * expr.h (promoted_input_arg): Remove decl.
2867         * function.c (promoted_input_arg): Merge into ...
2868         * combine.c (setup_incoming_promotions): ... only caller.
2869         Rearrange to avoid double loop.
2870
2871 2007-03-02  Ben Elliston  <bje@au.ibm.com>
2872             Peter Bergner  <bergner@vnet.ibm.com>
2873             Janis Johnson  <janis187@us.ibm.com>
2874
2875         * config/rs6000/dfp.md: New file.
2876         * config/rs6000/rs6000.md: Include dfp.md.
2877         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
2878         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
2879         and TDmode decimal float modes in FP registers.
2880         (num_insns_constant): Likewise.
2881         (rs6000_legitimate_offset_address_p): Likewise.
2882         (rs6000_legitimize_address): Likewise.
2883         (rs6000_legitimize_reload_address): Likewise.
2884         (rs6000_legitimate_address): Likewise.
2885         (rs6000_emit_move): Likewise.
2886         (function_arg_boundary): Likewise.
2887         (function_arg_advance): Likewise.
2888         (rs6000_darwin64_record_arg_recurse): Likewise.
2889         (function_arg): Likewise.
2890         (rs6000_gimplify_va_arg): Likewise.
2891         (rs6000_split_multireg_move): Likewise.
2892         (rs6000_output_function_epilogue): Likewise.
2893         (rs6000_output_function_epilogue): Likewise.
2894         (rs6000_register_move_cost): Likewise.
2895         (rs6000_function_value): Likewise.
2896         (rs6000_libcall_value): Likewise.
2897
2898 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
2899
2900         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
2901
2902 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
2903
2904         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
2905         Use $MULTIDIR to choose between the kernel and RTP headers,
2906         and use $WIND_BASE and $WIND_USR to locate them.
2907
2908 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
2909
2910         * config/i386/i386.c (override_options): Put initialization of
2911         ix86_tune_mask and ix86_arch_mask to the correct place.
2912
2913 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
2914             Michael Meissner  <michael.meissner@amd.com>
2915
2916         PR target/31019
2917         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
2918         (ARCHMASK): Define.
2919         (TARGET_CMOVE): Use ARCHMASK.
2920         (TARGET_CMPXCHG): Ditto.
2921         (TARGET_CMPXCHG8B): Ditto.
2922         (TARGET_XADD): Ditto.
2923         (TARGET_BSWAP): Ditto.
2924         * config/i386/i386.c (ix86_tune_mask): New global variable.
2925         (ix86_arch_mask): Ditto.
2926         (override_options): Initialize ix86_tune_mask and
2927         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
2928         target_flags.
2929
2930 2007-03-02  Ben Elliston  <bje@au.ibm.com>
2931
2932         PR 30992
2933         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
2934
2935 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
2936
2937         * target.h (init_dwarf_reg_sizes_extra): New target hook.
2938         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
2939         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
2940         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
2941         hook.
2942         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
2943         rs6000_init_dwarf_reg_sizes_extra): New.
2944         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
2945         SPE register high parts.
2946
2947 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
2948
2949         * Makefile.in: Add install-pdf target as
2950         copied from automake v1.10 rules.
2951         * configure.ac: Add install-pdf to target list.
2952         * configure: Regenerate.
2953
2954 2007-03-01  Paul Brook  <paul@codesourcery.com>
2955
2956         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
2957         modes to LDRD for DImode.
2958         (output_move_double): Fixup out of range ldrd/strd.
2959         (vfp_secondary_reload_class): Rename...
2960         (coproc_secondary_reload_class): ... to this.  Add wb argument.
2961         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
2962         coproc_secondary_reload_class for CLASS_IWMMXT.
2963         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
2964         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
2965
2966 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
2967
2968         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
2969         factor by the estimated number of iterations.
2970         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
2971         prefetch latency.
2972
2973         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
2974         decode_caches_intel, detect_caches_intel): New functions.
2975         (host_detect_local_cpu): Use detect_caches_amd and
2976         detect_caches_intel.
2977
2978 2007-03-01  Richard Henderson  <rth@redhat.com>
2979
2980         * expr.c (emit_move_complex_push): Export.
2981         (emit_move_complex_parts): Split out from ...
2982         (emit_move_complex): ... here.
2983         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
2984         * config/i386/i386.md (movcdi): New.
2985
2986 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
2987
2988         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
2989         size of mode1 to check for tieable modes in MMX case.
2990
2991 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
2992
2993         * Makefile.in (rtlanal.o): Depend on tree.h.
2994         * rtl.h (offset_within_section_p, split_const): Declare.
2995         * rtlanal.c: Include tree.h.
2996         (offset_within_block_p): New function, taken from
2997         mips_offset_within_object_p.
2998         (split_const): New function, taken from mips_split_const.
2999         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
3000         Declare.
3001         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
3002         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
3003         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
3004         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
3005         (m68k_illegitimate_symbolic_constant_p): New function.
3006         * config/m68k/m68k.md (movsi): Remove misleading predicates.
3007         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
3008         symbolic constant that might be outside the symbol's section,
3009         move the symbol first and then add the offset.
3010         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
3011         Override.
3012         * config/mips/mips.c (mips_split_const): Delete.
3013         (mips_offset_within_object_p): Delete.
3014         (mips_symbolic_constant_p): Use offset_within_section_p and
3015         split_const instead of mips_offset_within_object_p and
3016         mips_split_const.
3017         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
3018         (mips_legitimize_const_move, print_operand_reloc)
3019         (mips_dangerous_for_la25_p): Use split_const instead of
3020         mips_split_const.
3021
3022 2007-02-28  Eric Christopher  <echristo@apple.com>
3023
3024         * Makefile.in (install-include-dir): Don't rm -rf include.
3025
3026 2007-02-28  Richard Guenther  <rguenther@suse.de>
3027
3028         PR middle-end/30364
3029         * fold-const.c (fold_binary): Do not associate expressions
3030         with more than one variable for integer types that do not wrap.
3031
3032 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
3033
3034         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
3035         Delete, and replace with...
3036         (fold_builtin_call_array): This.  Update callers to use it.
3037         * fold-const.c (fold_build_call_list): Delete, and replace with...
3038         (fold_build_call_array): This.
3039         (fold_build_call_list_initializer): Delete, and replace with...
3040         (fold_build_call_array_initializer): This.
3041         * tree.h: Update declarations to reflect above changes.
3042
3043         * c-typeck.c (build_function_call): Store converted arguments
3044         in a stack-allocated array instead of building a list.
3045         (convert_arguments): Store arguments in the array passed in as an
3046         argument, and return the actual number of arguments.
3047         * c-format.c: (check_function_format): Pass arguments in an
3048         array instead of a list.
3049         * c-common.c (check_function_nonnull): Likewise.
3050         (check_function_sentinel): Likewise.
3051         (check_function_arguments): Likewise.
3052         * c-common.h: Update declarations to reflect above changes.
3053
3054 2007-02-28  Jan Hubicka  <jh@suse.cz>
3055
3056         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
3057         PRED_NEGATIVE_RETURN): Update outcomes.
3058
3059 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
3060
3061         * calls.c (emit_library_call_value_1): Handle partial registers
3062         correctly when building up CALL_INSN_FUNCTION_USAGE.
3063
3064 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3065
3066         * pa/predicates.md (move_src_operand): Allow zero for mode.
3067         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
3068         move pattern.
3069
3070 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
3071
3072         PR target/30970
3073         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
3074         *movv2df_internal): Enable pattern only for valid operand
3075         combinations.
3076         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
3077         tie only 128bit modes. For MMX registers, tie only 64bit modes.
3078
3079 2007-02-27  Mike Stump  <mrs@apple.com>
3080
3081         * config/darwin-crt3.c: Avoid compilation when compiling for a
3082         kext multilib.
3083
3084 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
3085
3086         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
3087         FIXED_INCLUDE_DIR.
3088         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
3089         for fixed headers and limits.h.
3090         (install-include-dir, install-headers-tar, install-headers-cpio,
3091         install-headers-cp, real-install-headers-tar,
3092         real-install-headers-cpio, real-install-headers-cp): Handle
3093         include-fixed as well as include.
3094         (install-mkheaders): Don't install files that go only in include
3095         not include-fixed.
3096         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
3097         from GCC_INCLUDE_DIR.
3098         * gcc.c (process_command): Remove special -BstageN/ handling.
3099         (do_spec_1): Add include-fixed directories.
3100
3101 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
3102
3103         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
3104         _smulsi3_highpart.
3105         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
3106         New functions.
3107         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
3108         patterns.
3109
3110 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
3111
3112         * c-common.c (get_priority): Add check for
3113         SUPPORTS_INIT_PRIORITY.
3114
3115 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
3116
3117         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
3118
3119         * config/bfin/bfin.c: Include "cfglayout.h".
3120         (MAX_LSETUP_DISTANCE): New macro.
3121         (struct loop_info): New members incoming, incoming_src and
3122         incoming_dest.  Delete member predecessor.
3123         (length_for_loop): New function.
3124         (bfin_optimize_loop): Handle more different loop structures.
3125         (bfin_discover_loop): Rework detection of predecessor blocks by
3126         examining incoming edges.
3127         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
3128         bfin_reorg_loops.
3129         (bfin_reorder_loops): New function.
3130         (bfin_reorg_loops): Use these three new functions.
3131
3132         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
3133         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
3134         (CONSTRAINT_LEN): Add entry for 'q'.
3135         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
3136         Add 'q' constraints.
3137         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
3138         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
3139
3140         * config/bfin/bfin.md (add_with_carry): New pattern.
3141         (s_or_u, su_optab, su_modifier): New code macros/attrs.
3142         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
3143         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
3144         support unsigned multiplies too.  Removed incorrect commutativity from
3145         operand 1 constraint where appropriate.
3146         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
3147         patterns.
3148         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
3149         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
3150         New patterns.
3151         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
3152         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
3153         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
3154         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
3155         usmulhisi_hh_huh): New patterns.
3156
3157         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
3158         lshifthi3): Fix output template to use half reg for operand 2.
3159
3160         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
3161         instead of R2.
3162
3163         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
3164
3165 2007-02-27  Andreas Schwab  <schwab@suse.de>
3166
3167         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
3168
3169 2007-02-27  Jan Hubicka  <jh@suse.cz>
3170
3171         * predict.c (last_basic_block_p): Remove.
3172         (tree_estimate_probability): Update return heuristic for commonized
3173         return blocks.
3174
3175 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
3176
3177         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
3178
3179 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
3180
3181         * doc/include/gcc-common.texi (versionsubtitle): New macro.
3182         * doc/cpp.texi: Standardize title page.
3183         * doc/cppinternals.texi: Likewise.
3184         * doc/gcc.texi: Standardize title page, remove version number
3185         from copyright page.
3186         * doc/gccint.texi: Likewise.
3187         * doc/install.texi: Standardize title page, add table of
3188         contents.
3189
3190 2007-02-26  Jan Hubicka  <jh@suse.cz>
3191
3192         * predict.def: Set outcomes according to more recent results.
3193         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
3194         Remove dead predictors.
3195         * predict.c (return_prediction): Fix pasto.
3196
3197 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
3198
3199         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
3200         change; avoid a memory leak when returning early.
3201
3202 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
3203
3204         * c-decl.c (static_ctors): Move to c-common.c.
3205         (static_dtors): Likewise.
3206         (finish_function): Use c_record_cdtor_fn.
3207         (build_cdtor): Move to c-common.c.
3208         (c_write_global_declarations): Use c_build_cdtor_fns.
3209         * c-common.h (static_ctors): Declare.
3210         (static_dtors): Likewise.
3211         (c_record_cdtor_fn): Likewise.
3212         (c_build_cdtor_fns): Likewise.
3213         * c-common.c (static_ctors): New variable.
3214         (static_dtors): Likewise.
3215         (c_record_cdtor_fn): New function.
3216         (build_cdtor): Move from c-decl.c
3217         (c_build_cdtor_fns): New function.
3218
3219         * output.h (assemble_addr_to_section): Declare.
3220         (get_cdtor_priority_section): Likewise.
3221         * varasm.c (assemble_addr_to_section): New function.
3222         (get_cdtor_priority_section): Likewise.
3223         (default_named_section_asm_out_destructor): Use them.
3224         (destor_dtor_section_asm_out_destructor): Likewise.
3225         (default_named_section_asm_out_constructor): Likewise.
3226         (default_ctor_section_asm_out_constructor): Likewise.
3227         * config.gcc (*-*-vxworks*): Include vxworks.o.
3228         * config/t-vxworks (vxworks.o): New target.
3229         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
3230         (TARGET_ASM_CONSTRUCTOR): Define.
3231         (TARGET_ASM_DESTRUCTOR): Likewise.
3232         (vxworks_asm_out_constructor): Declare.
3233         (vxworks_asm_out_destructor): Likewise.
3234
3235         * c-common.c (get_priority): Check that we have not just an
3236         INTEGER_CST, but an integer constant with integeral type.
3237
3238 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
3239
3240         PR tree-optimization/30938
3241         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
3242         use &dt[nargs-1] instead of &dt[nargs] in the call to
3243         vect_is_simple_use().
3244
3245 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
3246
3247         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
3248         from register elimination as PRE_MODIFY / POST_MODIFY increments.
3249         Do not attempt to handle MEM inside auto-inc expressions.
3250         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
3251         of a register modified by an auto-inc expression.  However, do handle
3252         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
3253         (elimination_effects): Prohibit elimination of a register modified
3254         by an auto-inc expression.  Disable register elimination rules whose
3255         target register is modified by an auto-inc expression with variable
3256         increment.
3257
3258 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
3259
3260         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
3261         off-by-one error.
3262         (array_at_struct_end_p): New function.
3263         (idx_infer_loop_bounds): Use it.
3264         (estimate_numbers_of_iterations_loop): Export.
3265         * predict.c (predict_loops): Use estimated_loop_iterations_int.
3266         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
3267         (tree_estimate_probability): Call record_loop_exits.
3268         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
3269         (estimated_loop_iterations, estimated_loop_iterations_int,
3270         estimated_loop_iterations_tree): New functions.
3271         (analyze_siv_subscript_cst_affine,
3272         compute_overlap_steps_for_affine_1_2,
3273         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
3274         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
3275         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
3276         (PRED_LOOP_ITERATIONS_GUESSED): New.
3277         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
3278         * cfgloop.h (estimate_numbers_of_iterations_loop,
3279         estimated_loop_iterations_int): Declare.
3280
3281 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
3282
3283         * doc/extend.texi: Document optional priority argument to
3284         constructors and destructors.
3285         * tree.c (init_priority_for_decl): Adjust GTY markers.
3286         (init_ttree): Use priority-info hash functions for
3287         init_priority_for_decl.
3288         (tree_map_eq): Rename to ...
3289         (tree_map_base_eq): ... this.
3290         (tree_map_marked_p): Rename to ...
3291         (tree_map_base_marked_p): ... this.
3292         (tree_map_base_hash): New function.
3293         (decl_init_priority_lookup): Rework.
3294         (decl_fini_priority_lookup): New function.
3295         (decl_priority_info): New function.
3296         (decl_init_priority_insert): Use it.
3297         (decl_fini_priority_insert): Likewise.
3298         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
3299         hierarchy.
3300         (decl_restrict_base_insert): Likewise.
3301         (decl_debug_expr_insert): Likewise.
3302         (decl_value_expr_lookup): Likewise.
3303         (decl_value_expr_insert): Likewise.
3304         * tree.h (priority_type): New type.
3305         (decl_init_priority_lookup): Use priority_type.
3306         (decl_fini_priority_lookup): New function.
3307         (decl_init_priority_insert): Use priority_type.
3308         (decl_fini_priority_insert): New function.
3309         (DECL_HAS_INIT_PRIORITY): Tweak comments.
3310         (DECL_INIT_PRIORITY): Likewise.
3311         (SET_DECL_INIT_PRIORITY): Add comment.
3312         (DECL_FINI_PRIORITY): New macro.
3313         (SET_DECL_FINI_PRIORITY): Likewise.
3314         (DEFAULT_INIT_PRIORITY): Document.
3315         (MAX_INIT_PRIORITY): Likewise.
3316         (MAX_RESERVED_INIT_PRIORITY): Likewise.
3317         (tree_map_base): New type.
3318         (tree_map_base_eq): New function.
3319         (tree_map_base_hash): Likewise.
3320         (tree_map_base_marked_p): Likewise.
3321         (tree_map): Inherit from tree_map_base.
3322         (tree_map_eq): Make it a macro.
3323         (tree_map_marked_p): Likewise.
3324         (tree_int_map): Inherit from tree_map_base.
3325         (tree_int_map_eq): Make it a macro.
3326         (tree_int_map_hash): Likewise.
3327         (tree_int_map_marked_p): Likewise.
3328         (tree_priority_map): New type.
3329         (tree_priority_map_eq): New macro.
3330         (tree_priority_map_hash): Likewise.
3331         (tree_priority_map_marked_p): Likewise.
3332         * varasm.c (emults_decl): Adjust for refactoring of tree_map
3333         hierarchy.
3334         (emutls_common_1): Likewise.
3335         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
3336         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
3337         of tree_map hierarchy.
3338         * tree-cfg.c (move_stmt_r): Likewise.
3339         (new_label_mapper): Likewise.
3340         * c-tree.h (c_expand_body): Move to ...
3341         * c-common.h (c_expand_body): ... here.
3342         * c-decl.c (c_expand_body): Move to ...
3343         * c-common.c (c_expand_body): ... here.
3344         (c_common_attribute_table): Allow 1 argument for the constructor
3345         and destructor attributes.
3346         (get_priority): New function.
3347         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
3348         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
3349
3350 2007-02-24  Jan Hubicka  <jh@suse.cz>
3351
3352         PR middle-end/30509
3353         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
3354
3355 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
3356             Jan Hubicka  <jh@suse.cz>
3357
3358         PR target/30778
3359         * i386.c (counter_mode): New function.
3360         (expand_set_or_movmem_via_loop): Use it.
3361         (expand_movmem_epilogue): Likewise; fix pasto.
3362         (ix86_expand_movmem): Do emit guard even for constant counts.
3363         (ix86_expand_setmem): Likewise.
3364
3365 2007-02-25  Nick Clifton  <nickc@redhat.com>
3366
3367         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
3368         (JUMP_TABLES_IN_TEXT_SECTION): Define.
3369
3370 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
3371
3372         PR target/30770
3373         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
3374         count argument with 0x10, not with 0x16.
3375         (expand_setmem_epilogue): Ditto.
3376
3377 2007-02-24  Mike Stump  <mrs@apple.com>
3378
3379         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
3380         symbols.
3381
3382 2007-02-24  Richard Guenther  <rguenther@suse.de>
3383
3384         PR middle-end/30951
3385         * fold-const.c (fold_binary): Fold x +- CST op x for
3386         EQ_EXPR and NE_EXPR.
3387
3388 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3389
3390         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
3391
3392 2007-02-24  Jan Hubicka  <jh@suse.cz>
3393
3394         * cgraphunit.c (decide_is_function_needed): Honor
3395         -fkeep-inline-functions.
3396
3397 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3398
3399         * builtins.c (fold_builtin_modf): New.
3400         (fold_builtin_2): Use it.
3401
3402 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
3403
3404         * loop-iv.c (implies_p): Detect additional cases where A implies B.
3405         (determine_max_iter): Take additional LOOP arg; all callers changed.
3406         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
3407         one using simplifications.
3408         (simplify_using_initial_values): Return if the expression becomes
3409         invalid due to altered regs.
3410
3411 2007-02-23  DJ Delorie  <dj@redhat.com>
3412
3413         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
3414
3415 2007-02-23  Mike Stump  <mrs@apple.com>
3416
3417         * tlink.c (scan_linker_output): Parse linker messages from
3418         darwin9's linker better.
3419
3420 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
3421
3422         PR debug/29614
3423         * varpool.c (varpool_assemble_pending_decls):  Set
3424         varpool_last_needed_node to null.
3425
3426 2007-02-23  DJ Delorie  <dj@redhat.com>
3427
3428         * config/i386/i386.c (ix86_data_alignment): Don't specify an
3429         alignment bigger than the object file can handle.
3430
3431 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
3432
3433         PR target/30825
3434         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
3435         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
3436         (*movsf_1): Penalize MMX moves.
3437
3438 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
3439
3440         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
3441         2^32-1 or more times unless flag_unsafe_loop_optimizations.
3442
3443         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
3444
3445 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3446
3447         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
3448         (fold_builtin_1): Use them.
3449         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
3450         BUILT_IN_SIGNIFICAND.
3451
3452 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
3453
3454         * config/i386/i386.c (bdesc_1arg): Initialize
3455         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
3456         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
3457         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
3458         and IX86_BUILTIN_MOVSLDUP.
3459
3460 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
3461
3462         PR rtl-optimization/30841
3463         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
3464
3465 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3466
3467         * builtins.c (fold_builtin_frexp): New.
3468         (fold_builtin_2): Use it.
3469
3470 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
3471
3472         * doc/invoke.texi (Spec Files): Document getenv spec function.
3473
3474         * gcc.c (getenv_spec_function): New function.
3475         (static_spec_functions): Add it.
3476         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
3477         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
3478         header files.
3479
3480 2007-02-22  Michael Matz  <matz@suse.de
3481
3482         PR c++/29433
3483         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
3484         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
3485
3486 2007-02-22  Ian Lance Taylor  <iant@google.com>
3487
3488         PR debug/30898
3489         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
3490         (mem_loc_descriptor): Call it.
3491
3492 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
3493             Ira Rosen  <irar@il.ibm.com>
3494
3495         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
3496
3497 2007-02-22  Ira Rosen  <irar@il.ibm.com>
3498
3499         PR tree-optimization/30843
3500         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
3501         stores only after all the group is vectorized.
3502
3503 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
3504
3505         PR tree-optimization/30858
3506         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
3507         in the reduction cycle have a single use in the loop.
3508         * tree-vectorizer.h (relevant): Add documentation.
3509
3510 2007-02-20  Mike Stump  <mrs@apple.com>
3511
3512         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
3513         * configure: Regenerate.
3514
3515 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
3516
3517         Change the defaults of some parameters and options.
3518         * config/spu/spu-protos.h (spu_optimization_options): Declare.
3519         * config/spu/spu.c (spu_optimization_options): Add.
3520         (spu_override_options): Change params in spu_optimization_options.
3521         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
3522
3523         Register 127 is only 16 byte aligned when used as a frame pointer.
3524         * config/spu/spu-protos.h (spu_init_expanders): Declare.
3525         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
3526         HARD_FRAME_POINTER_REGNUM.
3527         (spu_legitimate_address):  Use regno_aligned_for_reload.
3528         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
3529         aligned when frame_pointer_needed is true.
3530         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
3531         to 8 bits.
3532         * config/spu/spu.h (INIT_EXPANDERS): Define.
3533
3534         Make sure shift and rotate instructions have valid immediate operands.
3535         * config/spu/predicates.md (spu_shift_operand): Remove.
3536         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
3537         * config/spu/constraints.md (W, O): Extend range.
3538         * config/spu/spu.md (umask, nmask): Define.
3539         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
3540         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
3541         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
3542         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
3543         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
3544         (lshr<mode>3_reg):  Fix rtl description.
3545
3546         Make sure mulhisi immediate operands are valid.
3547         * config/spu/predicates.md (imm_K_operand): Add.
3548         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
3549
3550         Generate constants using fsmbi and andi.
3551         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
3552         (print_operand, spu_split_immediate, classify_immediate,
3553         fsmbi_const_p): Handle IC_FSMBI2.
3554
3555         Correctly handle a CONST_VECTOR containing symbols.
3556         * config/spu/spu.c (print_operand): Handle HIGH correctly.
3557         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
3558         (immediate_load_p): Allow symbols that use 2 instructions to create.
3559         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
3560         with symbols when flag_pic is set.
3561         (const_vector_immediate_p): New.
3562         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
3563         accept a CONST_VECTOR with symbols.
3564         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
3565         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
3566         correctly.
3567         * config/spu/spu.md (high, low): Delete.
3568         (low_<mode>): Define.
3569
3570         Remove INTRmode and INTR_REGNUM, which didn't work.
3571         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
3572         of INTR_REGNUM.
3573         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
3574         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
3575         peephole2 pattern): Don't use INTR or 131.
3576         (movintrcc): Delete.
3577         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
3578         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
3579         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
3580         (UNSPEC_SET_INTR): Add.
3581         * config/spu/spu-modes.def (INTR): Remove.
3582
3583         More accurate warnings about run-time relocations.
3584         * config/spu/spu.c (reloc_diagnostic): Test in_section.
3585
3586         Correctly warn about immediate arguments to specific intrinsics.
3587         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
3588         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
3589         the instruction predicate.
3590
3591         Fix tree check errors with latest update.
3592         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
3593         CALL_EXPR_ARG.
3594         (spu_expand_builtin): Use CALL_EXPR_FN.
3595
3596         Add missing specific intrinsics.
3597         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
3598         si_bislede.
3599         * config/spu/spu_internals.h: Ditto.
3600
3601         Fix incorrect operand modifiers.
3602         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
3603         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
3604
3605         Optimize one case of zero_extend of a vec_select.
3606         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
3607
3608         Accept any immediate for hbr.
3609         * config/spu/spu.md (hbr):  Change s constraints to i.
3610
3611 2007-02-21  Paul Brook  <paul@codesourcery.com>
3612
3613         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
3614         condexec_count when skipping USE and CLOBBER.
3615
3616 2007-02-21  Nick Clifton  <nickc@redhat.com>
3617
3618         * common.opt (Warray-bounds): Add Warning attribute.
3619         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
3620         Likewise.
3621         (fsized-zeroes): Add Optimization attribute.
3622         (fsplit-wide-types, ftree-scev-cprop): Likewise.
3623         * c.opt (Wc++0x-compat): Add Warning attribute.
3624
3625 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
3626
3627         PR middle-end/30761
3628         * reload1.c (eliminate_regs_in_insn): In the single_set special
3629         case, attempt to re-recognize the insn before falling back to
3630         having reload fix it up.
3631
3632 2007-02-20  Eric Christopher  <echristo@gmail.com>
3633
3634         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
3635         Rewrite accordingly.
3636         (frv_read_iacc_argument): Ditto.
3637         (frv_expand_set_builtin): Take a call instead of arglist, update for
3638         above changes.
3639         (frv_expand_unop_builtin): Ditto.
3640         (frv_expand_binop_builtin): Ditto.
3641         (frv_expand_cut_builtin): Ditto.
3642         (frv_expand_binopimm_builtin): Ditto.
3643         (frv_expand_voidbinop_builtin): Ditto.
3644         (frv_expand_int_void2arg): Ditto.
3645         (frv_expand_prefetches): Ditto.
3646         (frv_expand_voidtriop_builtin): Ditto.
3647         (frv_expand_voidaccop_builtin): Ditto.
3648         (frv_expand_load_builtin): Ditto.
3649         (frv_expand_store_builtin): Ditto.
3650         (frv_expand_mdpackh_builtin): Ditto.
3651         (frv_expand_mclracc_builtin): Ditto.
3652         (frv_expand_mrdacc_builtin): Ditto.
3653         (frv_expand_mwtacc_builtin): Ditto.
3654         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
3655         calls for above.
3656
3657 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
3658
3659         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
3660         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
3661         cmpb instruction.
3662         (HAVE_GAS_DFP): Check for assembler support of decimal floating
3663         point instructions.
3664         * configure: Regenerate.
3665         * config.in: Regenerate.
3666         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
3667         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
3668         masks to power6 and power6x and to POWERPC_MASKS.
3669         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
3670         _ARCH_PWR6.
3671         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
3672         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
3673         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
3674         Access PROTOTYPE as variable, not mask.
3675
3676 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
3677
3678         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
3679         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
3680         * combine.c (adjust_for_new_dest): Use it.
3681         * postreload.c (reload_combine): Likewise.
3682
3683 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
3684
3685         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
3686         notes on an insn with multiple sets, even if single_set returns
3687         non-NULL for that insn.
3688
3689 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3690
3691         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
3692         scalbn and scalbln.
3693
3694 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
3695
3696         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
3697         if user didn't pass it.
3698         * config/i386/darwin.h (CC1_SPEC): Likewise.
3699         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
3700         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
3701         -mmacosx-version-min.
3702
3703 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3704             Uros Bizjak  <ubizjak@gmail.com>
3705
3706         * optabs.h (enum optab_index): Add new OTI_scalb.
3707         (scalb_optab): Define corresponding macro.
3708         * optabs.c (init_optabs): Initialize scalb_optab.
3709         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
3710         patterns.
3711         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
3712         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
3713         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
3714         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
3715         flag_unsafe_math_optimizations is set.
3716
3717         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
3718         to implement scalbf, scalb and scalbl built-ins as inline x87
3719         intrinsics.
3720
3721 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3722             DJ Delorie <dj@redhat.com>
3723
3724         PR other/30824
3725         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
3726         (diagnostic_report_diagnostic): ... here, and turn them into real
3727         errors. If warnings are inhibited, no need to do anything.
3728
3729 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
3730
3731         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
3732         better code generation.
3733
3734 2007-02-20  Ben Elliston  <bje@au.ibm.com>
3735
3736         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
3737
3738 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
3739
3740         * config/alpha/alpha.c, config/alpha/alpha.md,
3741         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
3742         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
3743         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
3744         config/arm/lib1funcs.asm: Follow spelling conventions.
3745
3746         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
3747         config/fr30/fr30.md, config/i386/i386.h,
3748         config/iq2000/iq2000.h, config/iq2000/predicates.md,
3749         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
3750         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
3751         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
3752         config/rs6000/altivec.md, config/rs6000/rs6000.c,
3753         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
3754         config/sparc/sparc.c, config/sparc/sparc.h,
3755         config/sparc/sparc.md, config/spu/constraints.md,
3756         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
3757         conventions.
3758
3759 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
3760
3761         PR target/29943
3762         * varasm.c (use_blocks_for_decl_p): Return false for decls with
3763         alias attribute.
3764
3765 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
3766
3767         * doc/invoke.texi (-ftree-lrs): Remove.
3768
3769 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
3770
3771         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
3772         NULL.
3773
3774 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
3775
3776         * config/ia64/ia64.c (ia64_expand_builtin): Use the
3777         new CALL_EXPR_FN macro for retrieving the function
3778         declaration of the input expression.
3779
3780 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3781
3782         * c.opt (Waddress): New.
3783         * common.opt (Walways-true): Delete.
3784         (Wstring-literal-comparison): Delete.
3785         * doc/invoke.texi (Warning Options): Delete -Walways-true and
3786         -Wstring-literal-comparison. Add -Waddress.
3787         (Waddress): New.
3788         (Walways-true): Delete.
3789         (Wstring-literal-comparison): Delete.
3790         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
3791         consistently instead of -Walways-true in example.
3792         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
3793         * c-typeck.c (parser_build_binary_op): Replace
3794         -Wstring-literal-comparison and -Walways-true with -Waddress.
3795         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
3796         with -Waddress.
3797
3798 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
3799
3800         * tree-cfg.c (dump_function_to_file): Be prepared for functions
3801         without DECL_STRUCT_FUNCTION initialized.
3802
3803 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
3804
3805         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
3806         due to calls to functions taking pointers as parameters.
3807
3808 2007-02-19  Richard Henderson  <rth@redhat.com>
3809
3810         PR debug/29558
3811         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
3812         in memory.
3813
3814 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
3815
3816         * config/s390/s390.c (s390_call_saved_register_used,
3817         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
3818         accessed to the new scheme.
3819
3820 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
3821
3822         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
3823         (cris_print_index, cris_print_operand, cris_print_operand_address)
3824         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
3825         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
3826         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
3827         GET_CODE () == xxx.
3828         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
3829         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
3830         GO_IF_LEGITIMATE_ADDRESS): Ditto.
3831         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
3832         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
3833         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
3834         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
3835         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
3836         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
3837         (uminsi3, call, call_value): Ditto.
3838         (define_split: indir_to_reg_split, unnamed): Ditto.
3839
3840 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
3841
3842         PR tree-optimization/30975
3843         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
3844         wrong assert.
3845
3846 2007-02-18  Eric Christopher  <echristo@gmail.com>
3847
3848         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
3849         Remove use of arglist.
3850         (mips_expand_builtin): Remove use of arglist, pass in expr.
3851         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
3852         (mips_expand_builtin_movtf): Ditto.
3853         (mips_expand_builtin_compare): Ditto.
3854
3855 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
3856
3857         * tree-sra.c (sra_build_assignment): Replace assertion
3858         checking with a comment explaining why it can't be done.
3859
3860 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
3861
3862         PR middle-end/30833
3863         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
3864         during CALL_EXPR representation conversion.
3865         * tree-ssa-propagate.c (set_rhs): Likewise.
3866
3867 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
3868
3869         * tree-sra.c (sra_build_assignment): Disable assertion checking
3870         for now.
3871
3872 2007-02-18  Roger Sayle  <roger@eyesopen.com>
3873
3874         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
3875         instead of calling build2 with a GIMPLE_MODIFY_STMT.
3876         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
3877         Likewise.
3878         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
3879         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
3880         gimplify_init_ctor_eval_range, gimple_push_cleanup,
3881         gimplify_omp_for, gimplify_omp_atomic_pipeline,
3882         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
3883         force_gimple_operand): Likewise.
3884         * ipa-cp.c (constant_val_insert): Likewise.
3885         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
3886         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
3887         perfect_nestify): Likewise.
3888         * langhooks.c (lhd_omp_assignment): Likewise.
3889         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
3890         lower_copyprivate_clauses, lower_send_clauses,
3891         lower_send_shared_vars, expand_parallel_call,
3892         expand_omp_for_generic, expand_omp_for_static_nochunk,
3893         expand_omp_for_static_chunk, expand_omp_sections,
3894         lower_omp_single_copy, lower_omp_for_lastprivate,
3895         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
3896         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
3897         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
3898         Likewise.
3899
3900 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
3901
3902         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
3903         config/sh/sh.md: Follow spelling conventions.
3904
3905         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
3906         config/frv/predicates.md: Follow spelling conventions.
3907
3908         * config/m68k/linux-unwind.h: Fix a comment typo.
3909         * target.h: Follow spelling conventions.
3910
3911 2007-02-18  Roger Sayle  <roger@eyesopen.com>
3912
3913         PR rtl-optimization/28173
3914         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
3915         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
3916         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
3917         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
3918         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
3919
3920 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3921
3922         * builtins.c (fold_builtin_load_exponent): New.
3923         (fold_builtin_2): Use it.
3924
3925 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
3926
3927         PR rtl-optimization/30773
3928         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
3929         if we fail to attach a REG_EQUIV note.
3930
3931 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
3932             Roger Sayle  <roger@eyesopen.com>
3933
3934         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
3935
3936 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
3937
3938         * calls.c (initialize_argument_information): Pass original EXP
3939         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
3940         code to split complex arguments here, as part of initializing the
3941         ARGS array.
3942         (expand_call): Remove code that builds a list of arguments and
3943         inserts implicit arguments into it.  Instead, just count how many
3944         implicit arguments there will be so we can determine the size of
3945         the ARGS array, and let initialize_argument_information do the work.
3946         (split_complex_values): Delete unused function.
3947
3948 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
3949
3950         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
3951
3952 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
3953
3954         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
3955         for arg pointer based indexed addressing.
3956
3957 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
3958
3959         * config/ia64/ia64.h, config/ia64/ia64.md,
3960         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
3961         spelling conventions.
3962
3963 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
3964
3965         * config/m68k/m68k.c (split_di): New.
3966         * config/m68k/m68k-protos.h: Declare split_di.
3967         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
3968           Improve predicate handling and split constant shifts.
3969
3970 2007-02-18  Roman Zippel <zippel@linux-m68k.org>