OSDN Git Service

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