OSDN Git Service

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