OSDN Git Service

PR target/33062
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-09-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2
3         PR target/33062
4         * pa.c (function_value): Use GET_MODE_BITSIZE instead of TYPE_PRECISION.
5
6 2007-09-15  Dorit Nuzman  <dorit@il.ibm.com>
7
8         * tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if 
9         the VEC is not NULL.
10         (vectorizable_type_demotion, vectorizable_type_promotion): Check that 
11         get_vectype_for_scalar_type succeeded.
12         (vectorizable_conversion): Likewise.
13
14 2007-09-14  Jan Hubicka  <jh@suse.cz>
15
16         * config/i386/i386.md (*floatdi<mode>2_i387): Guard against
17         TARGET_64BIT.
18
19 2007-09-14  Uros Bizjak  <ubizjak@gmail.com>
20
21         PR target/33438
22         * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary register
23         when operands[2] equals operands[1].
24         (remainderxf3): Ditto.
25
26 2007-09-14  Sandra Loosemore  <sandra@codesourcery.com>
27             Nigel Stephens  <nigel@mips.com>
28
29         * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
30         * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
31         (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
32         declaration.
33         (_Unwind_ForcedUnwind): Likewise.
34         (_Unwind_Resume): Likewise.
35         (_Unwind_Resume_or_Rethrow): Likewise.
36         (_Unwind_Backtrace): Likewise.
37         (_Unwind_SjLj_RaiseException): Likewise.
38         (_Unwind_SjLj_ForcedUnwind): Likewise.
39         (_Unwind_SjLj_Resume): Likewise.
40         (_Unwind_SjLj_Resume_or_Rethrow): Likewise.
41         * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
42         to definition.
43         (_Unwind_ForcedUnwind): Likewise.
44         (_Unwind_Resume): Likewise.
45         (_Unwind_Resume_or_Rethrow): Likewise.
46         (_Unwind_Backtrace): Likewise.
47         * unwind-compat.c (_Unwind_Backtrace): Likewise.
48         (_Unwind_ForcedUnwind): Likewise.
49         (_Unwind_RaiseException): Likewise.
50         (_Unwind_Resume): Likewise.
51         (_Unwind_Resume_or_Rethrow): Likewise.
52
53         * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
54         nomips16 mode when IN_LIBGCC2 with hard float.
55
56 2007-09-14  Richard Sandiford  <rsandifo@nildram.co.uk>
57
58         * config/mips/sdemtk.opt: Update to GPLv3.
59         * config/mips/sdemtk.h: Likewise.
60
61 2007-09-14  Nigel Stephens  <nigel@mips.com>
62
63         * config.gcc (mips*-*-linux*): Recognise mipsisa32r2 and set
64         MIPS_ISA_DEFAULT appropriately.  Don't make soft-float the default
65         for mipsisa32-*-linux*.
66
67 2007-09-14  Nigel Stephens  <nigel@mips.com>
68             David Ung  <davidu@mips.com>
69             Thiemo Seufer  <ths@mips.com>
70             Richard Sandiford  <richard@codesourcery.com>
71
72         * config.gcc (mips*-sde-elf*): Add support for the SDE C libraries.
73         * configure.ac: Add a mipssde threading type.
74         * configure: Regenerate.
75         * config/mips/sdemtk.h: New file.
76         * config/mips/t-sdemtk: Likewise.
77         * config/mips/sdemtk.opt: Likewise.
78         * gthr-mipssde.h: Likewise.
79         * config/mips/sde.h (FUNCTION_PROFILER): Move to config/mips/sdemtk.h.
80         * config/mips/mips.h (MIPS_SAVE_REG_FOR_PROFILING_P): New macro.
81         (MIPS_ICACHE_SYNC): New macro, split from ...
82         * config/mips/mips.md (clear_cache): ...here.
83         * config/mips/mips.c (mips_save_reg_p): Check
84         MIPS_SAVE_REG_FOR_PROFILING_P on profiled functions.
85         (build_mips16_function_stub): Use targetm.strip_name_encoding.
86         (build_mips16_call_stub): Likewise.
87
88 2007-09-14  Richard Sandiford  <richard@codesourcery.com>
89
90         * Makefile.in (stmp-int-hdrs): Depend on fixinc_list.
91
92 2007-09-14  Jakub Jelinek  <jakub@redhat.com>
93
94         PR target/32337
95         * config/ia64/ia64.c (find_gr_spill): Don't decrement
96         current_frame_info.n_local_regs.  Don't return emitted local
97         regs.
98         (ia64_compute_frame_size): Improve unwind hack to put
99         RP, PFS, FP in that order by allowing some of the registers
100         been already emitted, as long as they are emitted to the
101         desired register.
102
103 2007-09-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
104
105         * config/spu/vmx2spu.h (vec_extract, vec_insert, vec_lvlx,
106         vec_lvlxl, vec_lvrx, vec_lvrxl, vec_promote, vec_splats,
107         vec_stvlx, vec_stvlxl, vec_stvrx, vec_stvrxl): New intrinsics.
108
109 2007-09-13  Eric Christopher  <echristo@apple.com>
110             Kenneth Zadeck <zadeck@naturalbridge.com>
111
112         * dse.c (find_shift_sequence): New function.
113         (replace_read): Add case to remove read if it requires shift.
114         * config/i386/i386.c (ix86_expand_prologue): Fixed typo in comment.
115         
116 2007-09-13  Tom Tromey  <tromey@redhat.com>
117
118         * c-common.c (fname_as_string): Update.
119         * c-parser.c (c_parser) <lex_untranslated_string>: New field.
120         (c_lex_one_token): Update.  Add 'parser' argument.
121         (c_parser_simple_asm_expr): Update.
122         (c_parser_attributes): Update.
123         (c_parser_asm_statement): Update.
124         (c_parser_asm_operands): Update.
125         (c_parser_peek_token): Update.
126         (c_parser_peek_2nd_token): Update.
127         * c-lex.c (c_lex_string_translate): Remove.
128         (c_lex_return_raw_strings): Likewise.
129         (c_lex_with_flags): Added 'lex_flags' argument.
130         (lex_string): Added 'translate' argument.
131         * c-pragma.h (c_lex_with_flags): Update.
132         (c_lex_string_translate, c_lex_return_raw_strings): Remove.
133         (C_LEX_STRING_NO_TRANSLATE): New define.
134         (C_LEX_RAW_STRINGS): Likewise.
135
136 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
137
138         From Jie Zhang:
139         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES,
140         BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40,
141         BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU.
142         (bfin_init_builtins): Initialize __builtin_bfin_ones,
143         __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16,
144         __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32,
145         __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub,
146         __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40,
147         __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16.
148         (bdesc_1arg): Add __builtin_bfin_ones.
149         (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40,
150         __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40,
151         and __builtin_bfin_csqu_fr16.
152         * config/bfin/bfin.md (UNSPEC_ONES): New constant.
153         (ones): New define_insn.
154         (ssaddhi3_parts): New define_insn.
155         (sssubhi3_parts): New define_insn.
156         (flag_mulhi_parts): New define_insn.
157
158 2007-09-13  Seongbae Park <seongbae.park@gmail.com>
159
160         * common.opt (femit-class-debug-always): Turn off by default.
161
162 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
163
164         * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.
165         * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them.
166
167 2007-09-13  James E. Wilson  <wilson@specifix.com>
168
169         PR tree-optimization/33389
170         * tree-ssa-operands.c (append_vuse): If ann->in_vdef_list true,
171         then set build_loads before returning.
172
173 2007-09-13  Sandra Loosemore  <sandra@codesourcery.com>
174             David Ung  <davidu@mips.com>
175
176         * config/mips/mips.h (ASM_OUTPUT_REG_PUSH): Replace {d}subu with
177         {d}addiu and a negative immediate such that it works with MIPS16
178         instructions.
179         
180 2007-09-13  H.J. Lu  <hongjiu.lu@intel.com>
181
182         PR bootstrap/33418
183         * configure.ac (ld_vers): Support Linux linker.
184         * configure: Regenerated.
185
186 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
187             Sandra Loosemore <sandra@codesourcery.com>
188
189         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Delete.
190         (SYMBOL_REF_MIPS16_FUNC_P): Delete.
191         * config/mips/mips.c (mips_attribute_table): Turn mips16 and
192         nomips16 into decl attributes.
193         (TARGET_INSERT_ATTRIBUTES): Override.
194         (TARGET_MERGE_DECL_ATTRIBUTES): Likewise.
195         (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Always return true.
196         (mips_mips16_type_p, mips_nomips16_type_p): Delete in favor of...
197         (mips_mips16_decl_p, mips_nomips16_decl_p): ...these new functions.
198         (mips_comp_type_attributes): Remove mips16 and nomips16 handling.
199         (mips_use_mips16_mode_p): Reimplement as a function that takes
200         a decl and considers only decl attributes.  If the decl is nested
201         function, use its parent attributes.
202         (mips_function_ok_for_sibcall): Use mips_use_mips16_mode_p
203         instead of SYMBOL_REF_MIPS16_FUNC_P.
204         (mips_set_mips16_mode): Move call to sorry here from old
205         mips_use_mips16_mode_p.
206         (mflip_mips16_entry): New structure.
207         (mflip_mips16_htab): New variable.
208         (mflip_mips16_htab_hash, mflip_mips16_htab_eq): New functions.
209         (mflip_mips16_use_mips16_p, mips_insert_attributes): Likewise.
210         (mips_merge_decl_attributes): New function.
211         (mips_set_current_function): Reinstate call to mips_set_mips16_mode.
212         Use mips_use_mips16_mode_p.
213         (mips_output_mi_thunk): Use mips_use_mips16_mode_p instead of
214         SYMBOL_REF_MIPS16_FUNC_P.
215         (mips_encode_section_info): Don't set SYMBOL_FLAG_MIPS16_FUNC.
216
217 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
218
219         * c-parser.c (c_parser_struct_declaration): Check for a null return.
220
221 2007-09-13  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
222
223         PR driver/33309
224         * gcc.c (xputenv): Make argument const, and use CONST_CAST.
225
226 2007-09-12  Michael Meissner  <michael.meissner@amd.com>
227             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
228             Tony Linthicum  <tony.linthicum@amd.com>
229
230         * tree.h (function_args_iterator): New type to iterate over
231         function arguments.
232         (FOREACH_FUNCTION_ARGS_PTR): Iterator macros for iterating over
233         function arguments providing a pointer to the argument.
234         (FOREACH_FUNCTION_ARGS): Iterator macros for iterating over
235         function arguments providing the argument.
236         (function_args_iter_init): Inline function to initialize
237         function_args_iterator.
238         (function_args_iter_cond_ptr): Inline function to return the next
239         pointer to hold the argument.
240         (function_args_iter_cond): Inline function to return the next
241         argument.
242         (function_args_iter_cond_next): Advance the function args
243         iterator.
244         (stdarg_p): New function, return true if variable argument
245         function.
246         (prototype_p): New function, return true if function is
247         prototyped.
248         (function_args_count): New function, count the number of arguments
249         of a function.
250
251         * tree.c (stdarg_p): New function, return true if variable
252         argument function.
253         (prototype_p): New function, return true if function is
254         prototyped.
255
256         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
257         (TARGET_ROUND): New macro for the round/ptest instructions which
258         are shared between SSE4.1 and SSE5.
259         (OPTION_MASK_ISA_ROUND): Ditto.
260         (OPTION_ISA_ROUND): Ditto.
261         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
262         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
263
264         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
265         (-mfused-madd): New switch to give users control over whether the
266         compiler optimizes to use the multiply/add SSE5 instructions.
267
268         * config/i386/i386.c (m_AMD_MULTIPLE): Rename from
269         m_ATHLON_K8_AMDFAM10, and change all uses.
270         (enum pta_flags): Add PTA_SSE5.
271         (ix86_handle_option): Turn off 3dnow if -msse5.
272         (override_options): Add SSE5 support.
273         (print_operand): %Y prints comparison codes for SSE5 com/pcom
274         instructions.
275         (ix86_expand_sse_movcc): Add SSE5 support.
276         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
277         vector type to the next largest size.
278         (ix86_expand_sse5_pack): New function to use pperm to pack a
279         vector type to the next smallest size.
280         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
281         (IX86_BUILTIN_FMADDSD): Ditto.
282         (IX86_BUILTIN_FMADDPS): Ditto.
283         (IX86_BUILTIN_FMADDPD): Ditto.
284         (IX86_BUILTIN_FMSUBSS): Ditto.
285         (IX86_BUILTIN_FMSUBSD): Ditto.
286         (IX86_BUILTIN_FMSUBPS): Ditto.
287         (IX86_BUILTIN_FMSUBPD): Ditto.
288         (IX86_BUILTIN_FNMADDSS): Ditto.
289         (IX86_BUILTIN_FNMADDSD): Ditto.
290         (IX86_BUILTIN_FNMADDPS): Ditto.
291         (IX86_BUILTIN_FNMADDPD): Ditto.
292         (IX86_BUILTIN_FNMSUBSS): Ditto.
293         (IX86_BUILTIN_FNMSUBSD): Ditto.
294         (IX86_BUILTIN_FNMSUBPS): Ditto.
295         (IX86_BUILTIN_FNMSUBPD): Ditto.
296         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
297         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
298         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
299         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
300         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
301         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
302         (IX86_BUILTIN_PPERM): Ditto.
303         (IX86_BUILTIN_PERMPS): Ditto.
304         (IX86_BUILTIN_PERMPD): Ditto.
305         (IX86_BUILTIN_PMACSSWW): Ditto.
306         (IX86_BUILTIN_PMACSWW): Ditto.
307         (IX86_BUILTIN_PMACSSWD): Ditto.
308         (IX86_BUILTIN_PMACSWD): Ditto.
309         (IX86_BUILTIN_PMACSSDD): Ditto.
310         (IX86_BUILTIN_PMACSDD): Ditto.
311         (IX86_BUILTIN_PMACSSDQL): Ditto.
312         (IX86_BUILTIN_PMACSSDQH): Ditto.
313         (IX86_BUILTIN_PMACSDQL): Ditto.
314         (IX86_BUILTIN_PMACSDQH): Ditto.
315         (IX86_BUILTIN_PMADCSSWD): Ditto.
316         (IX86_BUILTIN_PMADCSWD): Ditto.
317         (IX86_BUILTIN_PHADDBW): Ditto.
318         (IX86_BUILTIN_PHADDBD): Ditto.
319         (IX86_BUILTIN_PHADDBQ): Ditto.
320         (IX86_BUILTIN_PHADDWD): Ditto.
321         (IX86_BUILTIN_PHADDWQ): Ditto.
322         (IX86_BUILTIN_PHADDDQ): Ditto.
323         (IX86_BUILTIN_PHADDUBW): Ditto.
324         (IX86_BUILTIN_PHADDUBD): Ditto.
325         (IX86_BUILTIN_PHADDUBQ): Ditto.
326         (IX86_BUILTIN_PHADDUWD): Ditto.
327         (IX86_BUILTIN_PHADDUWQ): Ditto.
328         (IX86_BUILTIN_PHADDUDQ): Ditto.
329         (IX86_BUILTIN_PHSUBBW): Ditto.
330         (IX86_BUILTIN_PHSUBWD): Ditto.
331         (IX86_BUILTIN_PHSUBDQ): Ditto.
332         (IX86_BUILTIN_PROTB): Ditto.
333         (IX86_BUILTIN_PROTW): Ditto.
334         (IX86_BUILTIN_PROTD): Ditto.
335         (IX86_BUILTIN_PROTQ): Ditto.
336         (IX86_BUILTIN_PROTB_IMM): Ditto.
337         (IX86_BUILTIN_PROTW_IMM): Ditto.
338         (IX86_BUILTIN_PROTD_IMM): Ditto.
339         (IX86_BUILTIN_PROTQ_IMM): Ditto.
340         (IX86_BUILTIN_PSHLB): Ditto.
341         (IX86_BUILTIN_PSHLW): Ditto.
342         (IX86_BUILTIN_PSHLD): Ditto.
343         (IX86_BUILTIN_PSHLQ): Ditto.
344         (IX86_BUILTIN_PSHAB): Ditto.
345         (IX86_BUILTIN_PSHAW): Ditto.
346         (IX86_BUILTIN_PSHAD): Ditto.
347         (IX86_BUILTIN_PSHAQ): Ditto.
348         (IX86_BUILTIN_FRCZSS): Ditto.
349         (IX86_BUILTIN_FRCZSD): Ditto.
350         (IX86_BUILTIN_FRCZPS): Ditto.
351         (IX86_BUILTIN_FRCZPD): Ditto.
352         (IX86_BUILTIN_CVTPH2PS): Ditto.
353         (IX86_BUILTIN_CVTPS2PH): Ditto.
354         (IX86_BUILTIN_COMEQSS): Ditto.
355         (IX86_BUILTIN_COMNESS): Ditto.
356         (IX86_BUILTIN_COMLTSS): Ditto.
357         (IX86_BUILTIN_COMLESS): Ditto.
358         (IX86_BUILTIN_COMGTSS): Ditto.
359         (IX86_BUILTIN_COMGESS): Ditto.
360         (IX86_BUILTIN_COMUEQSS): Ditto.
361         (IX86_BUILTIN_COMUNESS): Ditto.
362         (IX86_BUILTIN_COMULTSS): Ditto.
363         (IX86_BUILTIN_COMULESS): Ditto.
364         (IX86_BUILTIN_COMUGTSS): Ditto.
365         (IX86_BUILTIN_COMUGESS): Ditto.
366         (IX86_BUILTIN_COMORDSS): Ditto.
367         (IX86_BUILTIN_COMUNORDSS): Ditto.
368         (IX86_BUILTIN_COMFALSESS): Ditto.
369         (IX86_BUILTIN_COMTRUESS): Ditto.
370         (IX86_BUILTIN_COMEQSD): Ditto.
371         (IX86_BUILTIN_COMNESD): Ditto.
372         (IX86_BUILTIN_COMLTSD): Ditto.
373         (IX86_BUILTIN_COMLESD): Ditto.
374         (IX86_BUILTIN_COMGTSD): Ditto.
375         (IX86_BUILTIN_COMGESD): Ditto.
376         (IX86_BUILTIN_COMUEQSD): Ditto.
377         (IX86_BUILTIN_COMUNESD): Ditto.
378         (IX86_BUILTIN_COMULTSD): Ditto.
379         (IX86_BUILTIN_COMULESD): Ditto.
380         (IX86_BUILTIN_COMUGTSD): Ditto.
381         (IX86_BUILTIN_COMUGESD): Ditto.
382         (IX86_BUILTIN_COMORDSD): Ditto.
383         (IX86_BUILTIN_COMUNORDSD): Ditto.
384         (IX86_BUILTIN_COMFALSESD): Ditto.
385         (IX86_BUILTIN_COMTRUESD): Ditto.
386         (IX86_BUILTIN_COMEQPS): Ditto.
387         (IX86_BUILTIN_COMNEPS): Ditto.
388         (IX86_BUILTIN_COMLTPS): Ditto.
389         (IX86_BUILTIN_COMLEPS): Ditto.
390         (IX86_BUILTIN_COMGTPS): Ditto.
391         (IX86_BUILTIN_COMGEPS): Ditto.
392         (IX86_BUILTIN_COMUEQPS): Ditto.
393         (IX86_BUILTIN_COMUNEPS): Ditto.
394         (IX86_BUILTIN_COMULTPS): Ditto.
395         (IX86_BUILTIN_COMULEPS): Ditto.
396         (IX86_BUILTIN_COMUGTPS): Ditto.
397         (IX86_BUILTIN_COMUGEPS): Ditto.
398         (IX86_BUILTIN_COMORDPS): Ditto.
399         (IX86_BUILTIN_COMUNORDPS): Ditto.
400         (IX86_BUILTIN_COMFALSEPS): Ditto.
401         (IX86_BUILTIN_COMTRUEPS): Ditto.
402         (IX86_BUILTIN_COMEQPD): Ditto.
403         (IX86_BUILTIN_COMNEPD): Ditto.
404         (IX86_BUILTIN_COMLTPD): Ditto.
405         (IX86_BUILTIN_COMLEPD): Ditto.
406         (IX86_BUILTIN_COMGTPD): Ditto.
407         (IX86_BUILTIN_COMGEPD): Ditto.
408         (IX86_BUILTIN_COMUEQPD): Ditto.
409         (IX86_BUILTIN_COMUNEPD): Ditto.
410         (IX86_BUILTIN_COMULTPD): Ditto.
411         (IX86_BUILTIN_COMULEPD): Ditto.
412         (IX86_BUILTIN_COMUGTPD): Ditto.
413         (IX86_BUILTIN_COMUGEPD): Ditto.
414         (IX86_BUILTIN_COMORDPD): Ditto.
415         (IX86_BUILTIN_COMUNORDPD): Ditto.
416         (IX86_BUILTIN_COMFALSEPD): Ditto.
417         (IX86_BUILTIN_COMTRUEPD): Ditto.
418         (IX86_BUILTIN_PCOMEQUB): Ditto.
419         (IX86_BUILTIN_PCOMNEUB): Ditto.
420         (IX86_BUILTIN_PCOMLTUB): Ditto.
421         (IX86_BUILTIN_PCOMLEUB): Ditto.
422         (IX86_BUILTIN_PCOMGTUB): Ditto.
423         (IX86_BUILTIN_PCOMGEUB): Ditto.
424         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
425         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
426         (IX86_BUILTIN_PCOMEQUW): Ditto.
427         (IX86_BUILTIN_PCOMNEUW): Ditto.
428         (IX86_BUILTIN_PCOMLTUW): Ditto.
429         (IX86_BUILTIN_PCOMLEUW): Ditto.
430         (IX86_BUILTIN_PCOMGTUW): Ditto.
431         (IX86_BUILTIN_PCOMGEUW): Ditto.
432         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
433         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
434         (IX86_BUILTIN_PCOMEQUD): Ditto.
435         (IX86_BUILTIN_PCOMNEUD): Ditto.
436         (IX86_BUILTIN_PCOMLTUD): Ditto.
437         (IX86_BUILTIN_PCOMLEUD): Ditto.
438         (IX86_BUILTIN_PCOMGTUD): Ditto.
439         (IX86_BUILTIN_PCOMGEUD): Ditto.
440         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
441         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
442         (IX86_BUILTIN_PCOMEQUQ): Ditto.
443         (IX86_BUILTIN_PCOMNEUQ): Ditto.
444         (IX86_BUILTIN_PCOMLTUQ): Ditto.
445         (IX86_BUILTIN_PCOMLEUQ): Ditto.
446         (IX86_BUILTIN_PCOMGTUQ): Ditto.
447         (IX86_BUILTIN_PCOMGEUQ): Ditto.
448         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
449         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
450         (IX86_BUILTIN_PCOMEQB): Ditto.
451         (IX86_BUILTIN_PCOMNEB): Ditto.
452         (IX86_BUILTIN_PCOMLTB): Ditto.
453         (IX86_BUILTIN_PCOMLEB): Ditto.
454         (IX86_BUILTIN_PCOMGTB): Ditto.
455         (IX86_BUILTIN_PCOMGEB): Ditto.
456         (IX86_BUILTIN_PCOMFALSEB): Ditto.
457         (IX86_BUILTIN_PCOMTRUEB): Ditto.
458         (IX86_BUILTIN_PCOMEQW): Ditto.
459         (IX86_BUILTIN_PCOMNEW): Ditto.
460         (IX86_BUILTIN_PCOMLTW): Ditto.
461         (IX86_BUILTIN_PCOMLEW): Ditto.
462         (IX86_BUILTIN_PCOMGTW): Ditto.
463         (IX86_BUILTIN_PCOMGEW): Ditto.
464         (IX86_BUILTIN_PCOMFALSEW): Ditto.
465         (IX86_BUILTIN_PCOMTRUEW): Ditto.
466         (IX86_BUILTIN_PCOMEQD): Ditto.
467         (IX86_BUILTIN_PCOMNED): Ditto.
468         (IX86_BUILTIN_PCOMLTD): Ditto.
469         (IX86_BUILTIN_PCOMLED): Ditto.
470         (IX86_BUILTIN_PCOMGTD): Ditto.
471         (IX86_BUILTIN_PCOMGED): Ditto.
472         (IX86_BUILTIN_PCOMFALSED): Ditto.
473         (IX86_BUILTIN_PCOMTRUED): Ditto.
474         (IX86_BUILTIN_PCOMEQQ): Ditto.
475         (IX86_BUILTIN_PCOMNEQ): Ditto.
476         (IX86_BUILTIN_PCOMLTQ): Ditto.
477         (IX86_BUILTIN_PCOMLEQ): Ditto.
478         (IX86_BUILTIN_PCOMGTQ): Ditto.
479         (IX86_BUILTIN_PCOMGEQ): Ditto.
480         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
481         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
482         (bdesc_ptest): Change OPTION_MASK_ISA_SSE4_1 to
483         OPTION_MASK_ISA_ROUND for instructions that are shared between
484         SSE4.1 and SSE5.
485         (bdesc_2arg): Ditto.
486         (bdesc_sse_3arg): Ditto.
487         (enum multi_arg_type): New enum for describing the various SSE5
488         intrinsic argument types.
489         (bdesc_multi_arg): New table for SSE5 intrinsics.
490         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
491         (ix86_expand_multi_arg_builtin): New function for creating SSE5
492         intrinsics.
493         (ix86_expand_builtin): Add SSE5 intrinsic support.
494         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
495         operand instructions.
496         (ix86_expand_sse5_multiple_memory): New function to split the
497         second memory reference from SSE5 instructions.
498         (type_has_variadic_args_p): Delete in favor of stdarg_p.
499         (ix86_return_pops_args): Use stdarg_p to determine if the function
500         has variable arguments.
501         (ix86_setup_incoming_varargs): Ditto.
502         (x86_this_parameter): Ditto.
503
504         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
505         declaration.
506         (ix86_expand_sse5_pack): Ditto.
507         (ix86_sse5_valid_op_p): Ditto.
508         (ix86_expand_sse5_multiple_memory): Ditto.
509
510         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
511         constant for SSE5 support.
512         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
513         (UNSPEC_SSE5_TRUEFALSE): Ditto.
514         (UNSPEC_SSE5_PERMUTE): Ditto.
515         (UNSPEC_SSE5_ASHIFT): Ditto.
516         (UNSPEC_SSE5_LSHIFT): Ditto.
517         (UNSPEC_FRCZ): Ditto.
518         (UNSPEC_CVTPH2PS): Ditto.
519         (UNSPEC_CVTPS2PH): Ditto.
520         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
521         (PCOM_TRUE): Ditto.
522         (COM_FALSE_S): Ditto.
523         (COM_FALSE_P): Ditto.
524         (COM_TRUE_S): Ditto.
525         (COM_TRUE_P): Ditto.
526         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
527         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
528         types.
529         (memory attribute): Ditto.
530         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
531         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
532         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
533         (floor<mode>2): Ditto.
534         (ceil<mode>2): Ditto.
535         (btrunc<mode>2): Ditto.
536         (nearbyintdf2): Ditto.
537         (nearbyintsf2): Ditto.
538         (sse_setccsf): Disable if SSE5.
539         (sse_setccdf): Ditto.
540         (sse5_setcc<mode>): New support for SSE5 conditional move.
541         (sse5_pcmov_<mode>): Ditto.
542
543         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
544         (SSEMODEF4): Ditto.
545         (SSEMODEF2P): Ditto.
546         (ssemodesuffixf4): New mode attribute for SSE5.
547         (ssemodesuffixf2s): Ditto.
548         (ssemodesuffixf2c): Ditto.
549         (sserotatemax): Ditto.
550         (ssescalarmode): Ditto.
551         (sse_maskcmpv4sf3): Disable if SSE5.
552         (sse_maskcmpv2df3): Ditto.
553         (sse_vmmaskcmpv4sf3): Ditto.
554         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
555         instructions.
556         (sse5_vmfmadd<mode>4): Ditto.
557         (sse5_fmsub<mode>4): Ditto.
558         (sse5_vmfmsub<mode>4): Ditto.
559         (sse5_fnmadd<mode>4): Ditto.
560         (sse5_vmfnmadd<mode>4): Ditto.
561         (sse5_fnmsub<mode>4): Ditto.
562         (sse5_vmfnmsub<mode>4): Ditto.
563         (sse5i_fmadd<mode>4): Ditto.
564         (sse5i_fmsub<mode>4): Ditto.
565         (sse5i_fnmadd<mode>4): Ditto.
566         (sse5i_fnmsub<mode>4): Ditto.
567         (sse5i_vmfmadd<mode>4): Ditto.
568         (sse5i_vmfmsub<mode>4): Ditto.
569         (sse5i_vmfnmadd<mode>4): Ditto.
570         (sse5i_vmfnmsub<mode>4): Ditto.
571         (mulv16qi3): Add SSE5 support.
572         (mulv4si3): Ditto.
573         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
574         (sse2_mulv4si3): Disable if SSE5.
575         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
576         (sse4_1_roundps): Ditto.
577         (sse4_1_roundsd): Ditto.
578         (sse4_1_roundss): Ditto.
579         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
580         be generated.
581         (sse_maskcmpsf3): Ditto.
582         (sse_vmmaskcmpv4sf3): Ditto.
583         (sse2_maskcmpv2df3): Ditto.
584         (sse2_maskcmpdf3): Ditto.
585         (sse2_vmmaskcmpv2df3): Ditto.
586         (sse2_eq<mode>3): Ditto.
587         (sse2_gt<mode>3): Ditto.
588         (sse5_pcmov_<mode>): Add SSE5 support.
589         (vec_unpacku_hi_v16qi): Ditto.
590         (vec_unpacks_hi_v16qi): Ditto.
591         (vec_unpacku_lo_v16qi): Ditto.
592         (vec_unpacks_lo_v16qi): Ditto.
593         (vec_unpacku_hi_v8hi): Ditto.
594         (vec_unpacks_hi_v8hi): Ditto.
595         (vec_unpacku_lo_v8hi): Ditto.
596         (vec_unpacks_lo_v8hi): Ditto.
597         (vec_unpacku_hi_v4si): Ditto.
598         (vec_unpacks_hi_v4si): Ditto.
599         (vec_unpacku_lo_v4si): Ditto.
600         (vec_unpacks_lo_v4si): Ditto.
601         (sse5_pmacsww): New SSE5 intrinsic insn.
602         (sse5_pmacssww): Ditto.
603         (sse5_pmacsdd): Ditto.
604         (sse5_pmacssdd): Ditto.
605         (sse5_pmacssdql): Ditto.
606         (sse5_pmacssdqh): Ditto.
607         (sse5_pmacsdqh): Ditto.
608         (sse5_pmacsswd): Ditto.
609         (sse5_pmacswd): Ditto.
610         (sse5_pmadcsswd): Ditto.
611         (sse5_pmadcswd): Ditto.
612         (sse5_pcmov_<move>): Conditional move support on SSE5.
613         (sse5_phaddbw): New SSE5 intrinsic insn.
614         (sse5_phaddbd): Ditto.
615         (sse5_phaddbq): Ditto.
616         (sse5_phaddwd): Ditto.
617         (sse5_phaddwq): Ditto.
618         (sse5_phadddq): Ditto.
619         (sse5_phaddubw): Ditto.
620         (sse5_phaddubd): Ditto.
621         (sse5_phaddubq): Ditto.
622         (sse5_phadduwd): Ditto.
623         (sse5_phadduwq): Ditto.
624         (sse5_phaddudq): Ditto.
625         (sse5_phsubbw): Ditto.
626         (sse5_phsubwd): Ditto.
627         (sse5_phsubdq): Ditto.
628         (sse5_pperm): Ditto.
629         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
630         (sse5_pperm_zero_v16qi_v8hi): Ditto.
631         (sse5_pperm_sign_v8hi_v4si): Ditto.
632         (sse5_pperm_zero_v8hi_v4si): Ditto.
633         (sse5_pperm_sign_v4si_v2di): Ditto.
634         (sse5_pperm_sign_v4si_v2di): Ditto.
635         (sse5_pperm_pack_v2di_v4si): Ditto.
636         (sse5_pperm_pack_v4si_v8hi): Ditto.
637         (sse5_pperm_pack_v8hi_v16qi): Ditto.
638         (sse5_perm<mode>): New SSE5 intrinsic insn.
639         (rotl<mode>3): Ditto.
640         (sse5_rotl<mode>3): Ditto.
641         (sse5_ashl<mode>3): Ditto.
642         (sse5_lshl<mode>3): Ditto.
643         (sse5_frcz<mode>2): Ditto.
644         (sse5s_frcz<mode>2): Ditto.
645         (sse5_cvtph2ps): Ditto.
646         (sse5_cvtps2ph): Ditto.
647         (sse5_vmmaskcmp<mode>3): Ditto.
648         (sse5_com_tf<mode>3): Ditto.
649         (sse5_maskcmp<mode>3): Ditto.
650         (sse5_maskcmp_uns<mode>3): Ditto.
651         (sse5_maskcmp_uns2<mode>3): Ditto.
652         (sse5_pcom_tf<mode>3): Ditto.
653         
654         * config/i386/predicates.md (const_0_to_31_operand): New predicate
655         to match 0..31.
656         (sse5_comparison_float_operator): New predicate to match the
657         comparison operators supported by the SSE5 com instruction.
658         (ix86_comparison_int_operator): New predicate to match just the
659         signed int comparisons.
660         (ix86_comparison_uns_operator): New predicate to match just the
661         unsigned int comparisons.
662
663         * doc/invoke.texi (-msse5): Add documentation.
664         (-mfused-madd): Ditto.
665
666         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
667
668         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
669         mmintrin-common.h.
670         (x86_64-*-*): Ditto.
671
672         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
673
674         * config/i386/bmmintrin.h: New file, provide common x86 compiler
675         intrinisics for SSE5.
676
677         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
678         mmintrin-common.h.
679
680         * config/i386/mmintrin-common.h: New file, to contain common
681         instructions between SSE4.1 and SSE5.
682
683         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
684         FOREACH_FUNCTION_ARGS to iterate over the argument list.
685         (gen_regparm_prefix): Ditto.
686
687         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
688         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
689         prototype_p to determine if a function is prototyped.
690
691 2007-09-12  Janis Johnson  <janis187@us.ibm.com>
692
693         * config/dfp-bit.c (dfp_conversion_exception): New function.
694         (DFP_TO_DFP) Add new variants to use direct conversions in decNumber.
695         (DFP_TO_INT): Ditto.
696         (INT_TO_DFP): Ditto.
697         * config/dfp-bit.h (DEC_FLOAT_FROM_INT, DEC_FLOAT_TO_INT): New.
698
699 2007-09-12  Jakub Jelinek  <jakub@redhat.com>
700
701         PR target/32338
702         * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage
703         before sp restoration even when total_size is 0, but
704         frame_pointer_needed.
705
706 2007-09-12  Bob Wilson  <bob.wilson@acm.org>
707
708         * config/xtensa/xtensa.c (machine_function): Add vararg_a7_copy.
709         (xtensa_copy_incoming_a7): Use start_sequence instead of
710         push_to_sequence.  Stash insns in vararg_a7_copy for builtin_saveregs.
711         (xtensa_builtin_saveregs): Place code from vararg_a7_copy at the start
712         of the saveregs sequence.
713
714 2007-09-12  Richard Sandiford  <richard@codesourcery.com>
715
716         * c-tree.h (grokfield): Add a "tree *" argument.
717         * c-decl.c (grokdeclarator): Take a pointer to the decl's attributes.
718         Chain nested decl attributes to it.  Don't call decl_attributes here.
719         (groktypename): Pass grokdeclarator a pointer to the attribute list.
720         (start_decl, grokparm, push_parm_decl, start_function): Likewise.
721         (grokfield): Take a pointer to the decl's attributes and pass
722         it to grokdeclarator.
723         * c-parser.c (c_parser_struct_declaration): Update the calls to
724         grokfield.  Call decl_attributes for anonymous struct and union
725         fields.
726
727 2007-09-12  Jan Hubicka  <jh@suse.cz>
728
729         * c-objc-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
730
731 2007-09-12  Ira Rosen  <irar@il.ibm.com>
732
733         PR tree-optimization/32377
734         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Distinguish
735         between positive and negative dependence distance using DDR_REVERSED_P.
736
737 2007-09-12  Dorit Nuzman  <dorit@il.ibm.com>
738
739         PR tree-optimization/33373
740         * tree-vect-analyze (vect_determine_vectorization_factor): Call 
741         TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT. 
742
743 2007-09-12  Jan Hubicka  <jh@suse.cz>
744
745         PR target/33393
746         * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable for
747         !SSE_MATH
748
749 2007-09-12  Christian Bruel  <christian.bruel@st.com>
750
751         * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
752         * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed. 
753         
754 2007-09-12  Ira Rosen  <irar@il.ibm.com>
755
756         * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
757         for oprnd1 if not required.
758         (vectorizable_operation): Use scalar operand in SLP in case of 
759         shift with scalar argument.
760
761 2007-09-12  Ira Rosen  <irar@il.ibm.com>
762
763         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum 
764         to 1.
765
766 2007-09-11  James E. Wilson  <wilson@specifix.com>
767
768         * defaults.h (DWARF2_UNWIND_INFO): Don't define if
769         TARGET_UNWIND_INFO is defined.
770         * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
771         after definition.
772
773 2007-09-12  Kaz Kojima  <kkojima@gcc.gnu.org>
774
775         * config/sh/sh.c (calc_live_regs): Use
776         current_function_saves_all_registers instead of
777         current_function_has_nonlocal_label.
778         (sh_allocate_initial_value): Likewise.
779         (sh_get_pr_initial_val): Likewise.
780         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
781         * config/sh/sh.md (load_ra): Likewise.
782
783 2007-09-12  Hans-Peter Nilsson  <hp@axis.com>
784
785         * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
786
787         PR target/33360
788         * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
789         GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
790
791 2007-09-12  Sa Liu  <saliu@de.ibm.com>
792
793         * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
794         operands to DFmode GE or LE compares.
795
796 2007-09-12  Bernd Schmidt  <bernd.schmidt@analog.com>
797
798         * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
799         REG_CLASS_NAMES): Add P0REGS.
800         (REGNO_REG_CLASS): Return it where appropriate.
801         (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
802         (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
803         * doc/md.texi (Blackfin family): Document 'q' constraints.
804
805 2007-09-11  Steve Kenton  <skenton@ou.edu>
806
807         * pa/linux-unwind.h: Guard with inhibit_libc.
808         * pa/hpux-unwind.h: Likewise.
809
810 2007-09-11  David Daney  <ddaney@avtrex.com>
811
812         * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
813         * doc/install.texi: Document new --with-llsc and --without-llsc
814         options.
815         * config.gcc: Handle --with-llsc and --without-llsc configure options.
816         * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
817         in %| and %- operand codes.  Depend on GENERATE_SYNC instead of
818         ISA_HAS_SYNC.
819         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
820         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
821         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
822         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
823         sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
824         GENERATE_LL_SC instead of ISA_HAS_LL_SC.
825         * config/mips/mips.opt (mllsc): New option.
826         * config/mips/mips.c (mips_llsc): Define variable.
827         (mips_handle_option): Handle mllsc option.
828         (override_options): Set mips_print_operand_punct for '|' and '-'.
829         (print_operand): Add new %| and %- operand codes.
830         * config/mips/mips.h (mips_llsc_setting): New enum type.
831         (mips_llsc): Declare.
832         (OPTION_DEFAULT_SPECS): Add llsc handling.
833         (GENERATE_SYNC): New macro.
834         (GENERATE_LL_SC): New macro.
835         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
836         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
837         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
838         in %| and %- operand codes.
839
840 2007-09-11  Eric Botcazou  <ebotcazou@adacore.com>
841
842         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
843         TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
844
845 2007-09-11  Jason Merrill  <jason@redhat.com>
846
847         PR middle-end/27945
848         * stor-layout.c (layout_decl): Do pack variable size fields.    
849
850 2007-09-11  Maxim Kuvyrkov  <maxim@codesourcery.com>
851
852         * config/m68k/predicates.md (movsi_const0_operand,
853         non_symbolic_call_operand): New predicates.
854
855         * config/m68k/constraints.md: (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
856         New constraints.
857         * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
858         Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
859         CW, CZ, CS, Ap and Ac.
860
861         * config/m68k/m68k.md (UNSPEC_IB): New constant.
862         (constraints.md): New include.
863         (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
864         opx_mem, opy_mem, op_mem, guess, split): New attributes.
865         (movdf_internal): Name pattern.  Fix to use alternatives.  Add split.
866         Specify attributes.
867         (pushdi): Add split.
868         (tstsi_internal): Name pattern.  Fix to use alternatives.  Specify
869         attributes.  Split tstsi_internal_68020_cf from it.
870         (tstsi_internal_68020_cf): New pattern.
871         (tsthi_internal, tstqi_internal): Name pattern.  Specify attributes.
872         (tst<mode>_cf): Specify attributea.
873         (cmpsi_cf): Name pattern.  Specify attributes.
874         (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
875         (pushexthisi_const): Fix to use alternatives.  Specify
876         attributes.
877         (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
878         from it.  Fix to use alternatives.  Specify attributes.
879         (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
880         (movsi_cf, movstrictqi_cf): Fix to use alternatives.  Specify
881         attributes.
882         (movsf_cf_soft): Specify attributes.
883         (movdf_cf_soft): Add split.
884         (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
885         cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
886         68k_extendqisi2, truncdfsf2_cf): Specify attributes.
887         (truncdfsf2_68881): Name pattern.  Specify attributes.
888         (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
889         floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
890         fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
891         Specify attributes.
892         (addsi3_5200): Fix to use alternatives.  Specify attributes.
893         Add splits.
894         (add<mode>3_cf, subdi_dishl32): Specify attributes.
895         (subsi3): Add alternative for subq.l.  Specify attributes.
896         (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
897         (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern.  Specify
898         attributes.
899         (umulhisi3): Specify attributes.
900         (mulhisisi3_z): Name pattern.  Specify attributes.
901         (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
902         sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
903         subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
904         bsetmemqi): Specify attributes.
905         (bsetmemqi_ext): Name pattern.  Specify attributes.
906         (bclrmemqi): Specify attributes.
907         (bclrmemqi_ext, scc, sls): Name pattern.  Specify attributes.
908         (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
909         attributes.
910         (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
911         pattern.  Specify attributes.
912         (jump): Specify attributes.
913         (tablejump_internal): Name pattern.  Specify attributes.
914         (call_value): Split into non_symbolic_call_value,
915         symbolic_call_value_jsr, symbolic_call_value_bsr.  Fix to use
916         alternatives.  Specify attributes.
917         (non_symbolic_call_value, symbolic_call_value_jsr,
918         symbolic_call_value_bsr): New patterns.
919         (nop, return, unlink, indirect_jump): Specify attributes.
920         (trap): Fix condition.  Specify attributes.
921         (ib): New pattern.
922
923         * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
924         (override_options): Initialize it.  Initialize m68k_sched_cpu.
925         (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
926         (const_method): Make global, rename to m68k_const_method.
927         (const_int_cost, output_move_const_into_data_reg): Update.
928         (output_move_double): Parametrize to emit rtl code, rename to
929         handle_move_double.
930         (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
931         emit_movsi): New static functions.
932         (output_move_double): New function with semantics of old
933         output_move_double.
934         (m68k_emit_move_double): New function.
935         (m68k_sched_cpu): New variable.
936         (attr_op_type): New enum.
937         (sched_guess_p): New variable.
938         (sched_address_type, sched_operand_type, sched_attr_op_type):
939         New static functions.
940         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
941         m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
942         (sched_branch_type): New static variable.
943         (m68k_sched_branch_type): New function.
944         * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
945         (m68k_symbolic_call_var): Declare.
946         (M68K_CONST_METHOD): Rename from CONST_METHOD.  Move here from m68k.c.
947         (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
948         m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
949         m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
950         Declare.
951
952 2007-09-11  Jakub Jelinek  <jakub@redhat.com>
953
954         * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
955         * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
956         error if __builtin_va_arg_pack_len () wasn't optimized out during
957         inlining.
958         * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
959         with the number of inline's anonymous arguments.
960         * doc/extend.texi: Document __builtin_va_arg_pack_len ().
961
962 2007-09-11  Zdenek Dvorak  <ook@ucw.cz>
963
964         * fold-const.c (extract_muldiv_1): Do not simplify
965         var * c * c to var.
966
967 2007-09-11  Jan Hubicka <jh@suse.cz>
968
969         * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
970         (TARGET_INTER_UNIT_CONVERSIONS): New.
971         * i386.md (floatsi expanders): Remove redundant check for SImode
972         source; offload to memory when asked for.
973         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
974         floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
975         Update conditions;
976         (floatsisf2_mixed_memory, floatsisf2_sse_memory,
977         floatsidf2_mixed_memory, floatsidf2_sse_memory
978         floatdisf2_mixed_memory, floatsisf2_sse_memory,
979         floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
980
981 2007-09-11  Jan Hubicka <jh@suse.cz>
982
983         * toplev.c (process_options): all frontends now do unit-at-a-time.
984         * cgraphunit.c: update comments.
985         (cgraph_expand_function): call passmanager dirrectly; emit thunks.
986         * c-decl.c (finish_function): use cgraph_add_new_function.
987         * function.c (expand_function_end): We are always unit-at-a-time.
988
989 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
990
991         * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
992         settings for MIPS16.
993         (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
994
995 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
996
997         * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
998         SYMBOL_FORCE_TO_MEM constants.
999         (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
1000         (mips16_rewrite_pool_refs_info): New structure.
1001         (mips16_rewrite_pool_constant): New function, split out from...
1002         (mips16_rewrite_pool_refs): ...here.  Take a pointer to a
1003         mips16_rewrite_pool_refs_info structure rather than a pointer
1004         to a constant pool.  Force force_to_mem_operands into memory.
1005         (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
1006         * config/mips/predicates.md (force_to_mem_operand): New predicate.
1007         * config/mips/constraints.md (kf): New constraint.
1008         * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
1009         (*movsi_mips16): Likewise.
1010
1011 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
1012             Nigel Stephens  <nigel@mips.com>
1013             David Ung  <davidu@mips.com>
1014
1015         * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
1016         * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
1017         (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
1018         (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
1019         (mips_zero_extend_cost): New functions.
1020         (mips_rtx_costs): Treat COMPARE constants as having zero cost.
1021         Use the new functions.  Tweak many cost estimates, both here
1022         and in the new subroutines.  Return false when the cost of the
1023         operands has not been calculated.  Check for *clear_upper32.
1024         Check for floating-point multiply-add, reciprocal and rsqrt
1025         patterns.  Handle comparison and rotation codes.
1026
1027 2007-09-11  Danny Smith  <dannysmith@users.sourceforge.net>
1028
1029         * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
1030         override default.
1031         * config/i386/i386.c (get_dllimport_decl): Don't strip
1032         FASTCALL_PREFIX.
1033
1034 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
1035
1036         PR c/30013
1037         * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
1038         declarations to top.
1039         (DFP_TO_BFP): Use for either XFmode or TFmode.
1040         (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
1041         of BFP_VIA_TYPE.
1042         * config/dfp-bit.h: Include float.h.
1043         (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
1044         double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
1045         which doesn't mean the same thing.
1046         (BFP_KIND): Use 4 to mean TFmode.
1047         (BFP_FMT): Specify the number of decimal digits based on the
1048         number of mantissa digits.
1049         (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
1050         (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
1051         (STR_TO_BFP): Use strtold for XFmode or TFmode.
1052         (TFtype): Define if TFmode is supported.
1053         * doc/libgcc.texi (Decimal float library routines): Document
1054         TF conversion functions.
1055
1056 2007-09-10  Chao-ying Fu  <fu@mips.com>
1057
1058         * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
1059         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
1060         (mips_emit_compare): Process fixed-point modes.
1061         (mips_pad_arg_upward): Support fixed-point types.
1062         (override_options): Allow fixed-point modes in accumulators.
1063         (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
1064         (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
1065         V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
1066         (mips_scalar_mode_supported_p): New function to accept fixed-point
1067         modes if the width is not greater than two BITS_PER_WORD.
1068         * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
1069         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
1070         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
1071         LONG_LONG_ACCUM_TYPE_SIZE): Define.
1072         * config/mips/mips.md ("d"): Update mode attribute for fixed-point
1073         modes.
1074         ("IMODE"): New mode attribute.
1075         (mips-fixed.md): Include.
1076         * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
1077         ACCUM, UACCUM.
1078         * config/mips/mips-fixed.md: New file.
1079
1080 2007-09-11  Ben Elliston  <bje@au.ibm.com>
1081
1082         * config/spu/spu.md: Formatting fixes.
1083
1084 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
1085
1086         * config/dfp-bit.c (dfp_unary_func): Delete.
1087         (dfp_unary_op): Delete.
1088         (dfp_binary_op): Use decFloat functions instead of decNumber
1089         functions for binary operations.
1090         (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
1091         (dnn_binary_op): Call dfp_binary_op with decFloat rather than
1092         DFP_C_TYPE.
1093         (dfp_compare_op): Use decFloat functions insteadof decNumber
1094         functions for comparisons.
1095         (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
1096         (dnn_binary_op): Call dfp_compare_op with decFloat rather than
1097         DFP_C_TYPE.
1098         (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
1099         call to dxx_binary_op and decFloat function.
1100         (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
1101         calls to dxx_binary_op and decFloat function.
1102         * config/dfp-bit.h: Include decFloat header files.
1103         (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
1104         DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
1105         DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
1106         DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
1107
1108 2007-09-10  Harsha Jagasia <harsha.jagasia@amd.com>
1109             Jan Sjodin <jan.sjodin@amd.com>
1110         
1111         * tree-vect-analyze.c (vect_analyze_operations): Change
1112         comparison of loop iterations with threshold to less than
1113         or equal to instead of less than. Reduce
1114         min_scalar_loop_bound by one.
1115         * tree-vect-transform.c (vect_estimate_min_profitable_iters): 
1116         Change prologue and epilogue iterations estimate to vf/2,
1117         when unknown at compile-time. Change versioning guard
1118         cost to taken_branch_cost. If peeling for alignment is
1119         unknown at compile-time, change peel guard costs to one
1120         taken branch and one not-taken branch per peeled loop.
1121         If peeling for alignment is known but number of scalar loop
1122         iterations is unknown at compile-time, change peel guard
1123         costs to one taken branch per peeled loop. Change the cost
1124         model equation to consider vector iterations as the loop
1125         iterations less the prologue and epilogue iterations.
1126         Change outside vector cost check to less than or equal to
1127         zero instead of equal to zero.
1128         (vect_do_peeling_for_loop_bound): Reduce
1129         min_scalar_loop_bound by one.
1130         * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
1131         TARG_COND_NOT_TAKEN_BRANCH_COST.        
1132         * config/i386/i386.h (processor_costs): Add
1133         scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
1134         vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
1135         vec_align_load_cost, vect_unalign_load_cost,
1136         vec_store_cost, cond_taken_branch_cost,
1137         cond_not_taken_branch_cost.
1138         Define macros for x86 costs.
1139         * config/i386/i386.c:
1140         (size_cost): Set scalar_stmt_cost, scalar_load_cost,
1141         scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
1142         scalar_to_vec_cost, vec_align_load_cost, 
1143         vect_unalign_load_cost, vec_store_cost,
1144         cond_taken_branch_cost, cond_not_taken_branch_cost to one. 
1145         (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
1146         geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost, 
1147         core2_cost, generic64_cost, generic32_cost): Set to default
1148         untuned costs.
1149         (k8_cost, amdfam10_cost): Costs for vectorization tuned.
1150         (x86_builtin_vectorization_cost): New.
1151
1152 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
1153             Ben Elliston  <bje@au.ibm.com>
1154
1155         * dfp.c: Include decimal128Local.h; 
1156         (dfp_byte_swap): Remove.
1157         (encode_decimal32, decode_decimal32): Don't handle endianness.
1158         (encode_decimal64, decode_decimal64): Ditto.
1159         (encode_decimal128, decode_decimal128): Ditto.
1160         * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
1161         (__swap64): Remove.
1162         (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
1163          (__swap128): Remove
1164         (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
1165         * Makefile.in (DECNUM_H): Add decimal128Local.h.
1166
1167 2007-09-10  David Daney  <ddaney@avtrex.com>
1168
1169         * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
1170         define_constants.
1171         (memory_barrier): Rewrote as an insn that clobbers memory.
1172
1173 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
1174
1175         * config/mips/mips.c (mips_global_pointer): Check
1176         call_really_used_regs instead of call_used_regs.
1177         (mips_save_reg_p): Likewise.  Save all call-saved registers
1178         if current_function_saves_all_registers.  Fix indentation.
1179         No longer treat $18 as a special case.
1180         (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
1181
1182 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
1183
1184         * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
1185         * config/mips/mips.c (mips_cpu_info_table): Mention it in the
1186         the introductory comment.
1187         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
1188         (override_options): Don't test for it.
1189         * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
1190         (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
1191         * config/mips/vr.h: As for config/mips/sde.h.
1192
1193 2007-09-10  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
1194             Revital Eres  <eres@il.ibm.com>
1195
1196         * target.h (struct gcc_target.sched): New field: sms_res_mii.
1197         (struct ddg): Define.
1198         * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
1199         (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
1200         * config/spu/spu.c: Include ddg.h.
1201         (TARGET_SCHED_SMS_RES_MII): Define.
1202         (spu_sms_res_mii): New function to calculate mii.
1203         * modulo-sched (res_MII): Use it.
1204         * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
1205
1206 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
1207
1208         * config/s390/s390.c (s390_dump_pool): Create copy of constant
1209         pool entries since they might hold values that must not be shared.
1210
1211 2007-09-10  Uros Bizjak  <ubizjak@gmail.com>
1212
1213         PR target/33369
1214         * gcc/config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
1215         Use 'N' operand constraint for op2.
1216         (lshr<mode>3): Ditto.
1217         (ashl<mode>3): Ditto.
1218         (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
1219         (vec_shr_<mode>): Ditto.
1220         * gcc/config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
1221         IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
1222
1223 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
1224
1225         * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
1226         Change mode macro in the last real_2expN parameter to uppercase.
1227
1228 2007-09-10  Michael Matz  <matz@suse.de>
1229
1230         * tree-pass.h (pass_cselim): Declare new pass.
1231         * passes.c (init_optimization_passes): Link in pass_cselim.
1232         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
1233         tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
1234         cond_store_replacement.
1235         (condstoretemp): New static variable.
1236         (cond_store_replacement): New function.
1237         (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
1238         tree_ssa_phiopt_worker.
1239         (struct name_to_bb): New.
1240         (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
1241         nt_init_block, nt_fini_block): New static functions.
1242         (seen_ssa_names, nontrap_set): New static variables.
1243         (gate_cselim, pass_cselim): Define new pass.
1244         * common.opt (ftree-cselim): New flag.
1245         * toplev.c (process_options): Set flag_tree_cselim if required.
1246
1247 2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
1248
1249         * simplify-rtx.c (simplify_relational_operation_1): For recent
1250         canonicalization, don't recurse if op1 equals both PLUS arguments.
1251
1252 2007-09-09  David Daney  <ddaney@avtrex.com>
1253
1254         * optabs.c (expand_sync_operation):  Use plus insn if minus
1255         CONST_INT_P(val).
1256         (expand_sync_fetch_operation):  Ditto.
1257
1258 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
1259
1260         * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
1261         of cvtpq2ps.
1262         (*floatsisf2_sse_vector): Likewise.
1263
1264 2007-09-09  Krister Walfridsson  <cato@df.lth.se>
1265
1266         * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
1267
1268 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
1269
1270         * config/i386/i386.h (ix86_tune_indices): Rename
1271         X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
1272         (TARGET_USE_VECTOR_CONVERTS): Updated.
1273         * config/i386/i386.c: Likewise.
1274
1275 2007-09-09  Sandra Loosemore  <sandra@codesourcery.com>
1276             Nigel Stephens <nigel@mips.com>
1277
1278         * doc/invoke.texi (Overall Options):  Add .sx file extension
1279         as a synonym for .S.
1280         * cppspec.c (known_suffixes): Likewise.
1281         * gcc.c (default_compilers): Likewise.
1282
1283 2007-09-09  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1284
1285         PR target/30315
1286         * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
1287         * simplify-rtx.c (simplify_relational_operation_1): Add the
1288         canonicalization from i386.h.
1289         * doc/md.texi (Canonicalization of Instructions): Document it.
1290
1291 2007-09-09  Jan Hubicka  <jh@suse.cz>
1292             Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
1293
1294         * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
1295         (TARGET_USE_VECTOR_CONVERTS): New.
1296         * i386.md: New post-reload splitters for converting SF to DF and DF to
1297         SF.
1298         (floatsi* expander): Special case vector conversions.
1299         (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
1300         floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
1301         floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
1302         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
1303         Disable when doing vector converts.
1304         (floatsi<mode>2_i387): Disable when
1305         * sse.md (vec_dupv2df): Export.
1306         * i386.c (ix86_tune_features): Enable SSE conversions.
1307
1308 2007-09-09  Richard Guenther  <rguenther@suse.de>
1309
1310         * tree-ssa-operands.c (add_virtual_operand): Only mark
1311         stores as has_volatile_ops if alias information is not available.
1312
1313 2007-09-09  Revital Eres  <eres@il.ibm.com>
1314
1315         * doc/contrib.texi: Add myself.
1316
1317 2007-09-09  Ira Rosen  <irar@il.ibm.com>
1318
1319         * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
1320         stmt_vinfo_set_outside_of_loop_cost): New functions.
1321         * tree-vect-transform.c (vect_get_cost_fields): Remove.
1322         (vect_model_simple_cost): Call
1323         stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
1324         field instead of calling vect_get_cost_fields.
1325         (vect_model_store_cost, vect_model_load_cost): Likewise.
1326
1327 2007-09-09  Revital Eres  <eres@il.ibm.com>
1328
1329         * config/rs6000/rs6000.c (paired_init_builtins): Add const
1330         declaration to bdesc_paired_preds variable.
1331         (paired_expand_builtin): Likewise.
1332
1333 2007-09-09  Revital Eres  <eres@il.ibm.com>
1334
1335         * dbgcnt.def (sms_sched_loop): New counter.
1336         * modulo-sched.c: Use sms_sched_loop instead of
1337         MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
1338         perform swing modulo scheduling on.  Include dbgcnt.h.
1339         * Makefile.in: Add DBGCNT_H to modulo-sched.o.
1340         * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
1341
1342 2007-09-09  Uros Bizjak  <ubizjak@gmail.com>
1343
1344         * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
1345         Substitute all uses with ...
1346         (MODEF): New mode iterator.
1347
1348         (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
1349         from pre-regalloc define_insn_and_split splitter pattern.
1350         (*fix_trunc<mode>_i387_1): Ditto.
1351         (*fistdi2_1): Ditto.
1352         (*fist<mode>2_1): Ditto.
1353         (frndintxf2_floor): Ditto.
1354         (*fist<mode>2_floor_1): Ditto.
1355         (frndintxf2_ceil): Ditto.
1356         (*fist<mode>2_ceil_1): Ditto.
1357         (frndintxf2_trunc): Ditto.
1358         (frndintxf2_mask_pm): Ditto.
1359
1360         (prologue): Use (const_int 0) as never generated filler insn.
1361         (epilogue): Ditto.
1362         (sibcall_epilogue): Ditto.
1363         (eh_return_si): Ditto.
1364         (eh_return_di): Ditto.
1365
1366         (add<mode>3): Rename from adddf3 and addsf3.  Macroize expander
1367         using MODEF mode iterator.
1368         (sub<mode>3): Rename from subdf3 and subsf3.  Macroize expander
1369         using MODEF mode iterator.
1370         (mul<mode>3): Rename from muldf3 and mulsf3.  Macroize expander
1371         using MODEF mode iterator.
1372         (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
1373         Macroize expander using MODEF mode iterator.
1374
1375         (zero_extendsidi2): Remove operand constraints from expander.
1376         (smuldi3_highpart): Ditto.
1377         (indirect_jump): Ditto.
1378         (tablejump): Ditto.
1379         (rsqrtsf2): Ditto.
1380         * config/i386/sse.md (storentv4sf): Ditto.
1381         (storentv2df): Ditto.
1382         (storentv2di): Ditto.
1383         (storentsi): Ditto.
1384         (sse2_cvtpd2ps): Ditto.
1385         (vec_interleave_highv16qi): Ditto.
1386         (vec_interleave_lowv16qi): Ditto.
1387         (vec_interleave_highv8hi): Ditto.
1388         (vec_interleave_lowv8hi): Ditto.
1389         (vec_interleave_highv4si): Ditto.
1390         (vec_interleave_lowv4si): Ditto.
1391         (vec_interleave_highv2di): Ditto.
1392         (vec_interleave_lowv2di): Ditto.
1393         (sse2_maskmovdqu): Ditto.
1394         * config/i386/mmx.md (mmx_maskmovq): Ditto.
1395
1396 2007-09-09  Ira Rosen  <irar@il.ibm.com>
1397
1398         * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
1399         (struct _slp_tree, struct _slp_instance): Define new data structures
1400         along macros for their access.
1401         (struct _loop_vec_info): Define new fields: strided_stores,
1402         slp_instances, and slp_unrolling_factor along macros for their access.
1403         (enum slp_vect_type): New.
1404         (struct _stmt_vec_info): Define new field, slp_type, and macros for its
1405         access.
1406         (STMT_VINFO_STRIDED_ACCESS): New macro.
1407         (vect_free_slp_tree): Declare.
1408         (vectorizable_load): Add an argument of type slp_tree.
1409         (vectorizable_store, vectorizable_operation, vectorizable_conversion,
1410         vectorizable_assignment): Likewise.
1411         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
1412         Declare (make extern).
1413         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
1414         (new_loop_vec_info): Likewise.
1415         (destroy_loop_vec_info): Free memory allocated for SLP structures.
1416         * tree-vect-analyze.c: Include recog.h.
1417         (vect_update_slp_costs_according_to_vf): New.
1418         (vect_analyze_operations): Add argument for calls to vectorizable_ ()
1419         functions. For not pure SLP stmts with strided access check that the
1420         group size is power of 2. Update the vectorization factor according to
1421         SLP. Call vect_update_slp_costs_according_to_vf.
1422         (vect_analyze_group_access): New.
1423         (vect_analyze_data_ref_access): Call vect_analyze_group_access.
1424         (vect_free_slp_tree): New functions.
1425         (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
1426         vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
1427         vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
1428         vect_detect_hybrid_slp): Likewise.
1429         (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
1430         and vect_detect_hybrid_slp.
1431         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
1432         SLP costs into account.
1433         (vect_get_cost_fields): New function.
1434         (vect_model_simple_cost): Make extern, add SLP parameter and handle
1435         SLP.
1436         (vect_model_store_cost, vect_model_load_cost): Likewise.
1437         (vect_get_constant_vectors): New function.
1438         (vect_get_slp_vect_defs, vect_get_slp_defs,
1439         vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
1440         vect_get_vec_defs): Likewise.
1441         (vectorizable_reduction): Don't handle SLP for now.
1442         (vectorizable_call): Don't handle SLP for now. Add argument to
1443         vect_model_simple_cost.
1444         (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
1445         get SLPed and vectorized defs). Fix indentation and spacing.
1446         (vectorizable_assignment): Handle SLP.
1447         (vectorizable_induction): Don't handle SLP for now.
1448         (vectorizable_operation): Likewise.
1449         (vectorizable_type_demotion): Add argument to
1450         vect_model_simple_cost.
1451         (vectorizable_type_promotion): Likewise.
1452         (vectorizable_store, vectorizable_load): Handle SLP.
1453         (vectorizable_condition): Don't handle SLP for now.
1454         (vect_transform_stmt): Add a new argument for SLP. Check that there is
1455         no SLP transformation required for unsupported cases. Add SLP
1456         argument for supported cases.
1457         (vect_remove_stores): New function.
1458         (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
1459         (vect_transform_loop): Schedule SLP instances.
1460         * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
1461
1462 2007-09-09  Andrew Haley  <aph@redhat.com>
1463
1464         * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the
1465         fake signed optab.
1466
1467 2007-09-09  Hans-Peter Nilsson  <hp@axis.com>
1468
1469         Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
1470         * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
1471         Similar for what label_refs can go in the JUMP_TARGET field.  Split
1472         REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
1473         * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
1474         REG_LABEL when replacing an operand with a LABEL_REF for a
1475         non-jump insn.
1476         (subst_reloads): When replacing a LABEL_REG with a register,
1477         instead of generating a REG_LABEL note, assert that there already
1478         is one or that the label is a known target for the insn.
1479         * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
1480         note, check the JUMP_LABEL field.  Remove "else" after return.
1481         * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
1482         cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
1483         (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
1484         REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
1485         insns.  Iterate over all notes; don't assume there's only one.
1486         * cse.c (recorded_label_ref): Adjust comment to refer to
1487         REG_LABEL_OPERAND.
1488         (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
1489         insns, not just NONJUMP_INSN_P.
1490         (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
1491         isn't a jump target.
1492         * jump.c (rebuild_jump_labels): Adjust head comment.
1493         (init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
1494         don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
1495         (mark_all_labels): For JUMP_P insns without a target, check if the
1496         the target is noted on the previous nonjump insn.
1497         (mark_jump_label_1): New function, guts from mark_jump_label.
1498         <case IF_THEN_ELSE>: Handle first operand as a non-target when
1499         marking jump target labels.
1500         <case LABEL_REF>: Adjust for whether to generate a
1501         REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
1502         For 'E' format rtl, iterate in descending element order.
1503         (delete_related_insns): Handle both REG_LABEL_TARGET and
1504         REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
1505         reference count, delete and fallthrough.  Move finding-next-
1506         non-deleted insn last in the function.  Look at all INSN_P insns
1507         for REG_LABEL_OPERAND notes.
1508         (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
1509         JUMP.
1510         * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
1511         JUMP_LABEL, output the INSN_UID of it.
1512         * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
1513         and/or REG_LABEL_TARGET.
1514         (add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
1515         with jump.c copy by only adding notes for labels actually
1516         referenced in the insn.
1517         * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
1518         usage count increment; handle all INSN_P trial insns.
1519         (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
1520         notes.
1521         * rtl.h (struct rtx_def) <volatil>: Adjust to mention
1522         REG_LABEL_TARGET and REG_LABEL_OPERAND.
1523         (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
1524         REG_LABEL_OPERAND.
1525         * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
1526         JUMP_P insns and REG_LABEL_OPERAND everywhere.
1527         * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
1528         on all INSN_P insns.
1529         * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
1530         * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
1531         REG_LABEL_OPERAND notes.
1532         * reload1.c (calculate_needs_all_insns): Adjust comments.
1533         (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
1534         * config/alpha/alpha.md (split for load of an address into a
1535         four-insn sequence on Unicos/Mk): Adjust to use
1536         REG_LABEL_OPERAND.
1537         * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
1538
1539 2007-09-09  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
1540
1541         Revert:
1542         2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
1543         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
1544         FOR_BB_INSNS_SAFE instead of for loop.
1545         * cse.c (cse_extended_basic_block): Likewise.
1546         * postreload.c (reload_cse_regs_1): New variable next. Make sure
1547         that the for loop does not invoke NEXT_INSN on a deleted insn.
1548         * function.c (instantiate_virtual_regs): Likewise.
1549         * lower-subreg.c (remove_retval_note): Likewise.
1550         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
1551         FOR_BB_INSNS.
1552         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
1553         a deleted insn.
1554         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
1555         insn, if it's a jump.
1556         (try_redirect_by_replacing_jump): New variable jump_p. Call
1557         tablejump_p before delete_insn_chain.
1558         * reload1.c (reload): New variable next. Make sure that the for
1559         loop does not invoke NEXT_INSN on a deleted insn.
1560         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
1561         (delete_output_reload): New variable prev. Make sure the the for
1562         loops do not invoke PREV_INSN on a deleted insn.
1563
1564 2007-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1565
1566         * pa/constraints.md: Remove 'X' from unused letters comment.
1567
1568 2007-09-08  Richard Guenther  <rguenther@suse.de>
1569
1570         * tree-tailcall.c (find_tail_calls): If we don't have aliases
1571         computed check stmt_ann->references_memory instead of counting
1572         virtual operands.
1573  
1574 2007-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
1575
1576         * cse.c (fold_rtx): Use validate_unshare_change() instead of
1577         validate_change() in one more case.
1578
1579 2007-09-08  Zdenek Dvorak  <ook@ucw.cz>
1580
1581         PR tree-optimization/32283
1582         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
1583         estimated_loop_iterations.
1584         (determine_use_iv_cost_condition): Decrease cost of expressions
1585         used in iv elimination.
1586
1587 2007-09-08  Richard Guenther  <rguenther@suse.de>
1588
1589         * tree-cfg.c (verify_gimple_expr): Avoid building new
1590         pointer types, use TYPE_POINTER_TO if available instead.
1591
1592 2007-09-08  Uros Bizjak  <ubizjak@gmail.com>
1593
1594         PR target/33329
1595         PR rtl-optimization/26449
1596         * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
1597         (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
1598         split1 pass.
1599         (mulv16qi3): Implement as define_insn_and_split pattern instead of
1600         define_expand.  Split insn in split1 pass.
1601         (mulv2di3): Ditto.
1602
1603 2007-09-08  Dorit Nuzman  <dorit@il.ibm.com>
1604
1605         PR tree-optimization/33301
1606         * tree-vect-analyze (analyze_operations): Look at the type of the rhs
1607         when relevant.
1608
1609 2007-09-07  Zdenek Dvorak  <ook@ucw.cz>
1610
1611         PR tree-optimization/32183
1612         * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
1613
1614         * tree-ssa-reassoc.c: Include cfgloop.h.
1615         (is_reassociable_op): Add a loop argument and return true only
1616         for inside loop.
1617         (linearize_expr): Updated.
1618         (should_break_up_subtract): Likewise.
1619         (linearize_expr_tree): Likewise.
1620         (init_reassoc): Call loop_optimizer_init with
1621         AVOID_CFG_MODIFICATIONS.  Remove calculate_dominance_info call
1622         with CDI_DOMINATORS.
1623         (fini_reassoc): Call loop_optimizer_finalize.
1624
1625 2007-09-07  Sterling Augustine  <sterling@tensilica.com>
1626
1627         * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
1628         if there is no i-cache.
1629
1630 2007-09-07  Richard Guenther  <rguenther@suse.de>
1631
1632         Reapply
1633         2007-09-06  Richard Guenther  <rguenther@suse.de>
1634
1635         PR tree-optimization/32586
1636         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
1637         folding if nothing changed.
1638         (simplify_unary_expression): New function.  Do tree combining
1639         on conversion like codes.
1640         (try_to_simplify): Call it.
1641
1642 2007-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1643
1644         PR target/33286
1645         * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
1646         (__gthread_active,__gthread_start, __gthread_active_init): New.
1647         * gthr-posix95.h: Likewise.
1648
1649 2007-09-07  Roman Zippel <zippel@linux-m68k.org>
1650
1651         * function.h (struct function): Rename calls_unwind_init
1652         to saves_all_registers.
1653         (current_function_saves_all_registers): Renamed from
1654         current_function_calls_unwind_init.
1655         * reload1.c (reload): Set current_function_saves_all_registers.
1656         * except.c (expand_builtin_unwind_init): Likewise.
1657         * config/m68k/m68k.c (m68k_save_reg): Use
1658         current_function_saves_all_registers to save pic register.
1659
1660 2007-09-07  Janis Johnson  <janis187@us.ibm.com>
1661
1662         config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
1663         config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
1664
1665         Reapply reverted changes:
1666
1667         2007-09-06  Jan Hubicka  <jh@suse.cz>
1668  
1669         * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call of
1670         real_2expN.
1671
1672         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
1673
1674         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
1675         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
1676
1677         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
1678
1679         * optabs.c (expand_float): Convert unsigned integer as signed only
1680         if it provides sufficient accuracy; add mode argument to real_2expN.
1681         (expand_fix): Fix comment typos; extend binary float into mode
1682         wider than destination for converion to unsigned integer; add mode
1683         argument to real_2expN.
1684         * real.c (real_2expN): Add mode argument to special-case decimal
1685         float values.
1686         * real.h (real_2expN): Ditto.
1687         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
1688         real_2expN.
1689         (fixed_from_string): Ditto.
1690         (fixed_to_decimal): Ditto.
1691         (fixed_convert_from_real): Ditto.
1692         (real_convert_from_fixed): Ditto.
1693         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
1694         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
1695         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
1696         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
1697
1698 2007-09-07  Diego Novillo  <dnovillo@google.com>
1699
1700         * tree-flow.h (const_block_stmt_iterator): Remove.
1701         Update all users to use block_stmt_iterator.
1702         * tree-iterator.h (const_tree_stmt_iterator): Remove.
1703         Update all users to use tree_stmt_iterator.
1704
1705 2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
1706
1707         * config/mips/mips.c (mips_set_current_function): Temporarily
1708         make this a no-op to fix bootstrap errors, pending rewrite.
1709
1710 2007-09-07  Jan Hubicka  <jh@suse.cz>
1711
1712         * reorg.c (dbr_schedule): Move code removing placeholder USEs later
1713         in the pass.
1714
1715 2007-09-07  Dorit Nuzman  <dorit@il.ibm.com>
1716
1717         PR tree-optimization/33299
1718         * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
1719         uses for all relevant loop-exit phis, not just the first.
1720
1721 2007-09-07  Richard Guenther  <rguenther@suse.de>
1722
1723         PR middle-end/33330
1724         * tree-ssa-operands.c (access_can_touch_variable): An access
1725         of the form (*p)[0] can touch a variable of same size.
1726
1727 2007-09-07  Jan Hubicka  <jh@suse.cz>
1728
1729         * passes.c (init_optimization_passes): Add simple dce and addressable
1730         passes.
1731         * tree-ssa.c (execute_update_addresses_taken): New function.
1732         (pass_update_address_taken): New.
1733         * tree-ssa-dse.c (execute_simple_dse): New function.
1734         (pass_simple_dse): New.
1735         * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
1736
1737 2007-09-07  Tobias Burnus  <burnus@net-b.de>
1738
1739         PR middle-end/33321
1740         * doc/invoke.texi: Fix -Wstrict-overflow= table.
1741
1742 2007-09-07  Richard Guenther  <rguenther@suse.de>
1743
1744         Revert
1745         2007-09-06  Richard Guenther  <rguenther@suse.de>
1746
1747         PR tree-optimization/32586
1748         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
1749         folding if nothing changed.
1750         (simplify_unary_expression): New function.  Do tree combining
1751         on conversion like codes.
1752         (try_to_simplify): Call it.
1753
1754 2007-09-07  Richard Guenther  <rguenther@suse.de>
1755             Uros Bizjak  <ubizjak@gmail.com>
1756
1757         PR tree-optimization/32821
1758         * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
1759         NULL in the call to set_bb_stmt_list.
1760
1761 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
1762
1763         * config/mips/mips.c (build_mips16_call_stub): Emit all direct
1764         float calls here, rather than leaving some to the caller.
1765         Use call_internal_direct and call_value_internal_direct.
1766         * config/mips/mips.md (call_internal_direct): New pattern.
1767         (call_value_internal_direct): Likewise.
1768
1769 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
1770
1771         * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
1772         (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
1773         to 0 for MIPS16.
1774         (override_options): Set mips_base_move_loop_invariants.
1775
1776 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
1777
1778         * config/mips/mips.opt (mcode-readable=): Move to keep list
1779         alphabetical.
1780
1781 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
1782
1783         * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
1784         and -mgpopt options.  Adjust the -G documentation to match.
1785         * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
1786         * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
1787         function, split out from mips_classify_symbol.  Return false for
1788         !TARGET_LOCAL_SDATA.
1789         (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
1790         Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
1791         (override_options): Check whether the -mgpopt setting is consistent
1792         with the other flags.
1793         (symbolic_expression_p): Delete.
1794         (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
1795         and default_elf_select_rtx_section.
1796         (mips_in_small_data_p): Honor section attributes for MIPS16 too.
1797         Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
1798         external data and TARGET_EXTERN_SDATA.
1799
1800 2007-09-07  Tobias Burnus  <burnus@net-b.de>
1801
1802         PR fortran/33303
1803         * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
1804
1805 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
1806
1807         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
1808         FOR_BB_INSNS_SAFE instead of for loop.
1809         * cse.c (cse_extended_basic_block): Likewise.
1810         * postreload.c (reload_cse_regs_1): New variable next. Make sure
1811         that the for loop does not invoke NEXT_INSN on a deleted insn.
1812         * function.c (instantiate_virtual_regs): Likewise.
1813         * lower-subreg.c (remove_retval_note): Likewise.
1814         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
1815         FOR_BB_INSNS.
1816         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
1817         a deleted insn.
1818         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
1819         insn, if it's a jump.
1820         (try_redirect_by_replacing_jump): New variable jump_p. Call
1821         tablejump_p before delete_insn_chain.
1822         * reload1.c (reload): New variable next. Make sure that the for
1823         loop does not invoke NEXT_INSN on a deleted insn.
1824         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
1825         (delete_output_reload): New variable prev. Make sure the the for
1826         loops do not invoke PREV_INSN on a deleted insn.
1827
1828 2007-09-06  Zdenek Dvorak  <ook@ucw.cz>
1829
1830         * cgraphbuild.c (rebuild_cgraph_edges): Export.
1831         * cgraph.h (rebuild_cgraph_edges): Declare.
1832         * tree-pass.h (pass_expand_omp_ssa): New.
1833         * omp-low.c (find_omp_clause): Export.
1834         (copy_var_decl): Split from omp_copy_decl_2.
1835         (build_omp_barrier): Return the call to emit instead of emitting
1836         it directly.
1837         (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
1838         build_omp_barrier.
1839         (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
1840         expand_omp_for_generic, expand_omp_for_static_nochunk,
1841         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
1842         Adapted to work on SSA form.
1843         (execute_expand_omp): Do not invalidate dominance information.
1844         (gate_expand_omp): Do not run with -fopenmp-ssa flag.
1845         (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
1846         * gimplify.c (gimplify_omp_for): Ensure that the control variable is
1847         a gimple_reg.
1848         (force_gimple_operand): Allow gimplifying code expressions without
1849         value.
1850         * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
1851         * common.opt (fopenmp-ssa): New.
1852         * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
1853         * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
1854         * tree-cfg.c: Include tree-inline.h.
1855         (struct move_stmt_d): Replace vars_to_remove by vars_map field.
1856         (replace_by_duplicate_decl, replace_ssa_name,
1857         mark_virtual_ops_in_region): New functions.
1858         (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
1859         to work on SSA form.
1860         * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
1861         * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
1862         constructs.
1863
1864 2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
1865
1866         * tree-loop-linear.c: Include obstack.h.
1867         (linear_transform_loops): New obstack lambda_obstack.
1868         Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
1869         lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
1870         and free afterwards.
1871         * lambda.h (struct obstack): New forward declaration.
1872         (lambda_linear_expression_new): New parameter of type struct
1873         obstack *.
1874         (lambda_loopnest_new): Likewise.
1875         (lambda_loopnest_transform): Likewise.
1876         (lambda_body_vector_new): Likewise.
1877         (lambda_body_vector_compute_new): Likewise.
1878         (gcc_loopnest_to_lambda_loopnest): Likewise.
1879         (lambda_loopnest_to_gcc_loopnest): Likewise.
1880         * lambda-code.c: Include obstack.h.
1881         (lambda_lattice_new): New parameter lambda_obstack.  Use it for
1882         allocation of ret.
1883         (lambda_body_vector_new): Likewise.
1884         (lambda_linear_expression_new): Likewise.
1885         (lambda_lattice_new): Likewise.
1886         (lambda_loopnest_new): Likewise.  Additionally use obstack to
1887         allocate LN_LOOPS(ret).
1888         (lambda_lattice_compute_base): New parameter lambda_obstack.  Pass
1889         it to lambda_lattice_new.
1890         (lambda_body_vector_compute_new): New parameter lambda_obstack.
1891         Pass it to lambda_body_vector_new.
1892         (lambda_lattice_compute_base): New paramater lambda_obstack.  Pass
1893         it to lambda_lattice_new.
1894         (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
1895         Pass it to lambda_loopnest_new, lambda_linear_expression_new.
1896         (lambda_compute_target_space): Likewise.
1897         (lambda_compute_auxillary_space): New parameter lambda_obstack.
1898         Pass it to lambda_lattice_compute_base and
1899         compute_nest_using_fourieer_motzkin.
1900         (lambda_loopnest_transform): New parameter lambda_obstack.  Pass
1901         it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
1902         and lambda_lattice_compute_target_space.
1903         (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
1904         Pass it to lambda_linear_expression_new.
1905         (gcc_loop_to_lambda_loop): New parameter lambda_obstack.  Pass it
1906         to gcc_tree_to_linear_expression.
1907         (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
1908         Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
1909         (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
1910         Pass it to lambda_body_vector_new and
1911         lambda_body_vector_compute_new.
1912         * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
1913         (lambda-code.o): Likewise.
1914
1915 2007-09-06  Chao-ying Fu  <fu@mips.com>
1916
1917         * ginclude/stdfix.h: New file.
1918         * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
1919         (convert.o): Add dependence on fixed-value.h.
1920         * c-convert.c (convert): Support FIXED_POINT_TYPE.
1921         * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
1922         to define fixed-point constants.
1923         (c_cpp_builtins): Define fixed-point constants.
1924         * convert.c (fixed-value.h): New include.
1925         (convert_to_real): Update comment to include fixed-point.
1926         Support FIXED_POINT_TYPE.
1927         (convert_to_integer): Update comment to include fixed-point.
1928         Support FIXED_POINT_TYPE.
1929         (convert_to_complex): Support FIXED_POINT_TYPE.
1930         (convert_to_fixed): New function.
1931         * convert.h (convert_to_fixed): Declare.
1932         * genopinit.c: Add comment about $Q for only fixed-point modes.
1933         (optabs): Add fract_optab, fractuns_optab, satfract_optab,
1934         satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
1935         sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
1936         ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
1937         usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
1938         usneg_optab for fixed-point modes.
1939         (gen_insn): Add force_fixed to track the $Q format for all fixed-point
1940         modes.
1941         * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
1942         PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
1943         unsigned saturation optabs, when type is saturating.
1944         (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
1945         (expand_fixed_convert): New function.
1946         (gen_fixed_libfunc, gen_signed_fixed_libfunc,
1947         gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
1948         gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
1949         gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
1950         gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
1951         gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
1952         functions.
1953         (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
1954         ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
1955         usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
1956         ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
1957         usneg_optab, fract_optab, fractuns_optab, satfract_optab,
1958         satfractuns_optab.
1959         Initialize fixed-point libraries, including add, ssadd, usadd, sub,
1960         sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
1961         ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
1962         fractuns, satfractuns.
1963         * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
1964         OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
1965         OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
1966         OTI_ssmsub_widen,  OTI_usmsub_widen.
1967         (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
1968         usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
1969         ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
1970         umsub_widen_optab, usmsub_widen_optab): Define.
1971         (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
1972         COI_satfractuns.
1973         (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
1974         Define.
1975         (expand_fixed_convert): Declare.
1976         * expr.c (convert_move): Support the move of fixed-point modes.
1977         (emit_move_insn_1): Handle fixed-point mode to move via integer.
1978         (categorize_ctor_elements_1): Handle FIXED_CST.
1979         (count_type_elements): Handle FIXED_POINT_TYPE.
1980         (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
1981         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
1982         Support FIXED_CST.
1983         For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
1984         multiply and add/subtract for fixed-point types.
1985         For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
1986         mode, we jump to binop directly.
1987         Support FIXED_CONVERT_EXPR.
1988         (do_store_flag): Check FIXED_CST to put a constant second.
1989         (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
1990         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
1991         (const_vector_from_tree): Support FIXED_CST.
1992         * doc/extend.texi (Fixed-Point): New node.
1993         * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
1994         ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
1995         satfract, fractuns, satfractuns): Document them.
1996
1997 2007-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
1998
1999         * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
2000         addresses into I registers.
2001
2002 2007-09-06  Jan Hubicka  <jh@suse.cz>
2003             Andreas Tobler  <a.tobler@schweiz.org>
2004
2005         * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
2006         sharing.
2007         (machopic_legitimize_pic_address): Likewise.
2008
2009 2007-09-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2010             Jan Hubicka  <jh@suse.cz>
2011
2012         * config/spu/spu.md (floatsidf2): Use convert_optab_libfunc
2013         instead of ufloat_optab->handlers directly.
2014         (floatdidf2): Likewise.
2015
2016 2007-09-06  Sandra Loosemore  <sandra@codesourcery.com>
2017
2018         * config/mips/mips.c:  Include diagnostic.h.
2019         (mips_set_current_function): Check errorcount and sorrycount 
2020         before generating RTL.
2021
2022 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
2023
2024         PR target/33256
2025         * config/mips/mips.c (mips_classify_symbolic_expression): New function.
2026         (mips_classify_address): Use it instead of mips_symbolic_constant_p.
2027         (print_operand_reloc): Likewise.
2028
2029 2007-09-06  Janis Johnson  <janis187@us.ibm.com>
2030
2031         Revert:
2032
2033         2007-09-06  Jan Hubicka  <jh@suse.cz>
2034  
2035         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
2036         real_2expN.
2037
2038         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
2039
2040         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
2041         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
2042
2043         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
2044
2045         * optabs.c (expand_float): Convert unsigned integer as signed only
2046         if it provides sufficient accuracy; add mode argument to real_2expN.
2047         (expand_fix): Fix comment typos; extend binary float into mode
2048         wider than destination for converion to unsigned integer; add mode
2049         argument to real_2expN.
2050         * real.c (real_2expN): Add mode argument to special-case decimal
2051         float values.
2052         * real.h (real_2expN): Ditto.
2053         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
2054         real_2expN.
2055         (fixed_from_string): Ditto.
2056         (fixed_to_decimal): Ditto.
2057         (fixed_convert_from_real): Ditto.
2058         (real_convert_from_fixed): Ditto.
2059         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
2060         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
2061         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
2062         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
2063
2064 2007-09-06  Tom Tromey  <tromey@redhat.com>
2065
2066         * tree-cfg.c (remove_bb): Only warn if line is non-zero.
2067         * c-pch.c (c_common_read_pch): Restore current location after
2068         reading PCH file.
2069         * tree.c (expand_location): Update.
2070         (expr_filename): Changed return type.  Unified the two cases.
2071         (expr_lineno): Likewise.
2072         (annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
2073         as lvalues.
2074         * toplev.c (line_table): Changed type.
2075         (general_init): Update.
2076         (realloc_for_line_map): New function.
2077         (general_init): Allocate line_table using GC.
2078         * fix-header.c (line_table): Changed type.
2079         (read_scan_file): Update.
2080         (read_scan_file): Update.
2081         * c-ppoutput.c (maybe_print_line): Update.
2082         (print_line): Update.
2083         (cb_line_change): Update.
2084         (cb_define): Update.
2085         (pp_file_change): Update.
2086         * c-opts.c (c_common_init_options): Update.
2087         (finish_options): Update.
2088         (push_command_line_include): Update.
2089         * c-lex.c (cb_line_change): Update.
2090         (cb_def_pragma): Update.
2091         (cb_define): Update.
2092         (cb_undef): Update.
2093         (c_lex_with_flags): Use cpp_get_token_with_location.
2094         * input.h (line_table): Changed type.
2095         (location_from_locus): New macro.
2096         * tree.h (EXPR_FILENAME): No longer an lvalue.
2097         (EXPR_LINENO): Likewise.
2098         (expr_locus, set_expr_locus): Declare separately for
2099         USE_MAPPED_LOCATION.
2100         (expr_filename, expr_lineno): Changed return type.
2101         * gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
2102         * cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
2103         (expand_gimple_basic_block): Likewise.
2104         * final.c (final_scan_insn): Use expanded_location.
2105
2106 2007-09-06  Richard Guenther  <rguenther@suse.de>
2107
2108         PR tree-optimization/32586
2109         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
2110         folding if nothing changed.
2111         (simplify_unary_expression): New function.  Do tree combining
2112         on conversion like codes.
2113         (try_to_simplify): Call it.
2114         * builtins.c (fold_builtin_cexp): Fold the built expressions.
2115         * fold-const.c (fold_unary): Test result of get_callee_fndecl().
2116
2117 2007-09-06  Jan Hubicka  <jh@suse.cz>
2118
2119         PR target/33318
2120         * cse.c (fold_rtx): Avoid invalid sharing.
2121
2122 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
2123
2124         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
2125         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
2126
2127 2007-09-06  Revital Eres  <eres@il.ibm.com>
2128
2129         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
2130         Fix offsettable memory reference for 750CL.
2131
2132 2007-09-06  Pat Haugen  <pthaugen@us.ibm.com>
2133
2134         * reload.c (find_reloads_address_1): Try to preserve original
2135         base/index regclass of operands.
2136         * regrename.c (scan_rtx_address): Likewise.
2137         (replace_oldest_value_addr): Likewise.
2138
2139 2007-09-06  Richard Guenther  <rguenther@suse.de>
2140
2141         PR tree-optimization/33302
2142         * domwalk.c (walk_dominator_tree): The exit block is
2143         interesting even if it is not reachable.
2144
2145 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
2146
2147         PR middle-end/33306
2148         * optabs.c (avoid_expensive_constant): Do nothing if MODE is VOIDmode.
2149
2150 2007-09-06  Basile Starynkevitch  <basile@starynkevitch.net>
2151
2152         * cfg.c (dump_bb_info, dump_edge_info): Added cfun test for 
2153         robustness.
2154
2155 2007-09-05  Ian Lance Taylor  <iant@google.com>
2156
2157         * tree-pretty-print.c (dump_decl_name): Cast LABEL_DECL_UID to int
2158         when printing.
2159         (dump_generic_node): Likewise.
2160         * print-rtl.c (print_decl_name): Likewise.
2161         * print-tree.c (print_node_brief): Likewise.
2162         (print_node): Likewise.
2163         * Makefile.in (RTL_BASE_H): Add alias.h.
2164         (TREE_H): Likewise.
2165
2166 2007-09-06  Jesper Nilsson  <jesper.nilsson@axis.com>
2167
2168         * longlong.h [__CRIS_arch_version >= 8] (count_trailing_zeros):
2169         Defined.
2170         * config/cris/cris.md (ctzsi2, cris_swap_bits): Implemented.
2171         * config/cris/cris.h (CTZ_DEFINED_VALUE_AT_ZERO): Defined.
2172
2173 2007-09-06  Jie Zhang  <jie.zhang@analog.com>
2174
2175         * config.gcc (tm_file): Add linux.h for bfin*-uclinux*.
2176         (tm_defines): Define UCLIBC_DEFAULT to 1.
2177         (extra_options): Add linux.opt.
2178         * config/bfin/linux.h (CPLUSPLUS_CPP_SPEC): Don't define.
2179         (CRT_CALL_STATIC_FUNCTION): Likewise.
2180         (NO_IMPLICIT_EXTERN_C): Likewise.
2181         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
2182         * config/bfin/elf.h (OBJECT_FORMAT_ELF): Don't define.
2183         * config/bfin/uclinux.h (CPLUSPLUS_CPP_SPEC): Don't define.
2184         (ENDFILE_SPEC): Don't define.
2185         (LIB_SPEC): Likewise.
2186         (CRT_CALL_STATIC_FUNCTION): Likewise.
2187         (NO_IMPLICIT_EXTERN_C): Likewise.
2188         (LINUX_TARGET_OS_CPP_BUILTINS): Likewise.
2189         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
2190
2191 2007-09-06  Jan Hubicka  <jh@suse.cz>
2192
2193         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
2194         real_2expN.
2195
2196 2007-09-06  Jan Hubicka  <jh@suse.cz>
2197
2198         * opts.c (common_handle_option): Enable inlining functions for
2199         -fprofile-generate.
2200
2201 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
2202
2203         * builtin-attrs.def (ATTR_NONNULL_3): New.
2204         (DEF_FORMAT_ATTRIBUTE): Use just ATTR_NONNULL_##FA instead of
2205         ATTR_NOTHROW_NONNULL_##FA.
2206         (DEF_FORMAT_ATTRIBUTE_NOTHROW, DEF_FORMAT_ATTRIBUTE_BOTH): New macros.
2207         (ATTR_FORMAT_PRINTF_NOTHROW_2_0, ATTR_PRINTF_NOTHROW_2_3,
2208         ATTR_FORMAT_PRINTF_NOTHROW_3_0, ATTR_FORMAT_PRINTF_NOTHROW_3_4,
2209         ATTR_FORMAT_PRINTF_NOTHROW_4_0, ATTR_PRINTF_NOTHROW_4_5,
2210         ATTR_FORMAT_PRINTF_NOTHROW_5_0, ATTR_FORMAT_PRINTF_NOTHROW_5_6,
2211         ATTR_FORMAT_SCANF_NOTHROW_2_0, ATTR_FORMAT_SCANF_NOTHROW_2_3,
2212         ATTR_FORMAT_STRFTIME_NOTHROW_3_0, ATTR_FORMAT_STRFMON_NOTHROW_3_4):
2213         New.
2214         (ATTR_FORMAT_PRINTF_4_0, ATTR_PRINTF_4_5, ATTR_FORMAT_PRINTF_5_0,
2215         ATTR_FORMAT_PRINTF_5_6, ATTR_FORMAT_STRFTIME_3_0,
2216         ATTR_FORMAT_NOTHROW_3_4): Remove.
2217         * builtins.def (snprintf, sprintf, sscanf, vsnprintf, vsprintf,
2218         vsscanf, strfmon, strftime, __snprintf_chk, __sprintf_chk,
2219         __vsnprintf_chk, __vsprintf_chk): Use ATTR_FORMAT_*_NOTHROW_*
2220         instead of ATTR_FORMAT_*_*.
2221
2222 2007-09-06  Hans-Peter Nilsson  <hp@axis.com>
2223
2224         * config/cris/cris.c (cris_emit_movem_store): Call copy_rtx on
2225         parts re-used for REG_FRAME_RELATED_EXPR.
2226
2227 2007-09-05  Janis Johnson  <janis187@us.ibm.com>
2228
2229         * optabs.c (expand_float): Convert unsigned integer as signed only
2230         if it provides sufficient accuracy; add mode argument to real_2expN.
2231         (expand_fix): Fix comment typos; extend binary float into mode
2232         wider than destination for converion to unsigned integer; add mode
2233         argument to real_2expN.
2234         * real.c (real_2expN): Add mode argument to special-case decimal
2235         float values.
2236         * real.h (real_2expN): Ditto.
2237         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
2238         real_2expN.
2239         (fixed_from_string): Ditto.
2240         (fixed_to_decimal): Ditto.
2241         (fixed_convert_from_real): Ditto.
2242         (real_convert_from_fixed): Ditto.
2243         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
2244         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
2245         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
2246         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
2247
2248 2007-09-05  Ian Lance Taylor  <iant@google.com>
2249
2250         * init-regs.c (initialize_uninitialized_regs): Call
2251         emit_insn_before rather than add_insn_before.
2252
2253 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
2254
2255         * builtins.def (BUILT_IN_VA_ARG_PACK): New built-in.
2256         * tree.h (CALL_EXPR_VA_ARG_PACK): Define.
2257         * tree-inline.h (copy_body_data): Add call_expr field.
2258         * tree-inline.c (expand_call_inline): Initialize call_expr.
2259         (copy_bb): Append anonymous inline fn arguments to arguments
2260         when inlining a CALL_EXPR_VA_ARG_PACK call.
2261         * builtins.c (expand_builtin): Issue an error if
2262         BUILT_IN_VA_ARG_PACK is seen during expand.
2263         (fold_call_expr, fold_builtin_call_array): Don't fold
2264         CALL_EXPR_VA_ARG_PACK CALL_EXPRs or calls with
2265         __builtin_va_arg_pack () call as last argument.
2266         * gimplify.c (gimplify_call_expr): If last argument to a vararg
2267         function is __builtin_va_arg_pack (), decrease number of call
2268         arguments and instead set CALL_EXPR_VA_ARG_PACK on the CALL_EXPR.
2269         * expr.c (expand_expr_real_1): Issue an error if
2270         CALL_EXPR_VA_ARG_PACK CALL_EXPR is seen during expand.
2271         * tree-pretty-print.c (dump_generic_node): Handle printing
2272         CALL_EXPR_VA_ARG_PACK bit on CALL_EXPRs.
2273         * doc/extend.texi (__builtin_va_arg_pack): Document.
2274
2275 2007-09-05  Adam Nemet  <anemet@caviumnetworks.com>
2276
2277         PR tree-optimization/21513
2278         * builtins.c (build_builtin_expect_predicate): New function.
2279         (fold_builtin_expect): Add argument for expected value.
2280         Distribute __builtin_expect over short-circuiting operations.
2281         Fold nested builtin_expects.
2282         (fold_builtin_2): Adjust call to fold_builtin_expect.
2283
2284 2007-09-05  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2285
2286         PR web/32965
2287         PR tree-optimization/13756
2288         * doc/invoke.texi (Options That Control Optimization): Document
2289         -ftree-dse.
2290
2291 2007-09-05  Uros Bizjak  <ubizjak@gmail.com>
2292
2293         * gcc/config/i386/cpuid.h: New file.
2294         * gcc/config/i386/driver-i386.c: Include cpuid.h.
2295         (describe_cache): Shrink size and line strings to 100 bytes.
2296         (detect_caches_amd): Return "" for unsupported max_ext_level.
2297         Use __cpuid function.
2298         (detect_caches_intel): Return "" for unsupported max_level.
2299         Use __cpuid function.
2300         (host_detect_local_cpu): Change feature flag variables to
2301         unsigned int.  Initialize only extended feature flag variables.
2302         Use __get_cpuid_max to determine max supported cpuid level.
2303         Use __cpuid function to determine supported features.  Fix
2304         calculation of family id.  Remove is_amd and check signature
2305         directly.  Check for Geode signature.  Handle family 4 id.
2306         [PROCESSOR_GENERIC32]: New default for unknown family id.  Move
2307         cpu discovery code to lower part of the function.
2308         [PROCESSOR_PENTIUM, PROCESSOR_K6, PROCESSOR_ATHLON]: Do not tune
2309         for sub-architecture.
2310         [PROCESSOR_PENTIUMPRO]: Simplify cpu discovery code.
2311         [PROCESSOR_K8]: Add k8-sse3 architecture.
2312         [PROCESSOR_NOCONA]: Remove.
2313         [PROCESSOR_GENERIC64]: Ditto.
2314         * gcc/config/i386/x-i386 (driver-i386.o): Depend on cpuid.h.
2315         * gcc/config/i386/crtfastmath.c: Include cpuid.h.  Use __get_cpuid
2316         to check for SSE and FXSAVE support.
2317         * gcc/config/i386/t-crtfm (crtfastmath.o): Depend on cpuid.h.
2318         Add -minline-all-stringops.
2319         * gcc/config.gcc (i[34567]86-*-*): Add cpuid.h to extra_headers.
2320         (x86_64-*-*): Ditto.
2321
2322 2007-09-05  Jie Zhang  <jie.zhang@analog.com>
2323
2324         * config/bfin/linux-unwind.h: New file.
2325         * config/bfin/linux.h (MD_UNWIND_SUPPORT): Define.
2326         * config/bfin/uclinux.h (MD_UNWIND_SUPPORT): Define.
2327
2328 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
2329
2330         * Makefile.in (stmt.o): Add alloc-pool.h dependency.
2331         * stmt.c: Include alloc-pool.h.
2332         (struct case_node): Remove GTY marker.
2333         (add_case_node): New parameter case_node_pool.  Use it for
2334         allocation of r.
2335         (expand_case): New allocation pool case_node_pool.  Initialize it,
2336         pass to add_case_node and free it.
2337
2338 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
2339             David Ung  <davidu@mips.com>
2340             Nigel Stephens <nigel@mips.com>
2341
2342         Add mips16/nomips16 function attributes and -mflip-mips16 option
2343         for testing mixed-mode compilation.
2344
2345         * config/mips/mips.opt (mflip-mips16): New.
2346
2347         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Define.
2348         (SYMBOL_FLAG_MIPS16_FUNC_P): Define.
2349
2350         * config/mips/mips.c (mips_base_target_flags): New.
2351         (mips_base_mips16): New.
2352         (mips_base_schedule_insns): New.
2353         (mips_base_reorder_blocks_and_partition): New.
2354         (mips_base_align_loops): New.
2355         (mips_base_align_jumps): New.
2356         (mips_base_align_functions): New.
2357         (mips16_flipper): New.
2358         (mips_attribute_table): Add "mips16" and "nomips16" entries.
2359         (TARGET_SET_CURRENT_FUNCTION): Define.
2360         (mips_mips16_type_p, mips_nomips16_type_p): New.
2361         (mips_comp_type_attributes): Check mips16/nomips16 attributes.
2362         (mips_function_ok_for_sibcall): Make it deal with functions with
2363         mips16 attributes.
2364         (mips_init_split_addresses): New, split out from override_options.
2365         (mips_init_relocs): New, split out from override_options.
2366         (was_mips16_p): New.
2367         (mips_set_mips16_mode): New, split out from override_options.
2368         (mips_set_current_function): New.
2369         (override_options): Add sorry for unsupported mips16/pic
2370         combination.  Remove error for mips16/dsp combination.  Save
2371         base option settings.  
2372         (mips_file_start): Move mips16 mode setting output from here....
2373         (mips_output_function_prologue): ....to here.
2374         (mips_output_mi_thunk): Check for mips16 function.
2375         (build_mips16_function_stub): Don't set .mips16 here.
2376         (build_mips16_call_stub): Likewise.
2377         (mips_expand_builtin): Error in mips16 mode.
2378         (mips_use_mips16_mode_p): New.
2379         (mips_encode_section_info): Check for mips16 function, and set
2380         SYMBOL_REF_FLAGS accordingly.
2381
2382         * doc/extend.texi (Function Attributes): Document new
2383         mips16/nomips16 attributes.
2384         * doc/invoke.texi (Option Summary): Add -mflip-mips16.
2385         (MIPS Options): Document -mflip-mips16.
2386
2387 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
2388
2389         * config/mips/mips.c (mips_legitimize_tls_address): Call sorry
2390         if we encounter TLS address in MIPS16 mode.
2391         (mips_legitimize_const_move): Check cannot_force_const_mem for
2392         the (const (plus symbol offset)) case; this forces invalid TLS
2393         address in MIPS16 mode to be caught by the above call to sorry.
2394         (override_options): Don't reset targetm.have_tls in MIPS16 mode,
2395         because that now enables emutls, which is not ABI compatible
2396         with native TLS in non-MIPS16 mode.
2397
2398 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
2399
2400         Add target hook invoked when cfun changes.
2401
2402         * doc/tm.texi (TARGET_SET_CURRENT_FUNCTION): Document.
2403         * target.h (struct gcc_target): Add set_current_function.
2404         * target-def.h (TARGET_SET_CURRENT_FUNCTION): Define.
2405         (TARGET_INITIALIZER): Add initializer for set_current_function.
2406         * tree.h (push_struct_function): New.
2407         * tree-inline.h (push_cfun, pop_cfun): Move declarations to...
2408         * function.h: Here.
2409         (set_cfun): Declare.
2410         * tree-inline.c (cfun_stack, push_cfun, pop_cfun): Moved to...
2411         * function.c: Here.
2412         (push_function_context_to): Use allocate_struct_function
2413         to create null context, not init_dummy_function_start.  Use set_cfun.
2414         (pop_function_context_from): Use set_cfun.
2415         (in_dummy_function): New.
2416         (invoke_set_current_function_hook): New.
2417         (set_cfun): New.
2418         (push_cfun, pop_cfun): Use set_cfun.
2419         (push_struct_function): New.
2420         (allocate_struct_function): Call invoke_set_current_function_hook
2421         before returning.
2422         (prepare_function_start): Don't set cfun here.  Remove unused
2423         argument; fix all callers.
2424         (init_dummy_function_start): Fiddle with in_dummy_function.  Call
2425         push_struct_function.
2426         (init_function_start): Set cfun here.
2427         (expand_dummy_function_end): Fiddle with in_dummy_function.  Pop cfun.
2428         * omp-low.c (create_omp_child_function): Use push_struct_function
2429         and pop_cfun to save/restore state.
2430         (expand_omp_parallel): Remove unused saved_cfun variable.
2431         * cgraphunit.c (ipa_passes): Use set_cfun.
2432         * gimple-low.c (record_vars_into): Use push_cfun/pop_cfun here.
2433         * dwarf2out.c (dwarf2out_abstract_function): Likewise.
2434         * matrix-reorg.c (transform_allocation_sites): Likewise.
2435         (matrix_reorg): Use set_cfun.
2436         * gimplify.c (gimplify_function_tree): Use push_cfun/pop_cfun here.
2437         * tree-optimize.c (tree_rest_of_compilation): Remove one redundant
2438         assignment to cfun; use set_cfun for the other.
2439         * tree-cfg.c (move_sese_region_to_fn): Use set_cfun.
2440         (dump_function_to_file): Use push_cfun/pop_cfun here.
2441         * c-decl.c (finish_function): Use set_cfun.
2442
2443 2007-09-05  Kenneth Zadeck <zadeck@naturalbridge.com>
2444
2445         * regrename.c (rerename_optimize): Use deferred rescanning and
2446         insert explicit calls to rescan insns when changed.
2447         
2448 2007-09-05  Jan Hubicka  <jh@suse.cz>
2449
2450         * optabs.c (libfunc_entry): Change optab to integer.
2451         (hash_libfunc, convert_optab_libfunc, optab_libfunc,
2452         set_optab_libfunc, set_conv_libfunc): Use optable indexes instead
2453         of pointers for hashing.
2454
2455 2007-09-05  Jan Hubicka  <jh@suse.cz>
2456
2457         * regrename.c (pass_regrename, pass_cprop_hardreg): Add RTL sharing
2458         verifier.
2459         * fwprop.c (pass_rtl_fwprop, pass_rtl_fwprop_add): Likewise.
2460         * see.c (pass_see): Likewise.
2461         * tracer.c (pass_tracer): Likewise.
2462         * postreload-gcse.c (pass_gcse2): Likewise.
2463         * postreload.c (pass_postreload_cse): Likewise.
2464         * mode-switching.c (pass_mode_switching): Likewise.
2465         * modulo-sched.c (pass_sms): Likewise.
2466         * cse.c (cse_insn): Likewise.
2467         * web.c (pass_web): Likweise.
2468         * combine-stack-adj.c (pass_stack_adjustments): Likewise.
2469         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Likewise.
2470         * loop-init.c (pass_rtl_loop_init): Likewise.
2471         (pass_rtl_loop_done, pass_rtl_move_loop_, pass_rtl_unswitch,
2472         pass_rtl_unroll_and, pass_rtl_doloop): Likewise.
2473         * global.c (pass_global_alloc): Likewise.
2474         * ifcvt.c (pass_rtl_ifcvt, pass_if_after_combine,
2475         pass_if_after_reload): Likewise.
2476         * reload.c (pass_peephole2, pass_split_for_shoren_branches): Likewise.
2477         * dse.c (pass_rtl_dse1, pass_rtl_dse2): Likewise.
2478         * regmove.c (pass_regmove): Likewise.
2479         * function.c (pass_thread_prologugues_epilogues): Likewise.
2480         * gcse.c (pass_gcse): Likewise.
2481         * rtl-factoring.c (pass_rtl_seqabstr): Likewise.
2482         * lower-subreg.c (pass_lower_subreg2): Likewise.
2483         * bt-load.c (pass_branch_target_load): Likewise.
2484         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
2485         * cfgcleanup.c (pass_jump, pass_jump2): Likewise.
2486         * combine.c (pass_combine): Likewise.
2487         * bb-reorder.c (pass_duplicate_comp, pass_reorder_blocks): Likewise.
2488         (pass_partition_blocks): Likewise.
2489         * var-tracking.c (pass_variable_track): Likewise.
2490         * reg-stack.c (pass_stack_regs_run): Likewise.
2491         * sched-rgn.c (pass_sched, pass_sched2): Likewise.
2492         * passes.c (pass_postreload): Likewise.
2493         (execute_function_todo): Add TODO_verify_rtl_sharing handling code.
2494         * tree-pass.h (TODO_verify_rtl_sharing): New.
2495         (TODO_update_ssa, TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
2496         TODO_update_ssa_only_virtuals, TODO_remove_unused_locals,
2497         TODO_set_props, TODO_df_finish, TODO_df_verify,
2498         TODO_mark_first_instance, TODO_rebuild_alias): Renumber.
2499
2500 2007-09-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2501
2502         * fold-const.c (all_ones_mask_p, sign_bit_p, simple_operand_p,
2503         fold_real_zero_addition_p, reorder_operands_p,
2504         div_if_zero_remainder, fold_undefer_overflow_warnings,
2505         int_binop_types_match_p, fold_convert_const_int_from_int,
2506         fold_convert_const_int_from_real,
2507         fold_convert_const_int_from_fixed,
2508         fold_convert_const_real_from_real,
2509         fold_convert_const_real_from_fixed,
2510         fold_convert_const_fixed_from_fixed,
2511         fold_convert_const_fixed_from_int,
2512         fold_convert_const_fixed_from_real, maybe_lvalue_p,
2513         fold_checksum_tree, fold_check_failed, print_fold_checksum,
2514         debug_fold_checksum, multiple_of_p): Constify.
2515         * tree-flow-inline.h (get_lineno): Likewise.
2516         * tree-flow.h (get_lineno): Likewise.
2517         * tree-object-size.c (compute_object_offset, addr_object_size,
2518         alloc_object_size, pass_through_call): Likewise.
2519         * tree-pretty-print.c (op_symbol, print_call_name,
2520         print_struct_decl, do_niy): Likewise.
2521         * tree.h (fold_undefer_overflow_warnings, multiple_of_p,
2522         debug_fold_checksum): Likewise.
2523
2524 2007-09-04  Steven Bosscher  <steven@gcc.gnu.org>
2525
2526         PR middle-end/33029
2527         * lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
2528         note, remove the associated REG_RETVAL note.
2529
2530 2007-09-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2531
2532         * config.gcc (powerpc*-*-*): Install
2533         spu2vmx.h, vec_types.h, and si2vmx.h headers.
2534         * config/rs6000/spu2vmx.h: New header.
2535         * config/rs6000/si2vmx.h: New header.
2536         * config/rs6000/vec_types.h: New header.
2537
2538 2007-09-05  Ben Elliston  <bje@au.ibm.com>
2539
2540         * varasm.c (initializer_constant_valid_p): Fix comment typo.
2541
2542 2007-09-05  Ben Elliston  <bje@au.ibm.com>
2543
2544         * config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint,
2545         not `m' for *ptrp.
2546         (__stdcx): Make asm volatile.
2547         (__stwcx, __stdcx): Return only 0 or 1.
2548
2549 2007-09-05  Jan Hubicka  <jh@suse.cz>
2550
2551         Revert:
2552
2553         2007-09-04  Jan Hubicka  <jh@suse.cz>
2554         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
2555
2556         2007-09-04  Richard Guenther  <rguenther@suse.de>
2557         * tree-ssa-operands.c (add_virtual_operand): Only mark
2558         stores as has_volatile_ops if alias information is not available.
2559
2560 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
2561
2562         * config/rs6000/tramp.asm: Include config.h.
2563         Check __PIC__ or __pic__ macro instead of SHARED.
2564
2565         PR rtl-optimization/32300
2566         * see.c (see_copy_insn): New function.
2567         (see_def_extension_not_merged, see_merge_one_use_extension,
2568         see_merge_one_def_extension): Use it.  Avoid changing
2569         PREV_INSN/NEXT_INSN chains directly, insted emit insns
2570         into sequences.  Call df_insn_delete on temporary insns
2571         that won't be emitted into the insn stream.
2572         (rest_of_handle_see): Turn off DF_DEFER_INSN_RESCAN
2573         and run df_process_deferred_rescans () before run_fast_dce.
2574
2575         PR tree-optimization/33017
2576         * tree-data-ref.c (split_constant_offset) <case SSA_NAME>: Don't
2577         recurse for pure or const function calls.
2578
2579 2007-09-04  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
2580
2581         * c-format.c: Include alloc-pool.h.
2582         (check_format_info_main): New argument fwt_alloc.  Use allocation
2583         pool instead of GC.  Remove GC deallocation code.
2584         (check_format_arg): Create allocation pool, pass it to
2585         check_format_info_main and free it afterwards.
2586         * Makefile.in (c-format.o): Add alloc-pool.h dependency.
2587
2588 2007-09-05  Ben Elliston  <bje@au.ibm.com>
2589
2590         * config/rs6000/ppu_intrinsics.h (__protected_stream_count):
2591         Rename count macro arugment for clarity.
2592         (__protected_unlimited_stream_set): Pass UG=1 to __dcbt_TH1000.
2593         (__protected_stream_set): Likewise, pass 0.
2594
2595 2007-09-04  Jan Hubicka  <jh@suse.cz>
2596
2597         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
2598
2599 2007-09-04  Jan Hubicka  <jh@suse.cz>
2600
2601         * invoke.texi (-finline-small-functions): Document.
2602         * ipa-inline.c (cgraph_default_inline_p): Do not use DECL_INLINE
2603         when deciding what is inlinable.
2604         (cgraph_decide_recursive_inlining): Handle flag_inline_functions.
2605         (cgraph_decide_inlining_of_small_function): Handle new flags.
2606         (cgraph_decide_inlining_incrementally): Likewise.
2607         * opts.c (decode_options): Enable flag_inline_small_functions at -O2
2608         * common.opt (finline-small-functions): New.
2609         * Makefile.in (build/gengtype.o-warn): Work around PR29478
2610
2611 2007-09-04  Richard Guenther  <rguenther@suse.de>
2612
2613         * tree-ssa-operands.c (add_virtual_operand): Only mark
2614         stores as has_volatile_ops if alias information is not available.
2615
2616 2007-09-04  Andrew Haley  <aph@redhat.com>
2617
2618         * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0.
2619
2620 2007-09-04  Andrew Haley  <aph@redhat.com>
2621
2622         * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
2623         * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
2624         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
2625
2626 2007-09-04  Emmanuel Thome  <Emmanuel.Thome@inria.fr>
2627
2628         PR c++/14178
2629         * common.opt: Mention ABI version 2 in comment.
2630
2631 2007-09-04  Jan Hubicka  <jh@suse.cz>
2632
2633         * optabs.c (debug_optab_libfunc): Update; make available to gdb.
2634         (libfunc_entry): New structure.
2635         (libfunc_hash): New hashtable.
2636         (hash_libfunc): New function.
2637         (eq_libfunc): New function.
2638         (convert_optab_libfunc): New function.
2639         (optab_libfunc): New function.
2640         (expand_binop, sign_expand_binop, expand_twoval_binop_libfunc,
2641         expand_unop, prepare_cmp_insn, prepare_float_insn, gen_add2_insn,
2642         expand_float, expand_fix, new_optab, new_convert_optab):
2643          Update for new libfunc API.
2644         (init_libfunc, init_integral_libfuncs,
2645         init_floating_libfuncs, init_interclass_conv_libfuncs
2646         init_intraclass_conv_libfuncs): Remove; reorganize all logic to:
2647         (gen_libfunc, gen_int_libfunc, gen_fp_libfunc, gen_int_fp_libfunc,
2648         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
2649         gen_int_to_fp_conv_libfunc, gen_ufloat_conv_libfunc,
2650         gen_int_to_fp_nondecimal_conv_libfunc, gen_fp_to_int_conv_libfunc,
2651         gen_intraclass_conv_libfunc, gen_trunc_conv_libfunc,
2652         gen_extend_conv_libfunc): New.
2653         (init_one_libfunc): Revamp for hashtables.
2654         (set_conv_libfunc): Likewise.
2655         (init_optabs): Initialize hashtable; use lazy initialization where
2656         possible.
2657         * optabs.h (optab_handlers): Move out of GGC.
2658         (optab, convert_optab): Move out of GGC; add lazy gen info.
2659         (code_to_optab, convert_optab_table, optab_table): Move out of GGC.
2660         (optab_libfunc, convert_optab_libfunc): New.
2661         * builtins.c (expand_builtin_powi): Update for new API.
2662         * expr.c (convert_move): Likewise.
2663         * expmed.c (expand_divmod): Likewise.
2664
2665 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
2666
2667         * config/rs6000/rs6000.c (rs6000_stack_info): Allocate space for the
2668         GOT pointer only if there is a constant pool.  Use the allocated space
2669         for SPE also.
2670
2671 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
2672
2673         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Correct
2674         typo for AltiVec.
2675
2676 2007-09-04  Revital Eres  <eres@il.ibm.com>
2677             Richard Guenther  <rguenther@suse.de>
2678             R. Clint Whaley  <whaley@cs.utsa.edu>
2679
2680         * doc/invoke.texi (-fassociative-math, -freciprocal-math):
2681         Document new flags.
2682         * tree-tailcall.c (process_assignment): Use -fassociative-math
2683         when reodering operands of floating-point type.
2684         * fold-const.c (fold_comparison, fold_binary): Use
2685         -fassociative-math and -freciprocal-math instead of
2686         -funsafe-math-optimization flag.
2687         * toplev.h (set_unsafe_math_optimizations_flags): Declare function.
2688         * tree-ssa-math-opts.c (gate_cse_reciprocals): Use
2689         -freciprocal-math instead of -funsafe-math-optimizations.
2690         * opts.c (set_fast_math_flags): Set -freciprocal-math and
2691         -fassociative-math when -ffast-math is set.
2692         (set_unsafe_math_optimizations_flags): New Function
2693         to set -freciprocal-math and -fassociative-math when
2694         -funsafe-math-optimizations is set.
2695         (common_handle_option): Call it.
2696         * tree-vectorizer.c (vect_is_simple_reduction): Use
2697         -fassociative-math when doing reduction on floats.
2698         * loop-unroll.c (analyze_insn_to_expand_var): Use
2699         -fassociative-math when expanding an accumulator of type float.
2700         * simplify-rtx.c (simplify_binary_operation_1): Use
2701         -fassociative-math and -freciprocal-math when reordeing operands
2702         of floating-point type.
2703         * combine.c (combine_simplify_rtx): Likewise.
2704         * tree-ssa-reassoc.c (break_up_subtract_bb, reassociate_bb):
2705         Likewise.
2706         * common.opt (-fassociative-math, -freciprocal-math): New flags.
2707
2708 2007-09-04  Paolo Carlini  <pcarlini@suse.de>
2709
2710         PR c++/18608
2711         * doc/install.texi (--enable-__cxa_atexit): Fix typo.
2712
2713 2007-09-04  Jan Hubicka  <jh@suse.cz>
2714
2715         * regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.
2716
2717 2007-09-04  Jan Hubicka  <jh@suse.cz>
2718
2719         * regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
2720         and corresponding MATCH_DUP.
2721
2722 2007-09-04  Uros Bizjak  <ubizjak@gmail.com>
2723
2724         PR middle-end/33187
2725         * combine.c (subst): Do not try to simplify X if it represents load
2726         of FP constant from the constant pool via float extension.
2727
2728 2007-09-04  Ben Elliston  <bje@au.ibm.com>
2729
2730         * c-opts.c: Include "tm_p.h".
2731         * Makefile.in (c-opts.o): Add $(TM_P_H) as a dependency.
2732
2733 2007-09-04  Richard Guenther  <rguenther@suse.de>
2734
2735         PR tree-optimization/33291
2736         * tree-pretty-print.c (dump_generic_node): Dump all
2737         qualifiers for pointer types, not only first.  Dump
2738         qualifiers for aggregate types as well.
2739         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Always
2740         use the canonical type for building ARRAY_REFs.
2741         * gimplify.c (canonicalize_addr_expr): Clean up.  The
2742         correct validness check is compatibility of the pointer
2743         types.  Always use the canonical type for building
2744         ARRAY_REFs and ADDR_EXPRs.
2745         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Revert
2746         change that disabled propagation of ADDR_EXPRs into statements
2747         with volatile ops.
2748
2749 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
2750
2751         * config/arm/arm.md (mulsidi3, umulsidi3, mulsi3_highpart)
2752         (umulsi3_highpart): Make into expanders; existing insns are
2753         now named *[insn]_nov6.  Add stars to existing [insn]_v6
2754         counterparts' names.
2755
2756 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
2757
2758         * Makefile.in (DRIVER_DEFINES, gcc.o, gccspec.o, protoize.o)
2759         (unprotoize.o): Remove SHLIB_MULTILIB.
2760
2761 2007-09-03  Eric Weddington  <eweddington@cso.atmel.com>
2762
2763         * doc/extend.texi: Document progmem attribute for AVR.
2764
2765 2007-09-03  Anatoly Sokolov <aesok@post.ru>
2766
2767         PR target/28902
2768         * config/avr/avr.h (TARGET_VTABLE_ENTRY_ALIGN): Define.
2769
2770 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
2771
2772         * optabs.c (expand_ffs): Initialize val and defined_at_zero
2773         to avoid warnings.
2774
2775         * optabs.c: Remove unnecessary forward declarations.
2776         (expand_unop_direct): New, broken out of expand_unop.
2777         (expand_doubleword_clz): New.
2778         (expand_ctz): Move above expand_ffs.  Use
2779         start_sequence, end_sequence, add_equal_note, and
2780         expand_unop_direct.  Add more commentary.
2781         (expand_ffs): Try both ctz optab and expand_ctz.
2782         Generate a test and branch if the hardware doesn't give us
2783         a useful value for input zero.  Style improvements similar to
2784         expand_ctz.
2785
2786         * config/arm/arm.md (ffssi2, ctzsi2): Delete.
2787
2788 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
2789
2790         * config.gcc: Delete stanza for arm-semi-aof and
2791         armel-semi-aof targets.
2792         * config/arm/arm-protos.h
2793         * config/arm/arm.c
2794         * config/arm/arm.h: Delete all #ifdef AOF_ASSEMBLER blocks;
2795         make all #ifndef AOF_ASSEMBLER blocks unconditional.  Also
2796         delete aof_pic_label and remove mention of AOF in comments.
2797         * config/arm/arm.md: Delete patterns used only for AOF assembly.
2798         * config/arm/aof.h
2799         * config/arm/semiaof.h
2800         * config/arm/t-semi: Delete file.
2801
2802 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2803
2804         * system.h (CONST_CAST2, CONST_CAST_TREE, CONST_CAST_RTX,
2805         CONST_CAST_BB): New macros for type-specific casts.
2806         (CONST_CAST): Add a TYPE parameter and define it in terms of
2807         CONST_CAST2.
2808
2809         * c-decl.c (c_make_fname_decl): Supply a TYPE for CONST_CAST.
2810         * c-lex.c (cb_ident, lex_string): Likewise,
2811         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise,
2812         * config/i386/i386.c (ix86_function_regparm,
2813         ix86_function_sseregparm): Use CONST_CAST_TREE.
2814         * config/mmix/mmix.c (mmix_encode_section_info): Supply a TYPE for
2815         CONST_CAST.
2816         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
2817         give_switch, set_multilib_dir): Likewise,
2818         * gengtype-parse.c (string_seq, typedef_name): Likewise,
2819         * gimple-low.c (block_may_fallthru): Use CONST_CAST_TREE.
2820         * jump.c (reversed_comparison_code_parts): Use CONST_CAST_RTX.
2821         * passes.c (execute_one_pass): Supply a TYPE for CONST_CAST.
2822         * prefix.c (update_path): Likewise,
2823         * pretty-print.c (pp_base_destroy_prefix): Likewise,
2824         * rtlanal.c (keep_with_call_p): Use CONST_CAST_RTX.
2825         * tree-cfg.c (tree_can_merge_blocks_p,
2826         tree_block_ends_with_condjump_p): Use CONST_CAST_BB.
2827         * tree-eh.c (lookup_stmt_eh_region_fn): USe CONST_CAST_TREE.
2828         * tree.c (build_string): Supply a TYPE for CONST_CAST.
2829         (attribute_list_contained): Use CONST_CAST_TREE.
2830
2831 2007-09-03  Krister Walfridsson  <cato@df.lth.se>
2832
2833         * config/netbsd-elf.h (USE_LD_AS_NEEDED): Define.
2834
2835 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
2836
2837         PR middle-end/33290
2838         * optabs.c (avoid_expensive_constant): Canonicalize CONST_INTs
2839         before forcing them into a register.
2840
2841 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
2842
2843         * config/mips/mips.md (fetchop_bit): Use define_code_iterator
2844         rather than define_code_macro.
2845
2846 2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2847
2848         * gcc.c (xputenv): New function.
2849         (putenv_from_prefixes): Use xputenv instead of putenv.
2850         (process_command): Use xputenv instead of putenv.
2851         (set_collect_gcc_options): Use xputenv instead of putenv.
2852         (main): Use xputenv instead of putenv.
2853
2854 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
2855
2856         * config/cris/cris.h (TARGET_HAS_SWAP): Defined to describe
2857         availability of swap instruction.
2858         * config/cris/cris.md (bswapsi2): Implement using swap instruction.
2859
2860 2007-09-03  Revital Eres  <eres@il.ibm.com>
2861
2862         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Update
2863         Documentation.
2864
2865 2007-09-03  Vladimir Yanovsky  <yanov@il.ibm.com>
2866             Ayal Zaks  <zaks@il.ibm.com>
2867             Revital Eres  <eres@il.ibm.com>
2868
2869         * modulo-sched.c (ps_insert_empty_row, verify_partial_schedule,
2870         compute_split_row): New functions.
2871         (ps_unschedule_node): Remove.
2872         (normalize_sched_times): Iterate over the already scheduled
2873         insns instead of the number of nodes.
2874         (MAX_SPLIT_NUM): New definition.
2875         (sms_schedule_by_order): Change the scheduling heuristic to
2876         avoid useless increases of initiation interval ii.
2877         (get_sched_window): Add dump printouts.
2878
2879 2007-09-02  David Daney  <ddaney@avtrex.com>
2880
2881         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP, UNSPEC_SYNC_OLD_OP,
2882         UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE): New define_constants.
2883         (optab, insn): Add more attributes.
2884         (fetchop_bit): New code macro.
2885         (immediate_insn): New code macro attribute.
2886         (sync): Change condition to ISA_HAS_SYNC.
2887         (rdhwr): Change predicate for operand 0 to register_operand.
2888         (memory_barrier): New expand.
2889         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
2890         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
2891         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
2892         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
2893         sync_new_nand<mode>, sync_lock_test_and_set<mode>): New insns.
2894         * config/mips/mips.h (ISA_HAS_SYNC, ISA_HAS_LL_SC): New ISA predicates.
2895         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
2896         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
2897         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): New Macros.
2898         
2899 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
2900             Hans-Peter Nilsson  <hp@axis.com>
2901
2902         * config/cris/cris.h (TARGET_HAS_LZ, CLZ_DEFINED_VALUE_AT_ZERO):
2903         Defined to describe availability and behavior of CLZ.
2904         * config/cris/cris.md (clzsi2): Implement using lz instruction.
2905         * config/cris/cris.opt: Tweak comment for "-metrax4".
2906         * config/cris/arit.c (LZ): When defined, define as __builtin_clz.
2907         * longlong.h [__CRIS__ && __CRIS_arch_version >= 3]
2908         (count_leading_zeros): Define.
2909
2910 2007-09-01  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
2911
2912         * ggc-page.c (ggc_pch_read): Call validate_free_objects.
2913
2914 2007-09-02  Joseph Myers  <joseph@codesourcery.com>
2915
2916         PR middle-end/33272
2917         * c-decl.c (grokdeclarator): Apply qualifiers to type of parameter
2918         decayed from array.
2919
2920 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
2921
2922         * config/arm/arm.c, config/rs6000/ppu_intrinsics.h,
2923         config/spu/spu.c, df-scan.c, fixed-value.c, fold-const.c,
2924         ginclude/tgmath.h, haifa-sched.c, optabs.c, recog.c,
2925         sched-deps.c, sched-int.h, system.h, target.h,
2926         tree-ssa-live.c, tree-vect-transform.c, tree-vectorizer.c,
2927         tree.def: Fix comment typos.
2928
2929 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
2930
2931         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove.
2932         (override_options): Turn on -mstrict-align on non-ColdFire
2933         targets.
2934         * config/m68k/m68k.h (BIGGEST_ALIGNMENT): Update a comment.
2935
2936 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2937
2938         * c-common.c (const_strip_array_types): Delete.
2939         * c-common.h (const_strip_array_types): Likewise.
2940         * emit-rtl.c (const_next_insn, const_previous_insn,
2941         const_next_nonnote_insn, const_prev_nonnote_insn,
2942         const_next_real_insn, const_prev_real_insn,
2943         const_next_active_insn, const_prev_active_insn, const_next_label,
2944         const_prev_label): Delete.
2945         * gimple-low.c (block_may_fallthru): Use expr_last.
2946         * jump.c (reversed_comparison_code_parts): Use prev_nonnote_insn.
2947         * rtl.h (const_previous_insn, const_next_insn,
2948         const_prev_nonnote_insn, const_next_nonnote_insn,
2949         const_prev_real_insn, const_next_real_insn,
2950         const_prev_active_insn, const_next_active_insn, const_prev_label,
2951         const_next_label): Delete.
2952         * rtlanal.c (keep_with_call_p): Use next_nonnote_insn.
2953         * system.h (CONST_CAST): Update comment.
2954         * tree-cfg.c (tree_can_merge_blocks_p): Use last_stmt.
2955         (const_first_stmt, const_last_stmt): Delete.
2956         (tree_block_ends_with_condjump_p): Use last_stmt.
2957         * tree-flow.h (const_first_stmt, const_last_stmt): Delete.
2958         * tree-iterator.c (const_expr_first, const_expr_last,
2959         const_expr_only): Delete.
2960         * tree.c (const_lookup_attribute): Likewise.
2961         (attribute_list_contained): Use lookup_attribute.
2962         * tree.h (const_lookup_attribute, const_expr_first,
2963         const_expr_last, const_expr_only): Delete.
2964
2965 2007-09-01  Richard Guenther  <rguenther@suse.de>
2966
2967         * tree-ssa-alias.c (create_name_tags): Use TYPE_VOLATILE
2968         instead of TREE_THIS_VOLATILE.
2969         * tree-ssa-operands.c (add_virtual_operand): Do not set
2970         has_volatile_ops.  Do not check s_ann for NULL.
2971         (get_indirect_ref_operands): Likewise.
2972         (get_expr_operands): Likewise.  For all reference trees
2973         set has_volatile_ops based on TREE_THIS_VOLATILE.  Also
2974         check base of reference for TREE_THIS_VOLATILE.
2975
2976 2007-09-01  Richard Guenther  <rguenther@suse.de>
2977
2978         * tree-cfg.c (verify_gimple_expr): Fix check for conversions
2979         between integral types.  Also allow conversions between
2980         pointer types.
2981
2982 2007-08-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2983
2984         * optabs.c (prepare_float_lib_cmp): Use
2985         libgcc_cmp_return_mode instead of word_mode.
2986         * config/dfp-bit.h: Likewise.
2987         * config/fp-bit.h: Likewise.
2988         * config/spu/spu.c (spu_libgcc_cmp_return_mode):
2989         New function.
2990         (spu_libgcc_shift_count_mode): New function.
2991         (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
2992         (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
2993
2994 2007-08-31  Joseph Myers  <joseph@codesourcery.com>
2995
2996         * tree-pretty-print.c: Include output.h.
2997         (dump_decl_name, dump_generic_node): Use %wd with pp_printf, not
2998         HOST_WIDE_INT_PRINT_DEC.
2999         * Makefile.in (tree-pretty-print.o): Add dependency on output.h.
3000
3001 2007-08-31  Zdenek Dvorak  <ook@ucw.cz>
3002
3003         PR rtl-optimization/33224
3004         * loop-iv.c (latch_dominating_def): Check that the definition belongs
3005         to the analysed region.
3006
3007 2007-08-31  Richard Guenther  <rguenther@suse.de>
3008
3009         * function.c (allocate_struct_function): Do not set
3010         current_function_returns_pointer.
3011         * function.h (struct var_refs_queue): Remove.
3012         (struct simple_obstack_stack): Likewise.
3013         (struct function): Remove fixup_var_refs_queue member.
3014         Remove returns_pointer flag.
3015         (current_function_returns_pointer): Remove define.
3016
3017 2007-08-31  Nick Clifton  <nickc@redhat.com>
3018
3019         * tree-ssa-coalesce.c (compare_pairs): Use the elements as
3020         secondary keys in order to obtain a stable sort.
3021
3022 2007-08-31  Nick Clifton  <nickc@redhat.com>
3023
3024         PR target/33132
3025         * config/m32r/constraints.md: Add W constraint for integer zero.
3026         * config/m32r/m32r.md (get_pc): Use W and i constraints.
3027         Fix length calculation by using alternatives.
3028
3029 2007-08-31  Richard Sandiford  <richard@codesourcery.com>
3030
3031         * optabs.c (shift_optab_p, commutative_optab_p): New functions,
3032         split out from expand_binop.
3033         (avoid_expensive_constant): New function.
3034         (expand_binop_directly): Remove commutative_op argument and
3035         (expand_binop_directly): Remove commutative_op argument and
3036         call cummutative_optab_p instead.  Do not change op0 or op1
3037         when swapping xop0 and xop1.  Apply avoid_expensive_constant
3038         to each argument after potential swapping.  Enforce the
3039         canonical order of commutative operands.
3040         (expand_binop): Use shift_optab_p and commutative_optab_p.
3041         Update the calls to expand_binop_directly.  Only force constants
3042         into registers when widening an operation.  Only swap operands
3043         once a direct expansion has been rejected.
3044         (expand_twoval_binop): Only force constants into registers when
3045         using a direct expansion.
3046
3047 2007-08-31  Maxim Kuvyrkov  <maxim@codesourcery.com>
3048
3049         * sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
3050         (sched_analyze_insn): Don't postprocess speculative dependencies when
3051         target has no scheduling.
3052         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Fix
3053         'uninitialized' warning.
3054
3055 2007-08-31  Richard Guenther  <rguenther@suse.de>
3056
3057         * tree.c (build_complex_type): Always set TYPE_NAME for
3058         comples types.
3059
3060 2007-08-31  Olivier Hainque  <hainque@adacore.com>
3061
3062         * config/rs6000/xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New
3063         internal macro. Default alignment factor for csect directives, chosen
3064         to match what BIGGEST_ALIGNMENT allows.
3065         (DATA_SECTION_ASM_OP): Use it.
3066         * config/rs6000/rs6000.c
3067         (rs6000_xcoff_output_readonly_section_asm_op):
3068         Use XCOFF_CSECT_DEFAULT_ALIGNMENT_STR.
3069         (rs6000_xcoff_output_readwrite_section_asm_op): Likewise.
3070         
3071 2007-08-31  Olivier Hainque  <hainque@adacore.com>
3072
3073         * dbxout.c (dbxout_block): Move declaration within the first
3074         #if defined (DBX_DEBUGGING_INFO) block.  Rearrange another such
3075         block to include the definition, together with the associated
3076         helpers.
3077
3078 2007-08-31  David Edelsohn  <edelsohn@gnu.org>
3079             Revital Eres  <eres@il.ibm.com>
3080
3081         * doc/invoke.texi (-mpaired): Document flag.
3082         * config.gcc: Include paired.h in powerpc extra_headers and
3083         750cl.h in powerpc-*-linux*paired*.
3084         * config/rs6000/rs6000.opt (-mpaired): New flag.
3085         * config/rs6000/rs6000.c (paired_init_builtins,
3086         paired_expand_builtin, paired_expand_lv_builtin,
3087         paired_expand_stv_builtin, paired_expand_predicate_builtin):
3088         New functions to support the paired single builtin functions.
3089         (rs6000_hard_regno_mode_ok): Handle PAIRED_VECTOR_MODE.
3090         (def_builtin, bdesc_3arg, bdesc_2arg, bdesc_1arg): Add paired
3091         single builtins.
3092         (bdesc_paired_preds): New structure for paired predicate
3093         instructions.
3094         (rs6000_expand_builtin): Expand paired single builtins.
3095         (rs6000_init_builtins): Init paired single builtins.
3096         (rs6000_common_init_builtins): Add v2sf_ftype_v2sf_v2sf_v2sf.
3097         Rename v2sf_ftype_v2sf_v2sf to v2sf_ftype_v2sf_v2sf_spe
3098         and v2sf_ftype_v2sf_spe to v2sf_ftype_v2sf.  Add new types
3099         v2sf_ftype_v2sf_v2sf and v2sf_ftype_v2sf.
3100         (rs6000_vector_mode_supported_p): Support paired vector mode.
3101         * config/rs6000/rs6000.h: (UNITS_PER_PAIRED_WORD,
3102         PAIRED_VECTOR_MODE, PAIRED_SIMD_REGNO_P, TARGET_PAIRED_FLOAT):
3103         New.
3104         (LOCAL_ALIGNMENT): Handle PAIRED_VECTOR_MODE.
3105         (DATA_ALIGNMENT): Likewise.
3106         (UNITS_PER_SIMD_WORD): Handle PAIRED_VECTOR_MODE.
3107         (rs6000_builtins): Add PAIRED builtins.
3108         * config/rs6000/rs6000.md: Include paired.md.
3109         * config/rs6000/paired.h: New.
3110         * config/rs6000/paired.md: New.
3111         * config/rs6000/750cl.h: New.
3112         * config/rs6000/spe.md: Recognize movv2sf instruction for 750cl.
3113
3114 2007-08-30  Ollie Wild  <aaw@google.com>
3115
3116         * c-opts.c (c_common_handle_option): Support -fno-directives-only.
3117         * gcc.c (default_compilers): Add -fno-directives-only to
3118         @assembler-with-cpp.
3119
3120 2007-08-30  Sandra Loosemore  <sandra@codesourcery.com>
3121
3122         PR middle-end/33211
3123
3124         * regclass.c (initial_fixed_regs): Revert previous change and make
3125         it const again.
3126         (initial_call_used_regs): Likewise.
3127         (initial_call_really_used_regs): Delete, reverting previous addition.
3128         (initial_reg_names): Likewise.
3129         (init_reg_sets): Revert previous change.
3130         (saved_fixed_regs): New.
3131         (saved_call_used_regs): New.
3132         (saved_call_really_used_regs): New.
3133         (saved_reg_names): New.
3134         (save_register_info): New.
3135         (restore_register_info): New.
3136         (init_reg_sets_1): Replace reset of register info with call to
3137         restore_register_info.
3138         * rtl.h (save_register_info): Declare.
3139         * toplev.c (backend_init): Call save_register_info.
3140
3141 2007-08-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3142
3143         * tree-ssa-propagate.c (set_rhs): Remove the copied annotation
3144         from the original statement.
3145
3146 2007-08-30  Chao-ying Fu  <fu@mips.com>
3147
3148         * c-lex.c (interpret_fixed): Declare.
3149         (interpret_float): Process _Fract and _Accum.
3150         (interpret_fixed): New function.
3151         * final.c (output_addr_const): Process CONST_FIXED.
3152         * simplify-rtx.c (simplify_const_unary_operation): Handle US_NEG.
3153         (simplify_binary_operation_1): Handle US_ASHIFT, SS_MULT, US_MULT,
3154         SS_DIV, US_DIV.
3155         (simplify_const_binary_operation): Handle SS_MULT, US_MULT, SS_DIV,
3156         US_DIV, US_ASHIFT.
3157         (simplify_immed_subreg): Support CONST_FIXED.
3158         Process MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
3159         (simplify_subreg): Support CONST_FIXED.
3160
3161 2007-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3162
3163         * config/rs6000/ppu_intrinsics.h: New file.
3164         * config.gcc (powerpc*-*-* <extra_headers>): Install
3165         ppu_intrinsics.h.
3166
3167 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
3168
3169         * cfg.c (dump_flow_info): Change to also print entry and exit
3170         block info.
3171         * print-rtl.c (print_rtl_single): Allow to print rtl with
3172         -fdump-unnumbered.
3173         
3174 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
3175
3176         * df-core.h (df_dump_region): New function.
3177         * df.h (df_dump_region): New function.
3178         * loop-invariant.c (find_defs): Add call to df_dump_region.
3179         * loop-iv.c (iv_analysis_loop_init): Changed call from df_dump to
3180         df_dump_region.
3181         
3182 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
3183
3184         PR target/33168
3185         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Return
3186         true if any of the compare_section_name calls returned true,
3187         rather than if any returned false.
3188
3189 2007-08-30  Richard Guenther  <rguenther@suse.de>
3190
3191         PR tree-optimization/33199
3192         * tree-ssa-structalias.c (handle_lhs_call): New function.
3193         (find_func_aliases): In non-IPA mode make sure that for
3194         calls that return a pointer we add a constraint for the
3195         result to point to anything.
3196
3197 2007-08-30  Richard Guenther  <rguenther@suse.de>
3198
3199         * doc/invoke.texi (-mveclibabi): Document new target option.
3200         * config/i386/i386.opt (-mveclibabi): New target option.
3201         * config/i386/i386.c (ix86_veclib_handler): Handler for
3202         vectorization library support.
3203         (override_options): Handle the -mveclibabi option, initialize
3204         the vectorization library handler.
3205         (ix86_builtin_vectorized_function): As fallback call the
3206         vectorization library handler, if set.
3207         (ix86_veclibabi_acml): New static function for ACML ABI style
3208         vectorization support.
3209
3210 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
3211
3212         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
3213         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
3214         SImode and update m.  Don't run gen_lowpart_common on arbitrary
3215         memory address, force it to register first.
3216
3217         PR middle-end/32758
3218         * dce.c (dce_process_block): Don't delete setters of
3219         artificially used registers.
3220
3221 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3222
3223         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
3224         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
3225         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
3226
3227 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3228
3229         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
3230         pattern.
3231         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
3232         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
3233
3234 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3235
3236         * system.h: Activate -Wcast-qual as warning-only.
3237
3238 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
3239
3240         PR target/33168
3241         * config/rs6000/rs6000.c (compare_section_name): New function.
3242         (rs6000_elf_in_small_data_p): Compare section prefixes instead
3243         of full name.
3244
3245 2007-08-29  Olivier Hainque  <hainque@adacore.com>
3246
3247         * xcoffout.c: #include debug.h.
3248         * Makefile.in (xcoffout.o): Add debug.h dependency.
3249
3250 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
3251
3252         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
3253         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
3254
3255 2007-08-29  Richard Guenther  <rguenther@suse.de>
3256
3257         * tree-pretty-print.c (dump_generic_node): Print
3258         label DECL_UID as D.%u.
3259         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
3260
3261 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
3262
3263         * gcc/builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
3264         * gcc/builtins.def (BUILT_IN_REALLOC): New builtin.
3265
3266 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
3267
3268         PR c++/33194
3269         * tree.c (build_type_attribute_qual_variant): Set canonical types
3270         on the final, unqualified attribute variant before building the
3271         qualified version.
3272
3273 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
3274
3275         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
3276         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
3277
3278 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
3279
3280         Revert
3281         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
3282         * config/bfin/bfin.md (composev2hi): Put operands into vector
3283         with correct order.
3284
3285 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
3286
3287         * config/bfin/bfin.md (composev2hi): Put operands into vector
3288         with correct order.
3289
3290 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
3291
3292         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
3293         attribute when appropriate.
3294         (bfin_handle_l1_text_attribute): New.
3295         (bfin_handle_l1_data_attribute): New.
3296         (bfin_attribute_table): Add attributes: l1_text, l1_data,
3297         l1_data_A and l1_data_B.
3298         * doc/extend.texi (node Function Attributes): Document l1_text
3299         function attribute.
3300         (Variable Attributes): Add Blackfin subsection. Document l1_data,
3301         l1_data_A and l1_data_B variable attributes.
3302
3303 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
3304
3305         * config/bfin/bfin.opt (minline-plt): Add.
3306         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
3307         call to global functions.
3308         * doc/invoke.texi (Option Summary): Mention -minline-plt.
3309         (Blackfin Options): Document -minline-plt.
3310
3311 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
3312
3313         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
3314         given a non-function.
3315         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
3316
3317 2007-08-28  DJ Delorie  <dj@redhat.com>
3318
3319         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
3320
3321 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3322
3323         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
3324
3325 2007-08-28  Richard Guenther  <rguenther@suse.de>
3326
3327         * tree.h (struct tree_function_decl): Increase size of
3328         function_code bitfield.
3329
3330 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
3331             Kazu Hirata  <kazu@codesourcery.com>
3332
3333         * gcc/config/m68k/linux.h
3334         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
3335         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
3336         (m68k_return_in_memory): New.
3337         * gcc/config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
3338         New.
3339
3340 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
3341
3342         PR target/32661
3343         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
3344         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
3345         operand) when top VEC_SELECT extracts scalar element.
3346         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
3347         (*vec_extract_v4sf_mem): Ditto.
3348
3349 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
3350
3351         PR middle-end/32370
3352         * passes.c (init_optimization_passes): Move pass_df_finish
3353         after pass_postreload sublist.
3354
3355         PR rtl-optimization/33148
3356         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
3357         (neg (lt X 0)) if X has scalar int mode.
3358
3359         PR debug/32914
3360         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
3361         initializer, use build_vector_from_ctor if possible to create
3362         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
3363         even after this, return NULL.
3364
3365 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3366
3367         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
3368
3369 2007-08-28  Richard Guenther  <rguenther@suse.de>
3370
3371         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
3372         (struct tree_function_decl): Make function_code a bitfield.
3373         Add disregard_inline_limits flag.
3374         * cgraphunit.c (cgraph_process_new_functions): Check
3375         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
3376         (cgraph_preserve_function_body_p): Likewise.
3377         * ipa-inline.c (compute_inline_parameters): Likewise.
3378         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
3379         for GNU C extern inline functions.
3380         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
3381         * tree-inline.c (disregard_inline_limits_p): Remove.
3382         * tree-inline.h (disregard_inline_limits_p): Likewise.
3383         * c-common.c (handle_always_inline_attribute): Set
3384         DECL_DISREGARD_INLINE_LIMITS.
3385         * langhooks.c (add_builtin_function): Verify the function code
3386         fits in the bitfield.