OSDN Git Service

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