OSDN Git Service

d0846592770cc0986bc640251a7881310d2eebb6
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2005-01-13  Hans-Peter Nilsson  <hp@bitrange.com>
2
3         PR target/18329
4         PR target/18330
5         * reload1.c (delete_output_reload): Don't delete an output reload
6         if the pseudo lives longer than a single basic block.  Adjust and
7         improve wording of comment.
8
9 2005-01-12  Andrew Pinski  <pinskia@physics.uc.edu>
10
11         PR target/19334
12         * config/darwin.c (machopic_select_section): Use TYPE_SIZE_UNIT instead
13         of TYPE_SIZE where we mean the number of bytes.
14
15 2005-01-12  Aldy Hernandez  <aldyh@redhat.com>
16
17         * function.c (assign_parm_setup_block): Relax condition on
18         multi-register optimization.
19
20 2005-01-12  Nick Clifton  <nickc@redhat.com>
21
22         * config/sh/sh.md (udivsi3_sh2a, divsi3_sh2a): Give these patterns
23         an "in_delay_slot" attribute of "no" to prevent them being used in
24         delay slots.  This is forbidden because they might generate
25         exceptions.
26
27 2005-01-12  Alan Modra  <amodra@bigpond.net.au>
28
29         PR target/19389
30         * config/rs6000/rs6000.md (movtf_internal): Replace r->o and m->r
31         with r->Y and Y->r.
32
33 2005-01-12  Nick Clifton  <nickc@redhat.com>
34
35         * config/iq2000/iq2000.h (ASM_SPEC): Undefine (to stop -Qy being
36         passed on to GAS) but do not define, as GAS no longer supports or
37         needs the -m2000 option.
38
39 2005-01-11  Roger Sayle  <roger@eyesopen.com>
40
41         * builtins.c (fold_builtin_fabs): Convert argument to the appropriate
42         type as args of unprototyped builtins aren't automatically promoted.
43         (fold_builtin_abs): Likewise.
44
45 2005-01-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
46
47         * Makefile.in: Set a `build-warn' variable.
48
49 2005-01-11  Zdenek Dvorak  <dvorakz@suse.cz>
50
51         PR tree-optimization/17949
52         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): New function.
53         (find_interesting_uses_address): Use it.
54
55 2005-01-11  Aldy Hernandez  <aldyh@redhat.com>
56
57         * regrename.c (kill_value): Handle subreg's that won't simplify.
58
59 2005-01-11  Richard Henderson  <rth@redhat.com>
60
61         PR target/13366
62         * config/i386/i386.h (enum ix86_builtins): Move ...
63         * config/i386/i386.c: ... here.
64         (IX86_BUILTIN_MOVDDUP, IX86_BUILTIN_MMX_ZERO, IX86_BUILTIN_PEXTRW,
65         IX86_BUILTIN_PINSRW, IX86_BUILTIN_LOADAPS, IX86_BUILTIN_LOADSS,
66         IX86_BUILTIN_STORESS, IX86_BUILTIN_SSE_ZERO, IX86_BUILTIN_PEXTRW128,
67         IX86_BUILTIN_PINSRW128, IX86_BUILTIN_LOADAPD, IX86_BUILTIN_LOADSD,
68         IX86_BUILTIN_STOREAPD, IX86_BUILTIN_STORESD,  IX86_BUILTIN_STOREHPD,
69         IX86_BUILTIN_STORELPD, IX86_BUILTIN_SETPD1, IX86_BUILTIN_SETPD,
70         IX86_BUILTIN_CLRPD, IX86_BUILTIN_LOADPD1, IX86_BUILTIN_LOADRPD,
71         IX86_BUILTIN_STOREPD1, IX86_BUILTIN_STORERPD, IX86_BUILTIN_LOADDQA,
72         IX86_BUILTIN_STOREDQA, IX86_BUILTIN_CLRTI,
73         IX86_BUILTIN_LOADDDUP): Remove.
74         (IX86_BUILTIN_VEC_INIT_V2SI, IX86_BUILTIN_VEC_INIT_V4HI,
75         IX86_BUILTIN_VEC_INIT_V8QI, IX86_BUILTIN_VEC_EXT_V2DF,
76         IX86_BUILTIN_VEC_EXT_V2DI, IX86_BUILTIN_VEC_EXT_V4SF,
77         IX86_BUILTIN_VEC_EXT_V8HI, IX86_BUILTIN_VEC_EXT_V4HI,
78         IX86_BUILTIN_VEC_SET_V8HI, IX86_BUILTIN_VEC_SET_V4HI): New.
79         (ix86_init_builtins): Make static.
80         (ix86_init_mmx_sse_builtins): Update for changed builtins.
81         (ix86_expand_binop_builtin): Only use ix86_fixup_binary_operands
82         if all the modes match.  Otherwise, fake it.
83         (get_element_number, ix86_expand_vec_init_builtin,
84         ix86_expand_vec_ext_builtin, ix86_expand_vec_set_builtin): New.
85         (ix86_expand_builtin): Make static.  Update for changed builtins.
86         (ix86_expand_vector_move_misalign): Use sse2_loadlpd with zero
87         operand instead of sse2_loadsd.  Cast sse1 fallback to V4SFmode.
88         (ix86_expand_vector_init_duplicate): New.
89         (ix86_expand_vector_init_low_nonzero): New.
90         (ix86_expand_vector_init_one_var, ix86_expand_vector_init_general):
91         Split out from ix86_expand_vector_init; handle integer modes.
92         (ix86_expand_vector_init): Use them.
93         (ix86_expand_vector_set, ix86_expand_vector_extract): New.
94         * config/i386/i386-protos.h: Update.
95         * config/i386/predicates.md (reg_or_0_operand): New.
96         * config/i386/mmx.md (mov<MMXMODEI>_internal): Add 'r' variants.
97         (movv2sf_internal): Likewise.  And a splitter to match them all.
98         (vec_dupv2sf, mmx_concatv2sf, vec_setv2sf, vec_extractv2sf,
99         vec_initv2sf, vec_dupv4hi, vec_dupv2si, mmx_concatv2si, vec_setv2si,
100         vec_extractv2si, vec_initv2si, vec_setv4hi, vec_extractv4hi,
101         vec_initv4hi, vec_setv8qi, vec_extractv8qi, vec_initv8qi): New.
102         (mmx_pinsrw): Fix operand ordering.
103         * config/i386/sse.md (movv4sf splitter): Use direct pattern,
104         rather than sse_loadss expander.
105         (movv2df splitter): Similarly.
106         (sse_loadss, sse_loadlss): Remove.
107         (vec_dupv4sf, sse_concatv2sf, sse_concatv4sf, vec_extractv4sf_0): New.
108         (vec_setv4sf, vec_setv2df): Use ix86_expand_vector_set.
109         (vec_extractv4sf, vec_extractv2df): Use ix86_expand_vector_extract.
110         (sse3_movddup): Rename with '*'.
111         (sse3_movddup splitter): Use gen_rtx_REG instead of gen_lowpart.
112         (sse2_loadsd): Remove.
113         (vec_dupv2df_sse3): Rename from sse3_loadddup.
114         (vec_dupv2df, vec_concatv2df_sse3, vec_concatv2df): New.
115         (sse2_pinsrw): Fix argument ordering.
116         (sse2_loadld, sse2_loadq): Add sse1 alternatives.
117         (sse2_stored): Remove 'r' destination.
118         (vec_dupv4si, vec_dupv2di, sse2_concatv2si, sse1_concatv2si,
119         vec_concatv4si_1, vec_concatv2di, vec_setv2di, vec_extractv2di,
120         vec_initv2di, vec_setv4si, vec_extractv4si, vec_initv4si,
121         vec_setv8hi, vec_extractv8hi, vec_initv8hi, vec_setv16qi,
122         vec_extractv16qi, vec_initv16qi): New.
123
124         * config/i386/emmintrin.h (__m128i, __m128d): Use typedef, not define.
125         (_mm_set_sd, _mm_set1_pd, _mm_setzero_pd, _mm_set_epi64x, 
126         _mm_set_epi32, _mm_set_epi16, _mm_set_epi8, _mm_setzero_si128): Use
127         constructor form.
128         (_mm_load_pd, _mm_store_pd): Use plain dereference.
129         (_mm_load_si128, _mm_store_si128): Likewise.
130         (_mm_load1_pd): Use _mm_set1_pd.
131         (_mm_load_sd): Use _mm_set_sd.
132         (_mm_store_sd, _mm_storeh_pd): Use __builtin_ia32_vec_ext_v2df.
133         (_mm_store1_pd, _mm_storer_pd): Use _mm_store_pd.
134         (_mm_set_epi64): Use _mm_set_epi64x.
135         (_mm_set1_epi64x, _mm_set1_epi64, _mm_set1_epi32, _mm_set_epi16,
136         _mm_set1_epi8, _mm_setr_epi64, _mm_setr_epi32, _mm_setr_epi16,
137         _mm_setr_epi8): Use _mm_set_foo form.
138         (_mm_loadl_epi64, _mm_movpi64_epi64, _mm_move_epi64): Use _mm_set_epi64.
139         (_mm_storel_epi64, _mm_movepi64_pi64): Use __builtin_ia32_vec_ext_v2di.
140         (_mm_extract_epi16): Use __builtin_ia32_vec_ext_v8hi.
141         (_mm_insert_epi16): Use __builtin_ia32_vec_set_v8hi.
142         * config/i386/mmintrin.h (_mm_setzero_si64): Use plain cast.
143         (_mm_set_pi32): Use __builtin_ia32_vec_init_v2si.
144         (_mm_set_pi16): Use __builtin_ia32_vec_init_v4hi.
145         (_mm_set_pi8): Use __builtin_ia32_vec_init_v8qi.
146         (_mm_set1_pi16, _mm_set1_pi8): Use _mm_set_piN variant.
147         * config/i386/pmmintrin.h (_mm_loaddup_pd): Use _mm_load1_pd.
148         (_mm_movedup_pd): Use _mm_shuffle_pd.
149         * config/i386/xmmintrin.h (_mm_setzero_ps, _mm_set_ss,
150         _mm_set1_ps, _mm_set_ps, _mm_setr_ps): Use constructor form.
151         (_mm_cvtpi16_ps, _mm_cvtpu16_ps, _mm_cvtpi8_ps, _mm_cvtpu8_ps,
152         _mm_cvtps_pi8, _mm_cvtpi32x2_ps): Avoid __builtin_ia32_mmx_zero;
153         Use _mm_setzero_ps.
154         (_mm_load_ss, _mm_load1_ps): Use _mm_set* form.
155         (_mm_load_ps, _mm_loadr_ps): Use raw dereference.
156         (_mm_store_ss): Use __builtin_ia32_vec_ext_v4sf.
157         (_mm_store_ps): Use raw dereference.
158         (_mm_store1_ps): Use _mm_storeu_ps.
159         (_mm_storer_ps): Use _mm_store_ps.
160         (_mm_extract_pi16): Use __builtin_ia32_vec_ext_v4hi.
161         (_mm_insert_pi16): Use __builtin_ia32_vec_set_v4hi.
162
163 2005-01-11  Stan Shebs  <shebs@apple.com>
164
165         * config/rs6000/rs6000.c (machopic_output_stub): Issue
166         ldu instead of lwzu if 64-bit -mdynamic-no-pic.
167
168 2005-01-11  Andrew Pinski  <pinskia@physics.uc.edu>
169
170         PR target/18761
171         * config/rs6000/rs6000.c (rs6000_special_round_type_align):
172         Skip all DECLs except for FIELD_DECLs.
173
174 2005-01-11  Andreas Krebbel  <krebbel1@de.ibm.com>
175
176         * config/s390/s390.c (override_options): Return error if
177         -mbackchain, -mpacked-stack and -mhard-float are used together.
178         (s390_va_start): Remove the backchain && packed-stack special case.
179         (s390_gimplify_va_arg): Likewise.
180         * doc/invoke.texi: Remove the ABI incompatibility note.
181
182 2005-01-11  Andreas Krebbel  <krebbel1@de.ibm.com>
183
184         * config/s390/s390.c (struct s390_frame_layout): Remove 
185         save_backchain_p.
186         (s390_frame_info, s390_emit_prologue): Replace occurrences of
187         save_backchain_p with TARGET_BACKCHAIN.
188
189 2005-01-11  Alan Modra  <amodra@bigpond.net.au>
190
191         PR target/18916
192         * builtins.c (std_gimplify_va_arg_expr): Adjust alignment of *ap.
193         * expr.h (struct locate_and_pad_arg_data): Add "boundary".
194         * function.c (locate_and_pad_parm): Set new field.
195         (assign_parm_find_stack_rtl): Use it instead of FUNCTION_ARG_BOUNDARY.
196         Tweak where_pad test to include "none".  Always set mem align for
197         stack_parm.
198         (assign_parm_adjust_stack_rtl): Discard stack_parm if alignment
199         not sufficient for type.
200         (assign_parm_setup_block): If stack_parm is zero on entry, always
201         make a new stack local.  Block move old stack parm if necessary
202         to new aligned stack local.
203         (assign_parm_setup_stack): Use a block move to handle
204         potentially misaligned entry_parm.
205         (assign_parms_unsplit_complex): Specify required alignment when
206         creating stack local.
207         * calls.c (compute_argument_addresses): Override alignment of stack
208         arg calculated from its type with the alignment given by
209         FUNCTION_ARG_BOUNDARY.
210         (store_one_arg): Likewise.
211
212 2005-01-11  Jan Beulich  <jbeulich@novell.com>
213
214         * config/ia64/ia64.md (zero_extendsidi2): Replace zxt4 by addp4.
215         Change respective itanium_class attribute to ialu.
216         (shladdp4_internal): New.
217         * config/ia64/predicates.md (shladd_log2_operand): New.
218
219 2005-01-11  Richard Henderson  <rth@redhat.com>
220
221         * expr.c (store_constructor): Use rtvec_alloc instead of
222         alloca+gen_rtvec_v, and an incorrect number passed to alloca.
223
224 2005-01-11  Kazu Hirata  <kazu@cs.umass.edu>
225
226         * config/alpha/alpha.c, config/i386/mmx.md: Fix comment typos.
227
228 2005-01-11  Alan Modra  <amodra@bigpond.net.au>
229
230         * varasm.c (default_section_type_flags_1): Don't set SECTION_SMALL.
231         * config/ia64/ia64.c (TARGET_SECTION_TYPE_FLAGS): Define.
232         (TARGET_RWRELOC): Define.
233         (ia64_rwreloc_section_type_flags): Delete.
234         (ia64_section_type_flags): New function.
235         * config/ia64/hpux.h (TARGET_SECTION_TYPE_FLAGS): Don't define.
236         (TARGET_RWRELOC): Define.
237
238 2005-01-10  David Mosberger  <davidm@hpl.hp.com>
239
240         PR target/18987
241         * config/ia64/ia64.c (process_set): For alloc insn, only call
242         process_epilogue is !frame_pointer_needed.
243
244 2005-01-10  Roger Sayle  <roger@eyesopen.com>
245
246         PR c++/19355
247         * c-common.c (c_common_truthvalue_conversion): TRUTH_NOT_EXPR is a
248         unary operator and can't be treated as a binary/comparison operator.
249
250 2005-01-10  Richard Henderson  <rth@redhat.com>
251
252         * config/i386/i386.c (ix86_function_value): Use type_natural_mode.
253         (ix86_return_in_memory): Likewise.
254         (function_arg_advance):  Likewise.  Mirror structure in function_arg
255         for choosing register to advance.
256
257 2005-01-10  Kazu Hirata  <kazu@cs.umass.edu>
258
259         * tree-vectorizer.c, tree.def: Fix comment typos.
260
261 2005-01-10  Mark Dettinger  <dettinge@de.ibm.com>
262
263         * config/s390/s390.c (struct processor_costs): 4 new fields:
264         ddbr, ddr, debr, der.
265         (s390_rtx_costs): More precise handling of divide instructions.
266
267 2005-01-10  David Edelsohn  <edelsohn@gnu.org>
268
269         * config/rs6000/t-aix43 (BOOT_LDFLAGS): Define.
270
271 2005-01-10  Jan Beulich  <jbeulich@novell.com>
272
273         * config/ia64/ia64.c (ia64_in_small_data_p): Also handle the section
274         names resulting from -ffunction-sections/-fdata-sections and linkonce
275         ones.
276         * varasm.c (default_section_type_flags_1): Also set SECTION_SMALL
277         based on the section name. Rearrange the section name comparison logic
278         slightly so that each section name is compared against at most once.
279
280 2005-01-10  Ben Elliston  <bje@au.ibm.com>
281
282         * doc/invoke.texi (Code Gen Options): Add PowerPC to the list of
283         targets for which -fPIC reduces limitations on the GOT size.
284
285 2005-01-09  Falk Hueffner  <falk@debian.org>
286
287         * fold-const.c (fold): Also handle EXACT_DIV_EXPR when folding
288         X/C1 cmpop C2.
289
290 2005-01-09  David Edelsohn  <edelsohn@gnu.org>
291
292         PR target/18720
293         * collect2.c (main): Set aixrtl_flag for -brtl option.
294         (resolve_lib_name): Search for .so file extension before .a
295         if aixrtl_flag set.
296
297 2005-01-09  Dorit Naishlos  <dorit@il.ibm.com>
298
299         * tree-vectorizer.c (vect_enhance_data_refs_alignment): Add dump prints.
300         (vect_analyze_data_refs_alignment): Add dump prints.
301
302 2005-01-09  Ira Rosen  <irar@il.ibm.com>
303
304         * tree-vectorizer.c (vect_analyze_offset_expr): Use 
305         expr_invariant_in_loop_p.
306         Initialize outputs first thing in the function.
307         (vect_update_ivs_after_vectorizer): Call initial_condition_in_loop_num.
308         (vect_is_simple_iv_evolution): Call initial_condition_in_loop_num.
309         (vect_analyze_pointer_ref_access): Check that the initial condition of 
310         the access function is loop invariant.
311
312 2005-01-09  Richard Henderson  <rth@redhat.com>
313
314         * config/i386/i386.c (bdesc_2arg): Update names for mmx_ prefixes.
315         (ix86_expand_builtin): Likewise.  Frob MASKMOVQ wrt the input mem
316         just like MASKMOVDQU.  Return plain zero for MMX_ZERO.
317         * config/i386/i386.md (MMXMODEI, mov<MMXMODEI>,
318         mov<MMXMODEI>_internal_rex64, mov<MMXMODEI>_internal, movv2sf,
319         movv2sf_internal_rex64, movv2sf_internal, MMXMODE,
320         movmisalign<MMXMODE>, mmx_pmovmskb, mmx_maskmovq, mmx_maskmovq_rex,
321         sse_movntdi, addv8qi3, addv4hi3, addv2si3, mmx_adddi3, ssaddv8qi3,
322         ssaddv4hi3, usaddv8qi3, usaddv4hi3, subv8qi3, subv4hi3, subv2si3,
323         mmx_subdi3, sssubv8qi3, sssubv4hi3, ussubv8qi3, ussubv4hi3,
324         mulv4hi3, smulv4hi3_highpart, umulv4hi3_highpart, mmx_pmaddwd,
325         sse2_umulsidi3, mmx_iordi3, mmx_xordi3, mmx_anddi3, mmx_nanddi3,
326         mmx_uavgv8qi3, mmx_uavgv4hi3, mmx_psadbw, mmx_pinsrw, mmx_pinsrw,
327         mmx_pextrw, mmx_pshufw, eqv8qi3, eqv4hi3, eqv2si3, gtv8qi3, gtv4hi3,
328         gtv2si3, umaxv8qi3, smaxv4hi3, uminv8qi3, sminv4hi3, ashrv4hi3,
329         ashrv2si3, lshrv4hi3, lshrv2si3, mmx_lshrdi3, ashlv4hi3, ashlv2si3,
330         mmx_ashldi3, mmx_packsswb, mmx_packssdw, mmx_packuswb, mmx_punpckhbw,
331         mmx_punpckhwd, mmx_punpckhdq, mmx_punpcklbw, mmx_punpcklwd, 
332         mmx_punpckldq, emms, addv2sf3, subv2sf3, subrv2sf3, gtv2sf3, gev2sf3,
333         eqv2sf3, pfmaxv2sf3, pfminv2sf3, mulv2sf3, femms, pf2id, pf2iw,
334         pfacc, pfnacc, pfpnacc, pi2fw, floatv2si2, pfrcpv2sf2, pfrcpit1v2sf3,
335         pfrcpit2v2sf3, pfrsqrtv2sf2, pfrsqit1v2sf3, pmulhrwv4hi3, pswapdv2si2,
336         pswapdv2sf2): Move to mmx.md; rename as necessary with leading
337         mmx_ prefix.
338         (mmx_clrdi, pavgusb): Remove.
339         (ldmxcsr, stmxcsr, sfence, sfence_insn): Move to sse.md; rename 
340         with leading sse_ prefix.
341         * config/i386/sse.md: Receive them.
342         * config/i386/mmx.md: New file.
343         (MMXMODE12, MMXMODE24, mmxvecsize): New.
344         (subrv2sf3): Turn into expander for normal subtraction.
345         (mmx_addv2sf3, mmx_mulv2sf3, mmx_smaxv2sf3, mmx_sminv2sf3,
346         mmx_eqv2sf3, mmx_mulv4hi3, mmx_smulv4hi3_highpart,
347         mmx_umulv4hi3_highpart, mmx_pmaddwd, mmx_pmulhrwv4hi3, sse2_umulsidi3,
348         mmx_umaxv8qi3, mmx_smaxv4hi3, mmx_uminv8qi3, mmx_sminv4hi3): Mark
349         commutative; use ix86_binary_operator_ok.
350         (mmx_add<MMXMODEI>3, mmx_ssadd<MMXMODE12>3, mmx_usadd<MMXMODE12>3,
351         mmx_sub<MMXMODEI>3, mmx_sssub<MMXMODE12>3, mmx_ussub<MMXMODE12>3
352         mmx_ashr<MMXMODE24>3, mmx_lshr<MMXMODE23>3, mmx_ashl<MMXMODE24>3
353         mmx_eq<MMXMODEI>3, mmx_gt<MMXMODEI>3, mmx_and<MMXMODEI>3, 
354         mmx_nand<MMXMODEI>3, mmx_ior<MMXMODEI>3, mmx_xor<MMXMODEI>3):
355         Macroize from existing patterns; use ix86_binary_operator_ok.
356         (mmx_packsswb, mmx_packssdw, mmx_packuswb): Add memory alternative.
357         (mmx_punpckhbw, mmx_punpcklbw, mmx_punpckhwd, mmx_punpcklwd,
358         mmx_punpckhdq, mmx_punpckhdq, mmx_punpckldq): Likewise.  Model
359         with vec_select+vec_concat.
360         (mmx_pshufw, mmx_pshufw_1): Likewise.
361         (mmx_uavgv8qi3): Merge pavgusb.  Model correcty.
362         (mmx_uavgv4hi3): Model correctly.
363         * config/i386/mmintrin.h (_mm_and_si64, _mm_andnot_si64, _mm_or_si64,
364         _mm_xor_si64): Remove casts.
365
366 2005-01-09  Zdenek Dvorak  <dvorakz@suse.cz>
367
368         PR tree-optimization/19224
369         * tree-scalar-evolution.c (get_instantiated_value,
370         set_instantiated_value): New functions.
371         (instantiate_parameters_1): Cache the results.
372         (instantiate_parameters, resolve_mixers): Initialize and free
373         the cache.
374
375 2005-01-08  David Edelsohn  <edelsohn@gnu.org>
376
377         * config/i386/i386.md (addhi_4): Correct reference in comment.
378         (addqi_4): Same.
379
380 2005-01-08  Richard Henderson  <rth@redhat.com>
381
382         * config/i386/emmintrin.h (_mm_cvtsi128_si32): Move earlier.
383         (_mm_cvtsi128_si64x): Likewise.
384         (_mm_srl_epi64, _mm_srl_epi32, _mm_srl_epi16, _mm_sra_epi32,
385         _mm_sra_epi16, _mm_sll_epi64, _mm_sll_epi32, _mm_sll_epi16): Use
386         the _mm_{srl,sll}i_foo counterpart, and _mm_cvtsi128_si32.
387         * config/i386/i386-modes.def: Add V16HI, V32QI, V4DF, V8SF.
388         * config/i386/i386-protos.h: Update.
389         * config/i386/i386.c (print_operand): Add 'H'.
390         (ix86_fixup_binary_operands): Split out from ...
391         (ix86_expand_binary_operator): ... here.
392         (ix86_fixup_binary_operands_no_copy): New.
393         (ix86_expand_fp_absneg_operator): Handle vector mode results.
394         (bdesc_2arg): Update names for sse{,2,3}_ prefixes.
395         (ix86_init_mmx_sse_builtins): Remove *maskncmp* special cases.
396         (safe_vector_operand): Use CONST0_RTX.
397         (ix86_expand_binop_builtin): Use ix86_fixup_binary_operands.
398         (ix86_expand_builtin): Merge CODE_FOR_sse2_maskmovdqu_rex64 and
399         CODE_FOR_sse2_maskmovdqu.  Special case SSE version of MASKMOVDQU
400         expansion.  Update names for sse{,2,3}_ prefixes.  Remove *maskncmp*
401         special cases.
402         * config/i386/i386.h (IX86_BUILTIN_CMPNGTSS): New.
403         (IX86_BUILTIN_CMPNGESS): New.
404         * config/i386/i386.md (UNSPEC_FIX_NOTRUNC): New.
405         (attr type): Add sselog1.
406         (attr unit, attr memory): Handle it.
407         (movti, movti_internal, movti_rex64): Move near other integer moves.
408         (movtf, movtf_internal): Move near other fp moves.
409         (SSEMODE, SSEMODEI, vec_setv2df, vec_extractv2df, vec_initv2df,
410         vec_setv4sf, vec_extractv4sf, vec_initv4sf, movv4sf, movv4sf_internal,
411         movv2df, movv2df_internal, mov<SSEMODEI>, mov<SSEMODEI>_internal, 
412         movmisalign<SSEMODE>, sse_movups_1, sse_movmskps, sse_movntv4sf,
413         sse_movhlps, sse_movlhps, sse_storehps, sse_loadhps, sse_storelps,
414         sse_loadlps, sse_loadss, sse_loadss_1, sse_movss, sse_storess,
415         sse_shufps, addv4sf3, vmaddv4sf3, subv4sf3, vmsubv4sf3, negv4sf2,
416         mulv4sf3, vmmulv4sf3, divv4sf3, vmdivv4sf3, rcpv4sf2, vmrcpv4sf2,
417         rsqrtv4sf2, vmrsqrtv4sf2, sqrtv4sf2, vmsqrtv4sf2, sse_andv4sf3,
418         sse_nandv4sf3, sse_iorv4sf3, sse_xorv4sf3, sse2_andv2df3, 
419         sse2_nandv2df3, sse2_iorv2df3, sse2_xorv2df3, sse2_andv2di3, 
420         sse2_nandv2di3, sse2_iorv2di3, sse2_xorv2di3, maskcmpv4sf3, 
421         vmmaskcmpv4sf3, sse_comi, sse_ucomi, sse_unpckhps, sse_unpcklps,
422         smaxv4sf3, vmsmaxv4sf3, sminv4sf3, vmsminv4sf3, cvtpi2ps, cvtps2pi,
423         cvttps2pi, cvtsi2ss, cvtsi2ssq, cvtss2si, cvtss2siq, cvttss2si,
424         cvttss2siq, addv2df3, vmaddv2df3, subv2df3, vmsubv2df3, mulv2df3,
425         vmmulv2df3, divv2df3, vmdivv2df3, smaxv2df3, vmsmaxv2df3, sminv2df3,
426         vmsminv2df3, sqrtv2df2, vmsqrtv2df2, maskcmpv2df3, vmmaskcmpv2df3,
427         sse2_comi, sse2_ucomi, sse2_movmskpd, sse2_pmovmskb, sse2_maskmovdqu,
428         sse2_maskmovdqu_rex64, sse2_movntv2df, sse2_movntv2di, sse2_movntsi,
429         cvtdq2ps, cvtps2dq, cvttps2dq, cvtdq2pd, cvtpd2dq, cvttpd2dq,
430         cvtpd2pi, cvttpd2pi, cvtpi2pd, cvtsd2si, cvtsd2siq, cvttsd2si,
431         cvttsd2siq, cvtsi2sd, cvtsi2sdq, cvtsd2ss, cvtss2sd, cvtpd2ps,
432         cvtps2pd, addv16qi3, addv8hi3, addv4si3, addv2di3, ssaddv16qi3,
433         ssaddv8hi3, usaddv16qi3, usaddv8hi3, subv16qi3, subv8hi3, subv4si3,
434         subv2di3, sssubv16qi3, sssubv8hi3, ussubv16qi3, ussubv8hi3, mulv8hi3,
435         smulv8hi3_highpart, umulv8hi3_highpart, sse2_umulsidi3,
436         sse2_umulv2siv2di3, sse2_pmaddwd, sse2_uavgv16qi3, sse2_uavgv8hi3,
437         sse2_psadbw, sse2_pinsrw, sse2_pextrw, sse2_pshufd, sse2_pshuflw,
438         sse2_pshufhw, eqv16qi3, eqv8hi3, eqv4si3, gtv16qi3, gtv8hi3, 
439         gtv4si3, umaxv16qi3, smaxv8hi3, uminv16qi3, sminv8hi3, ashrv8hi3,
440         ashrv4si3, lshrv8hi3, lshrv4si3, lshrv2di3, ashlv8hi3, ashlv4si3,
441         ashlv2di3, sse2_ashlti3, sse2_lshrti3, sse2_unpckhpd, sse2_unpcklpd,
442         sse2_packsswb, sse2_packssdw, sse2_packuswb, sse2_punpckhbw, 
443         sse2_punpckhwd, sse2_punpckhdq, sse2_punpcklbw, sse2_punpcklwd,
444         sse2_punpckldq, sse2_punpcklqdq, sse2_punpckhqdq, sse2_movupd,
445         sse2_movdqu, sse2_movdq2q, sse2_movdq2q_rex64, sse2_movq2dq, 
446         sse2_movq2dq_rex64, sse2_loadd, sse2_stored, sse2_storehpd,
447         sse2_loadhpd, sse2_storelpd, sse2_loadlpd, sse2_movsd, sse2_loadsd,
448         sse2_loadsd_1, sse2_storesd, sse2_shufpd, sse2_clflush, sse2_mfence,
449         mfence_insn, sse2_lfence, lfence_insn, mwait, monitor, addsubv4sf3,
450         addsubv2df3, haddv4sf3, haddv2df3, hsubv4sf3, hsubv2df3, movshdup,
451         movsldup, lddqu, loadddup, movddup): Move to sse.md.  Any with
452         non-optabs meanings renamed with an "sse{,2,3}_" prefix at the
453         same time.
454         (SSEPUSH, push<SSEPUSH>): Remove.
455         (MMXPUSH, push<MMXPUSH>): Remove.
456         (sse_movaps, sse_movaps_1, sse_movups): Remove.
457         (sse2_movapd, sse2_movdqa, sse2_movq): Remove.
458         (sse2_andti3, sse2_nandti3, sse2_iorti3, sse2_xorti3): Remove.
459         (sse_clrv4sf, sse_clrv2df, sse2_clrti): Remove.
460         (maskncmpv4sf3, vmmaskncmpv4sf3): Remove.
461         (maskncmpv2df3, vmmaskncmpv2df3): Remove.
462         (ashrv8hi3_ti, ashrv4si3_ti, lshrv8hi3_ti, lshrv4si3_ti): Remove.
463         (lshrv2di3_ti, ashlv8hi3_ti, ashlv4si3_ti, ashlv2di3_ti): Remove.
464         * config/i386/athlon.md (athlon_sselog_load): Handle sselog1.
465         (athlon_sselog_load_k8, athlon_sselog, athlon_sselog_k8): Likewise.
466         * config/i386/ppro.md (ppro_sse_div_V4SF_load): Fix memory attr.
467         (ppro_sse_log_V4SF_load): Similarly.  Handle sselog1.
468         (ppro_sse_log_V4SF): Handle sselog1.
469         * config/i386/predicates.md (const_0_to_1_operand): New.
470         (const_0_to_255_mul_8_operand): New.
471         (const_1_to_31_operand): Rename from const_int_1_31_operand.
472         (const_2_to_3_operand, const_4_to_7_operand): New.
473         * config/i386/sse.md: New file.
474         (SSEMODE12, SSEMODE24, SSEMODE124, SSEMODE248, ssevecsize): New.
475         (sse_movups): Rename from sse_movups_1.
476         (sse_loadlss): Rename from sse_loadss_1.
477         (andv4sf3, iorv4sf3, xorv4sf3, andv2df3): Remove the sse prefix
478         from the name.
479         (negv4sf2): Use ix86_expand_fp_absneg_operator.
480         (absv4sf2, negv2df, absv2df): New.
481         (addv4sf3): Add expander to call ix86_fixup_binary_operands_no_copy.
482         (subv4sf3, mulv4sf3, divv4sf3, smaxv4sf3, sminv4sf3, andv4sf3,
483         iorv4sf3, xorv4sf3, addv2df3, subv2df3, mulv2df3, divv2df3,
484         smaxv2df3, sminv2df3, andv2df3, iorv2df3, xorv2df3, mulv8hi3,
485         umaxv16qi3, smaxv8hi3, uminv16qi3, sminv8hi3): Likewise.
486         (sse3_addsubv4sf3): Model correctly.
487         sse3_haddv4sf3, sse3_hsubv4sf3, sse3_addsubv2df3, sse3_haddv2df3,
488         sse3_hsubv2df3, sse2_ashlti3, sse2_lshrti3): Likewise.
489         (sse_movhlps): Model with vec_select+vec_concat.
490         (sse_movlhps, sse_unpckhps, sse_unpcklps, sse3_movshdup, 
491         sse3_movsldup, sse_shufps, sse_shufps_1, sse2_unpckhpd, sse3_movddup,
492         sse2_unpcklpd, sse2_shufpd, sse2_shufpd_1, sse2_punpckhbw,
493         sse2_punpcklbw, sse2_punpckhwd, sse2_punpcklwd, sse2_punpckhdq,
494         sse2_punpckldq, sse2_punpckhqdq, sse2_punpcklqdq, sse2_pshufd,
495         sse2_pshufd_1, sse2_pshuflw, sse2_pshuflw_1, sse2_pshufhw, 
496         sse2_pshufhw_1): Likewise.
497         (neg<SSEMODEI>2, one_cmpl<SSEMODEI>2): New.
498         (add<SSEMODEI>3, sse2_ssadd<SSEMODE12>3, sse2_usadd<SSEMODE12>3,
499         sub<SSEMODEI>3, sse2_sssub<SSEMODE12>3, sse2_ussub<SSEMODE12>3,
500         ashr<SSEMODE24>3, lshr<SSEMODE248>3, sse2_eq<SSEMODE124>3,
501         sse2_gt<SSEMODDE124>3, and<SSEMODEI>3, sse_nand<SSEMODEI>3,
502         ior<SSEMODEI>3, xor<SSEMODEI>3): Macroize from existing patterns.       
503         (addv4sf3, sse_vmaddv4sf3, mulv4sf3, sse_vmmulv4sf3, smaxv4sf3,
504         sse_vmsmaxv4sf3, sminv4sf3, sse_vmsminv4sf3, addv2df3, sse2_vmaddv2df3,
505         mulv2df3, sse2_vmmulv2df3, smaxv2df3, sse2_vmsmaxv2df3, sminv2df3,
506         sse2_vmsminv2df3, umaxv16qi3, smaxv8hi3, uminv16qi3
507         sminv8hi3): Mark commutative
508         operands.  Use ix86_binary_operator_ok.
509         (sse_unpckhps, sse_unpcklps, sse2_packsswb, sse2_packssdw,
510         sse2_packuswb, sse2_punpckhbw, sse2_punpcklbw, sse2_punpckhwd,
511         sse2_punpcklwd, sse2_punpckhdq, sse2_punpckldq, sse2_punpckhqdq,
512         sse2_punpcklqdq): Allow operand2 in memory.
513         (sse_movhlps, sse_movlhps, sse2_unpckhpd, sse2_unpcklpd
514         sse2_movsd): Add memory alternatives.
515         (sse_storelps): Turn expander into an insn; split after reload.
516         (sse_storess, sse2_loadhpd, sse2_loadlpd): Add non-xmm inputs.
517         (sse2_storehpd, sse2_storelpd): Add non-xmm outputs.
518
519 2005-01-08  Eric Botcazou  <ebotcazou@libertysurf.fr>
520
521         * configure.ac (DWARF-2 debug_line): Use objdump.
522         * configure: Regenerate.
523
524 2005-01-08  Jeff Law  <law@redhat.com>
525             Diego Novillo  <dnovillo@redhat.com>
526
527         PR tree-optimization/18241
528         * tree-nrv.c (tree_nrv): Ignore volatile return values.
529         * tree-ssa-dse.c (dse_optimize_stmt): Do not optimize
530         statements with volatile operands.
531         * tree-ssa-operands.c (add_stmt_operand): Do add volatile
532         operands after marking a statement with has_volatile_ops.
533
534 2005-01-08  Roger Sayle  <roger@eyesopen.com>
535
536         * tree.c (int_fits_type_p): Always honor integer constant
537         TYPE_MIN_VALUE and TYPE_MAX_VALUE if they exist.
538
539 2005-01-08  Roger Sayle  <roger@eyesopen.com>
540
541         * ifcvt.c (find_if_case_1): Reinstate 2005-01-04 change, now that
542         the latent bug in rtl_delete_block has been resolved.
543
544 2005-01-08  Richard Sandiford  <rsandifo@redhat.com>
545
546         * config/mips/t-iris6 (MULTILIB_DIRNAMES): Use -mabi argument values.
547         (MULTILIB_OSDIRNAMES): Use the standard lib, lib32 and lib64.
548
549 2005-01-08  Richard Sandiford  <rsandifo@redhat.com>
550
551         * config/mips/t-slibgcc-irix (SHLIB_LINK): Install a copy of the
552         library as @multilib_dir@/$(SHLIB_SONAME).
553
554 2005-01-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
555
556         * configure.ac (HAVE_AS_OFFSETABLE_LO10): Fix typo.
557         * configure: Regenerate.
558
559 2005-01-07  Jakub Jelinek  <jakub@redhat.com>
560
561         * c-common.c (handle_mode_attribute): For ENUMERAL_TYPE, also copy
562         TYPE_MODE.
563
564 2005-01-07  David Edelsohn  <edelsohn@gnu.org>
565
566         PR target/13674
567         * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
568         Convert non-word aligned offset address using ld/std into
569         indirect address.
570
571 2005-01-07  Richard Henderson  <rth@redhat.com>
572
573         * config/i386/i386.md (sse_loadhps splitter): Fix operand number typo.
574
575 2005-01-07  Richard SAndiford  <rsandifo@redhat.com>
576
577         * tree.h (IS_EXPR_CODE_CLASS): Use a straight-forward range check.
578
579 2005-01-07  Jakub Jelinek  <jakub@redhat.com>
580
581         PR tree-optimization/19283
582         * fold-const.c (fold_widened_comparison): Return NULL if shorter_type
583         is not shorter than the original type.
584
585         PR rtl-optimization/19012
586         * config/i386/i386.md (addqi_1_slp): Set memory attribute.
587
588         PR rtl-optimization/18861
589         * cfgbuild.c (BLOCK_USED_BY_TABLEJUMP): Define.
590         (FULL_STATE): Define.
591         (mark_tablejump_edge): New function.
592         (purge_dead_tablejump_edges): New function.
593         (find_bb_boundaries): Use it.
594
595         PR tree-optimization/18828
596         * builtins.c (expand_builtin_next_arg): Remove argument and all
597         the argument checking.
598         (expand_builtin): Adjust caller.
599         (expand_builtin_va_start): Likewise.  Remove error for too many
600         arguments.
601         (fold_builtin_next_arg): Issue error for too many arguments.
602         After checking arguments, replace them with magic arguments that
603         prevent further checking of the args.
604
605 2005-01-06  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
606
607         * pa64-hpux.h (STARTFILE_SPEC): Fix typo in spec.
608
609 2005-01-06  Roger Sayle  <roger@eyesopen.com>
610
611         PR target/6077
612         * gcc.c (input_suffix_matches): Tweak the semantics of %{.s:...}
613         and %{.S:...} (and their negative variants) to test whether the
614         input file is assembler or pre-processed-assembler independent of
615         the actual filename extension.
616
617 2005-01-06  Roger Sayle  <roger@eyesopen.com>
618
619         * simplify-rtx.c (simplify_subreg): Simplify truncations of shifts
620         of sign or zero extended values.
621
622 2005-01-06  Geoffrey Keating  <geoffk@apple.com>
623
624         * c-cppbuiltin.c (builtin_define_float_constants): Set __*_EPSILON__
625         for IBM long double format correctly.
626
627 2005-01-06  Daniel Berlin <dberlin@dberlin.org>
628         
629         Fix PR tree-optimization/18792
630
631         * tree-data-ref.c (build_classic_dist_vector): Change first_loop
632         to first_loop_depth, and use loop depth instead of loop number.
633         (build_classic_dir_vector): Ditto.
634         (compute_data_dependences_for_loop): Use depth, not loop number.
635         * tree-loop-linear.c (try_interchange_loops): Use loop depth, not loop 
636         number. Pass in loops, instead of loop numbers.
637         (gather_interchange_stats): Ditto.
638         (linear_transform_loops): Ditto.
639
640 2005-01-06  Richard Sandiford  <rsandifo@redhat.com>
641
642         PR rtl-opt/13299
643         * loop.c (get_monotonic_increment, biased_biv_fits_mode_p,
644         biv_fits_mode_p, extension_within_bounds_p): New functions.
645         (check_ext_dependent_givs): Use them.
646
647 2005-01-06  Roger Sayle  <roger@eyesopen.com>
648
649         * cfgrtl.c (rtl_delete_block): A basic block may be followed by
650         more than one barrier, in which case we should delete them all.
651
652 2005-01-06  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de>
653
654         * gcc.c (process_command): Change year in 'gcc --version' to 2005.
655
656 2005-01-05  Daniel Berlin  <dberlin@dberlin.org>
657         
658         Fix PR middle-end/19286
659         Fix PR debug/19267
660         * dwarf2out.c (gen_subprogram_die): If we've already tried to
661         output this subprogram, simply ignore this attempt to do it again.
662         (add_abstract_origin_attribute): Don't abort trying to add the abstract
663         origin attribute if it's not possible.
664         (gen_block_die): Don't ignore subblocks of "unused" blocks.
665         (decls_for_scope): Ditto.
666         * gimple-low.c (mark_blocks_with_used_subblocks): Remove.
667         (mark_used_blocks): Don't call mark_blocks_with_used_subblocks.
668         
669 2005-01-05  Richard Henderson  <rth@redhat.com>
670
671         PR target/11327
672         * config/i386/i386.c (BUILTIN_DESC_SWAP_OPERANDS): New.
673         (bdesc_2arg): Use it.
674         (ix86_expand_binop_builtin): Force operands into registers
675         when optimizing.
676         (ix86_expand_unop_builtin, ix86_expand_unop1_builtin,
677         ix86_expand_sse_compare, ix86_expand_sse_comi, 
678         ix86_expand_builtin): Likewise.
679
680 2005-01-05  Richard Henderson  <rth@redhat.com>
681
682         * config/ia64/ia64.c (rtx_needs_barrier): Handle CONST_VECTOR
683         and VEC_SELECT.
684         * config/ia64/vect.md (mulv8qi3): Re-implement with mix_[rl].
685         (mulv4hi3): Set itanium_class mmmul.
686         (fpack_sfxf, fpack_xfsf, fpack_xfxf): Remove.
687         (fpack): Rename from fpack_sfsf.
688
689 2005-01-05  Richard Henderson  <rth@redhat.com>
690
691         PR rtl-opt/10692
692         * reload1.c (do_input_reload): Restrict the optimization deleteing
693         a previous output reload to RELOAD_FOR_INPUT.
694
695 2005-01-05  Steven Bosscher  <stevenb@suse.de>
696
697         * combine.c (expand_compound_operation)  <ZERO_EXTRACT>: Add
698         comment that we fall through after case.
699         (mark_used_regs_combine): Don't expect a SIGN_EXTRACT in a SET_DEST.
700         (distribute_links): Likewise.
701         * cse.c (cse_insn): Likewise.
702         * cselib.c (cselib_invalidate_mem): Likewise.
703         * df.c: Update comments at the top of the file.
704         (read_modify_subreg_p): Update comments here too.
705         (df_def_record_1): Don't expect a SIGN_EXTRACT in a SET_DEST.
706         * flow.c (mark_set_1): Likewise.
707         (mark_used_regs): Likewise.
708         * gcse.c (mems_conflict_for_gcse_p): Likewise.
709         (canon_list_insert): Likewise.
710         (mark_set): Likewise.
711         (try_replace_reg): Likewise.
712         (store_killed_in_insn): Likewise.
713         * loop.c (count_one_set): Likewise.
714         (basic_induction_var): Likewise.
715         * postreload-gcse.c (find_mem_conflicts): Likewise.
716         * postreload.c (reload_combine_note_store): Likewise.
717         (move2add_note_store): Likewise.
718         * reload.c (find_equiv_reg): Likewise.
719         (mark_referenced_resources): Likewise.
720         * rtlanal.c (set_noop_p): Likewise.
721         (note_stores): Likewise.
722         (note_uses): Likewise.
723         * sched-deps.c (sched_analyze_1): Likewise.
724         * sched-rgn.c (check_live_1): Likewise.
725         (update_live_1): Likewise.
726         * config/i860/i860.c: Likewise.
727
728         * rtl.dec (SIGN_EXTRACT): Document that this cannot appear as
729         an lvalue.
730         (ZERO_EXTRACT): Mention that this one can be an lvalue.
731
732         * doc/rtl.texi: Update documentation for bit-fields and SET.
733
734 2005-01-05  Roger Sayle  <roger@eyesopen.com>
735
736         * ifcvt.c (find_if_case_1): Revert 2005-01-04 change.
737
738 2005-01-05  Jan Hubicka  <jh@suse.cz>
739             Richard Henderson  <rth@redhat.com>
740
741         PR target/18910
742         * config/i386/i386.c (ix86_expand_move): Handle tls symbols 
743         with an offset.
744
745 2005-01-05  Richard Henderson  <rth@redhat.com>
746
747         PR target/12902
748         * config/i386/i386.md (sse_movhps, sse_movlps): Remove.
749         (sse_shufps): Change operand 3 to const_int_operand.
750         (sse2_storelps): Fix typo in template.
751         (sse_storehps, sse_loadhps, sse_storelps, sse_loadlps): New.
752         * config/i386/i386.c (ix86_expand_vector_move_misalign): Use them.
753         (ix86_expand_builtin): Likewise.
754
755 2005-01-05  Julian Brown  <julian@codesourcery.com>
756
757         * config/arm/arm.c (arm_return_in_memory): Treat complex types
758         as aggregates for AAPCS ABIs.
759
760 2005-01-05  Stan Shebs  <shebs@apple.com>
761
762         * unwind-dw2-fde-darwin.c (examine_objects): Use 64-bit
763         Mach-O getters if ppc64.
764         * config/darwin.c (darwin_asm_output_dwarf_delta): Obey
765         size argument.
766         * config/darwin.h (ASM_PREFERRED_EH_DATA_FORMAT): Use
767         signed four-byte field for global code case.
768         (STARTFILE_SPEC): Avoid crt2.o for 64-bit compilation.
769
770 2005-01-05  Roger Sayle  <roger@eyesopen.com>
771
772         PR middle-end/19100
773         * c-common.c: Include real.h.
774         (c_common_truthvalue_conversion): Avoid destructively modifying expr.
775         Correctly handle TREE_CONSTANT_OVERFLOW for INTEGER_CST.
776         Correctly handle TREE_CONSTANT_OVERFLOW and NaNs for REAL_CST.
777         * Makefile.in (c-common.o): Update dependencies.
778
779 2005-01-05  Joseph S. Myers  <joseph@codesourcery.com>
780
781         * c-parse.in (asm_string): Add trailing semicolon.
782
783 2005-01-05  Joseph S. Myers  <joseph@codesourcery.com>
784
785         * c-parse.in (asm_string): New.  Don't allow wide strings in
786         'asm'.
787         (simple_asm_expr, asm_argument, asm_operand, asm_clobbers): Use
788         asm_string instead of STRING.
789
790 2005-01-05  Joseph S. Myers  <joseph@codesourcery.com>
791
792         * c-typeck.c (constructor_no_implicit): Remove.
793         (set_designator, process_init_element): Don't check
794         constructor_no_implicit.
795
796 2005-01-05  J"orn Rennecke <joern.rennecke@st.com>
797             Kaz Kojima  <kkojima@gcc.gnu.org>
798
799         PR target/16482
800         * lcm.c (create_pre_exit): New.
801         (optimize_mode_switching): In MODE_ENTRY / MODE_EXIT case, set
802         ENTRY_EXIT_EXTRA to 3.  Use create_pre_exit.
803
804 2004-01-05  Richard Earnshaw  <rearnsha@arm.com>
805
806         * arm.h (TARGET_OPTIONS): Correctly record -mhard-float and
807         -msoft-float in target_float_switch.
808         * arm.c (arm_override_options): Fix processing of target_float_switch.
809
810 2004-01-05  Richard Earnshaw  <rearnsha@arm.com>
811
812         * arm/vfp.md (arm_movsi_vfp): Hide VFP register classes from register
813         preferencing.
814
815 2004-01-05  Uros Bizjak  <uros@kss-loka.si>
816
817         * doc/invoke.texi (Intel 386 and AMD x86-64 Options):
818         Replace i387 with 'i386 compiler' in -mfpmath=sse option.
819
820 2005-01-04  Roger Sayle  <roger@eyesopen.com>
821
822         * ifcvt.c (find_if_case_1): Avoid creating an empty forwarder block,
823         if deleting the then-block allows the test-block to fallthru to the
824         else-block.
825
826 2005-01-04  Andrew Pinski  <pinskia@physics.uc.edu>
827
828         PR c/19152
829         * c-decl.c (diagnose_mismatched_decls): Accept "extern inline" declared
830         after the full declaration if the are in two different TUs.
831
832 2005-01-04  Richard Henderson  <rth@redhat.com>
833
834         PR tree-opt/19158
835         * tree-sra.c (generate_one_element_init): Just
836         call gimplify_and_add.
837         (generate_element_init): Record the
838         new referenced variables and mark them for renaming
839         and split out to ...
840         (generate_element_init_1): This.
841         (scalarize_init): Don't call push_gimplify_context/
842         pop_gimplify_context.
843
844 2005-01-04  Geoffrey Keating  <geoffk@apple.com>
845
846         * toplev.c (get_src_pwd): Handle failure of getpwd().
847
848 2005-01-04  Roger Sayle  <roger@eyesopen.com>
849
850         * fold-const.c (fold_single_bit_test): Delete unreachable handling
851         of TRUTH_NOT_EXPR.
852         (fold): Don't call fold_single_bit_test with a TRUTH_NOT_EXPR, as
853         all the cases handled by it are inverted by invert_truthvalue.
854
855 2005-01-04  Eric Botcazou  <ebotcazou@libertysurf.fr>
856
857         * config/sparc/sparc.md (save_register_windowdi): Add missing mode.
858         (save_register_windowsi): Likewise.
859
860 2005-01-04  Richard Henderson  <rth@redhat.com>
861
862         * tree-mudflap.c (mf_varname_tree): Fix thinko setting declname.
863
864 2005-01-04  Uros Bizjak  <uros@kss-loka.si>
865
866         PR middle-end/17767
867         * cse.c (fold_rtx) [RTX_COMPARE, RTX_COMM_COMPARE]: Don't attempt
868         any simplifications of vector mode comparison operators.
869         * simplify-rtx.c (simplify_relational_operation): Fix variable name.
870
871 2005-01-04  Paolo Bonzini  <bonzini@gnu.org>
872             Devang Patel  <dpatel@apple.com>
873
874         PR tree-optimization/18308
875         * tree-if-conv.c (add_to_dst_predicate_list): Gimplify
876         the operands before creating a new expression.
877         * dojump.c (do_jump): Make drop_through_label available
878         for all cases.  Add expansion of COND_EXPR.
879
880 2005-01-04  Ira Rosen  <irar@il.ibm.com>
881
882         * tree-vectorizer.c (vect_analyze_offset_expr): Test for
883         INTEGER_CST instead of TREE_CONSTANT.
884         (vect_gen_niters_for_prolog_loop): Test for INTEGER_CST
885         instead of TREE_CONSTANT.
886         (vect_analyze_pointer_ref_access): Test for INTEGER_CST
887         instead of TREE_CONSTANT.
888
889 2005-01-04  Eric Botcazou  <ebotcazou@libertysurf.fr>
890
891         * tree-eh.c (replace_goto_queue): Return early if the queue is empty.
892
893 2005-01-04  Uros Bizjak  <uros@kss-loka.si>
894
895         PR target/19240
896         * config/i386/i386.md (*fop_df_1_i387): Disable for TARGET_SSE_MATH.
897         (*fop_df_1_i387): Disable for (TARGET_SSE2 && TARGET_SSE_MATH).
898
899 2005-01-03  Richard Henderson  <rth@redhat.com>
900
901         * fold-const.c (force_fit_type): Cope with types larger than 2 HWI.
902         (fold_convert_const_int_from_int, fold_convert_const_int_from_real,
903         fold_convert_const_real_from_real): Split out from ...
904         (fold_convert_const): ... here.
905
906 2005-01-03  Richard Henderson  <rth@redhat.com>
907
908         PR target/19235
909         * config/i386/i386.md (movdi_2): Separate SSE1 and SSE2 alternatives.
910         (mov<MMXMODEI>_internal): Likewise.
911         (movdf_nointeger): Prefer Y while not preferring, but allowing, x.
912         Add V2SF case; use it for SSE1; don't use TI.
913         (movdf_integer): Likewise.
914         (mov<SSEMODEI>_internal, movti_internal): Force V4SF for SSE1.
915
916 2005-01-03  Ira Rosen  <irar@il.ibm.com>
917
918         * tree-vectorizer.c (vect_strip_conversions): New function.
919         (vect_analyze_offset_expr): Call vect_strip_conversions. Add
920         check for binary class. 
921
922 2005-01-03  Daniel Berlin  <dberlin@dberlin.org>
923
924         Fix PR debug/17924
925         Fix PR debug/19191
926         * dwarf2out.c (block_ultimate_origin): Follow decl origin if origin
927         is a decl.
928         * gimple-low.c (mark_blocks_with_used_vars): New function.
929         (mark_blocks_with_used_subblocks): Ditto.
930         (mark_used_blocks): Ditto.
931         (pass_mark_used_blocks): New pass.
932         * tree-inline.c: Include debug.h.
933         (expand_call_inline): Call outlining_inline_function here.
934         * tree-optimize.c (init_tree_optimization_passes): Add
935         pass_mark_used_blocks. 
936         * tree-pass.h (pass_mark_used_blocks): New.
937         * Makefile.in (tree-inline.o): Add debug.h dependency.
938
939 2005-01-03  Geoffrey Keating  <geoffk@apple.com>
940
941         * config/darwin.c (darwin_handle_weak_import_attribute): Permit
942         VAR_DECLs to have weak_import attribute.
943
944         * config/rs6000/darwin-fallback.c: Use 'ucontext_t' rather than
945         'struct ucontext'.
946
947 2004-01-03  Steven Bosscher  <stevenb@suse.de>
948
949         * passes.c (rest_of_compilation): Don't run regmove if only
950         flag_expensive_optimizations, require flag_regmove instead.
951
952 2005-01-03  Eric Botcazou  <ebotcazou@libertysurf.fr>
953
954         * config/sparc/litecoff.h (TARGET_OS_CPP_BUILTINS): Do not
955         register "sparc".
956         * config/sparc/sysv4-only.h (TARGET_OS_CPP_BUILTINS): Likewise.
957         * config/sparc/rtemself.h (TARGET_SUB_OS_CPP_BUILTINS): Likewise.
958         * config/sparc/sol2-64.h (TARGET_SUB_OS_CPP_BUILTINS): Delete.
959         * config/sparc/sp64-elf.h (TARGET_SUB_OS_CPP_BUILTINS): Likewise.
960
961 2005-01-03  Richard Henderson  <rth@redhat.com>
962
963         * config/ia64/ia64.c (TARGET_VECTOR_MODE_SUPPORTED_P): New.
964         (ia64_const_ok_for_letter_p): New.
965         (ia64_const_double_ok_for_letter_p): New.
966         (ia64_extra_constraint): New.
967         (ia64_expand_vecint_compare): New.
968         (ia64_expand_vcondu_v2si): New.
969         (ia64_expand_vecint_cmov): New.
970         (ia64_expand_vecint_minmax): New.
971         (ia64_print_operand): Add 'v'.
972         (ia64_preferred_reload_class): New.
973         (ia64_vector_mode_supported_p): New.
974         * config/ia64/ia64.h (UNITS_PER_SIMD_WORD): New.
975         (PREFERRED_RELOAD_CLASS): Move to function.
976         (CONST_OK_FOR_LETTER_P): Move to function.
977         (CONST_DOUBLE_OK_FOR_LETTER_P): Move to function.
978         (CONSTRAINT_OK_FOR_Q, CONSTRAINT_OK_FOR_R): Remove.
979         (CONSTRAINT_OK_FOR_S, CONSTRAINT_OK_FOR_T): Remove.
980         (EXTRA_CONSTRAINT): Move to function.
981         * config/ia64/ia64.md: Include vect.md.
982         (itanium_class): Add mmalua.
983         (type): Handle it.
984         * config/ia64/itanium1.md (1_mmalua): New.  Add it to bypasses.
985         (1b_mmalua): New.
986         * config/ia64/itanium2.md (2_mmalua, 2b_mmalua): Similarly.
987         * config/ia64/predicates.md (gr_reg_or_0_operand): Accept any
988         CONST0_RTX.
989         (const_int_2bit_operand): New.
990         (fr_reg_or_0_operand): New.
991         * config/ia64/ia64-modes.def: Add vector modes.
992         * config/ia64/ia64-protos.h: Update.
993         * config/ia64/vect.md: New file.
994
995 2005-01-03  Richard Henderson  <rth@redhat.com>
996
997         * simplify-rtx.c (simplify_binary_operation): Handle VEC_CONCAT.
998
999 2005-01-03  Uros Bizjak  <uros@kss-loka.si>
1000
1001         PR target/19236
1002         * config/i386/i386.c (log1psf2): Change mode of operands[0,1]
1003         to SFmode.
1004         (log1pdf2): Change mode of operands[0,1] to DFmode.
1005
1006 2005-01-03  Eric Botcazou  <ebotcazou@libertysurf.fr>
1007
1008         * config/sparc/sparc.h (SPARC_RELAXED_ORDERING): Define to false.
1009         * config/sparc/linux.h (SPARC_RELAXED_ORDERING): Define to true.
1010         * config/sparc/linux64.h (SPARC_RELAXED_ORDERING): Likewise.
1011         * config/sparc/sparc.c (TARGET_RELAXED_ORDERING): Define to
1012         SPARC_RELAXED_ORDERING.
1013
1014 2005-01-03  Richard Henderson  <rth@redhat.com>
1015             Uros Bizjak  <uros@kss-loka.si>
1016
1017         PR target/14631
1018         * config/i386/i386.c (ix86_expand_builtin): [IX86_BUILTIN_PINSRW,
1019         IX86_BUILTIN_PINSRW128]: Fix wrong selector range in error message.
1020         * config/i386/i386.md (mmx_pinsrw, sse2_pinsrw): Fix selector
1021         handling.
1022         (*mmx_pinsrw, *sse2_pinsrw): New patterns.
1023         * config/i386/i386/predicates.md (const_pow2_1_to_8_operand,
1024         const_pow2_1_to_128_operand): New predicates.
1025
1026 2005-01-02  Greg McGary  <greg@mcgary.org>
1027
1028         * tree-mudflap.c (mf_varname_tree): decl_printable_name handles
1029         anonymous decls.
1030         (mf_xform_derefs_1) [RESULT_DECL, STRING_CST]: Handle as innermost
1031         object.  [ptr_type]: Remove unused variable.
1032         Remember nearest addressable array-element or record-component
1033         when checking bitfield components.  Tolerate empty BIND_EXPR.
1034
1035 2005-01-01  Richard Henderson  <rth@redhat.com>
1036
1037         * tree-vectorizer.c (vect_analyze_offset_expr): Strip conversions
1038         that don't narrow the value.  Fail for other conversions.
1039
1040 2005-01-01  Richard Henderson  <rth@redhat.com>
1041
1042         PR c/19031
1043         * c-decl.c (pop_file_scope): Call maybe_apply_pending_pragma_weaks.
1044         * c-lang.c (finish_file): Don't do it here.
1045         * objc/objc-act.c (objc_finish_file): Likewise.
1046
1047         * cgraph.c (decl_assembler_name_equal): New.
1048         (cgraph_node_for_asm, cgraph_varpool_node_for_asm): New.
1049         (cgraph_varpool_node): Actually link up cgraph_varpool_nodes.
1050         * cgraph.h (struct cgraph_varpool_node): Add next.
1051         (cgraph_node_for_asm, cgraph_varpool_node_for_asm): Declare.
1052         * varasm.c (assemble_alias): Mark the target as needed.
1053
1054 2005-01-01  Andrew Pinski  <pinskia@physics.uc.edu>
1055
1056         PR middle-end/19221
1057         * function.c (get_arg_pointer_save_area): Use entry_of_function
1058         instead of get_insns.
1059
1060 2005-01-01  Roger Sayle  <roger@eyesopen.com>
1061             Andrew Pinski  <pinskia@physics.uc.edu>
1062             James E. Wilson  <wilson@specifixinc.com>
1063
1064         PR rtl-optimization/12092
1065         * loop.c (emit_prefetch_instructions): Do nothing if PREFETCH_BLOCK
1066         is zero.
1067
1068 2005-01-01  Roger Sayle  <roger@eyesopen.com>
1069             Olivier Hainque  <hainque@act-europe.fr>
1070
1071         * tree.c (int_fits_type_p): A narrower type always fits in a
1072         wider one, except for negative values into unsigned types.
1073
1074 2005-01-01  Roger Sayle  <roger@eyesopen.com>
1075
1076         * tree.c (int_fits_type_p): Compare the result of force_fit_type
1077         with the original constant rather than require TREE_OVERFLOW.
1078
1079 2005-01-01  Steven Bosscher  <stevenb@suse.de>
1080
1081         PR middle-end/17544
1082         * c-decl.c (finish_function): If compiling C99, annotate the
1083         compiler generated return with the current file name and line 0.
1084         * tree-cfg.c (remove_useless_stmts_warn_notreached): Only warn if
1085         the source line is greater than 0.
1086         (remove_bb): Likewise.
1087
1088 See ChangeLog.12 for earlier changes.