OSDN Git Service

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