OSDN Git Service

2009-08-28 Jan Beulich <jbeulich@novell.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-08-28  Jan Beulich  <jbeulich@novell.com>
2
3         * configure.ac: For in-tree ld, do a plain version check to
4         determine whether comdat groups are supported.
5         * configure: Regenerate.
6
7 2009-08-28  Olivier Hainque  <hainque@adacore.com>
8
9         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
10         always defined.  Reflect definition or absence of such for
11         COLLECT_EXPORT_LIST.  Readability helper.
12         (scanfilter): New enum, to help control what symbols
13         are to be considered or ignored by scan_prog_file.
14         (enum pass): Rename as "scanpass", moved together with scanfilter
15         prior to scan_prog_file's prototype.
16         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
17         Group prototype with the scanpass/scanfilter definitions, factorize
18         head comments for the several implementations at the prototype.
19         (main): Reorganize the first pass link control to let AIX
20         drag only the needed frame tables in executables.  Prevent
21         frame tables collection during the scan aimed at static ctors.
22         Pre-link and scan for frame tables later to compensate.
23         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
24         A C statement to issue assembly directives that create a reference
25         to the given DWARF table identifier label from the current function
26         section.
27         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
28         to differentiate first time section entry.  Only emit a .data
29         tables start identifier label the first time around.
30         (switch_to_frame_table_section): New function.  Helper for
31         output_call_frame_info to switch possibly BACK into the eh_frame
32         or the debug_frame section depending on FOR_EH.
33         (output_call_frame_info): Use helper to first enter the proper
34         frame section.
35         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
36         emit a link to the frame table start label from each function
37         section.
38         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
39         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
40         * config/rs6000/rs6000-protos.h: Declare it.
41         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
42
43 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
44
45         * config/sh/sh.c (split_branches): Check the result of
46         next_active_insn.
47
48 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
49
50         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
51         using -pthread -fopenmp
52
53 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
54
55         * doc/service.texi (service directory): Update URL.
56
57 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
58
59         PR rtl-optimization/40861
60         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
61         extract word from a multi-word subreg for negative byte positions.
62
63 2009-08-27  Tristan Gingold  <gingold@adacore.com>
64             Douglas B Rupp  <rupp@gnat.com>
65
66         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
67         (SECTION_VMS_OVERLAY): Define.
68         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
69         attribute.
70         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
71         for common_object.
72         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
73         common_object declarations.
74         (ia64_section_type_flags): Set section flag for common_object.
75         * config/ia64/ia64-protos.h
76         (ia64_vms_output_aligned_decl_common): Declare.
77         (ia64_vms_elf_asm_named_section): Declare.
78
79 2009-08-27  Michael Matz  <matz@suse.de>
80
81         * expr.c (expand_expr_real_2): New function taking exploded
82         unary or binary expression, split out from ...
83         (expand_expr_real_1): ... here.  Move over all unary/binary
84         switch parts to above function, in particular these codes:
85         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
86         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
87         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
88         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
89         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
90         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
91         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
92         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
93         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
94         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
95         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
96         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
97         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
98         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
99         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
100         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
101         VEC_PACK_FIX_TRUNC_EXPR.
102         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
103         full expression.
104
105 2009-08-27  Richard Guenther  <rguenther@suse.de>
106
107         * gengtype.c (main): Handle uint64_t.
108         * ipa-utils.c (get_base_var): Indent properly.
109         * tree-ssa-live.c (debug_scope_block): New function.
110         * tree-flow.h (debug_scope_block): Declare.
111         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
112         * basic-block.h (enum profile_status): Rename to
113         enum profile_status_d.
114         (x_profile_status): Adjust type.
115
116 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
117
118         PR debug/41770
119         * dwarf2out.c (get_context_die): Declare this static function.
120         (gen_type_die_with_usage): Make sure a DIE is a generated for
121         the context of a typedef.
122
123 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
124
125         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
126         switch.
127
128 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
129
130         * config/mips/mips-protos.h (mips_output_sync): Declare.
131         (mips_sync_loop_insns): Likewise.
132         (mips_output_sync_loop): Replace first two parameters with an rtx.
133         * config/mips/mips.c (mips_multi_member): New structure.
134         (mips_multi_members): New variable.
135         (mips_multi_start): New function.
136         (mips_multi_add): Likewise.
137         (mips_multi_add_insn): Likewise.
138         (mips_multi_add_label): Likewise.
139         (mips_multi_last_index): Likewise.
140         (mips_multi_copy_insn): Likewise.
141         (mips_multi_set_operand): Likewise.
142         (mips_multi_write): Likewise.
143         (mips_print_operand_punctuation): Remove '%|' and '%-'.
144         (mips_init_print_operand_punct): Update accordingly.
145         (mips_start_ll_sc_sync_block): New function.
146         (mips_end_ll_sc_sync_block): Likewise.
147         (mips_output_sync): Likewise.
148         (mips_sync_insn1_template): Likewise.
149         (mips_sync_insn2_template): Likewise.
150         (mips_get_sync_operand): Likewise.
151         (mips_process_sync_loop): Likewise.
152         (mips_output_sync_loop): Use mips_process_sync_loop.
153         (mips_sync_loop_insns): New function.
154         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
155         (MIPS_COMPARE_AND_SWAP_12): Likewise.
156         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
157         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
158         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
159         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
160         (MIPS_SYNC_OLD_OP_12): Likewise.
161         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
162         (MIPS_SYNC_NEW_OP_12): Likewise.
163         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
164         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
165         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
166         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
167         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
168         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
169         * config/mips/mips.md (sync_mem): New attribute.
170         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
171         (sync_exclusive_mask, sync_required_oldval): Likewise.
172         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
173         (sync_release_barrier): Likewise.
174         (length): Handle sync loops.
175         (sync): Use mips_output_sync.
176         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
177         (sync_compare_and_swap<mode>): Set the new sync_* attributes
178         and use mips_output_sync_loop.
179         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
180         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
181         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
182         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
183         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
184         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
185         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
186         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
187         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
188
189 2009-08-26  Richard Guenther  <rguenther@suse.de>
190
191         PR middle-end/41163
192         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
193         the types to not match.
194         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
195         verification.
196         * tree-ssa.c (useless_type_conversion_p): Conversions to
197         pointers to unprototyped functions are useless.
198
199 2009-08-26  Richard Guenther  <rguenther@suse.de>
200
201         * tree-ssa-structalias.c (create_variable_info_for): Remove
202         strange whole-program condition, prepare to be called for non-globals.
203         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
204         params build a representative with known type and track its fields.
205
206 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
207
208         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
209         clearing by a taken branch.
210         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
211         effectively after bbro pass.
212         (sync_nand<mode>): Ditto.
213         (sync_old_<fetchop_name><mode>): Ditto.
214         (sync_old_nand<mode>): Ditto.
215         (sync_new_<fetchop_name><mode>): Dito.
216         (sync_new_nand<mode>): Ditto.
217         (sync_compare_and_swap<mode>_1): Ditto.
218         (*sync_compare_and_swap<mode>): Ditto.
219         (sync_lock_test_and_set<mode>_1): Ditto.
220         ("sync_lock_test_and_set<mode>): Ditto.
221
222 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
223
224         * hwint.h (HOST_LONG_FORMAT): New macro
225         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
226         Use HOST_PTR_PRINTF.
227         * system.h (HOST_PTR_PRINTF): Resurrect old macro
228         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
229         (HOST_PTR_PRINTF): Document.
230
231 2009-08-25 Jan Hubicka  <jh@suse.cz>
232
233         * config/i386/bmmintrin.h: Replace by #error.
234
235         Revert:
236         Michael Meissner  <michael.meissner@amd.com>
237         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
238         Tony Linthicum  <tony.linthicum@amd.com>
239
240         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
241         (TARGET_ROUND): New macro for the round/ptest instructions which
242         are shared between SSE4.1 and SSE5.
243         (OPTION_MASK_ISA_ROUND): Ditto.
244         (OPTION_ISA_ROUND): Ditto.
245         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
246         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
247
248         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
249         (-mfused-madd): New switch to give users control over whether the
250         compiler optimizes to use the multiply/add SSE5 instructions.
251
252         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
253         (ix86_handle_option): Turn off 3dnow if -msse5.
254         (override_options): Add SSE5 support.
255         (print_operand): %Y prints comparison codes for SSE5 com/pcom
256         instructions.
257         (ix86_expand_sse_movcc): Add SSE5 support.
258         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
259         vector type to the next largest size.
260         (ix86_expand_sse5_pack): New function to use pperm to pack a
261         vector type to the next smallest size.
262         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
263         (IX86_BUILTIN_FMADDSD): Ditto.
264         (IX86_BUILTIN_FMADDPS): Ditto.
265         (IX86_BUILTIN_FMADDPD): Ditto.
266         (IX86_BUILTIN_FMSUBSS): Ditto.
267         (IX86_BUILTIN_FMSUBSD): Ditto.
268         (IX86_BUILTIN_FMSUBPS): Ditto.
269         (IX86_BUILTIN_FMSUBPD): Ditto.
270         (IX86_BUILTIN_FNMADDSS): Ditto.
271         (IX86_BUILTIN_FNMADDSD): Ditto.
272         (IX86_BUILTIN_FNMADDPS): Ditto.
273         (IX86_BUILTIN_FNMADDPD): Ditto.
274         (IX86_BUILTIN_FNMSUBSS): Ditto.
275         (IX86_BUILTIN_FNMSUBSD): Ditto.
276         (IX86_BUILTIN_FNMSUBPS): Ditto.
277         (IX86_BUILTIN_FNMSUBPD): Ditto.
278         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
279         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
280         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
281         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
282         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
283         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
284         (IX86_BUILTIN_PPERM): Ditto.
285         (IX86_BUILTIN_PERMPS): Ditto.
286         (IX86_BUILTIN_PERMPD): Ditto.
287         (IX86_BUILTIN_PMACSSWW): Ditto.
288         (IX86_BUILTIN_PMACSWW): Ditto.
289         (IX86_BUILTIN_PMACSSWD): Ditto.
290         (IX86_BUILTIN_PMACSWD): Ditto.
291         (IX86_BUILTIN_PMACSSDD): Ditto.
292         (IX86_BUILTIN_PMACSDD): Ditto.
293         (IX86_BUILTIN_PMACSSDQL): Ditto.
294         (IX86_BUILTIN_PMACSSDQH): Ditto.
295         (IX86_BUILTIN_PMACSDQL): Ditto.
296         (IX86_BUILTIN_PMACSDQH): Ditto.
297         (IX86_BUILTIN_PMADCSSWD): Ditto.
298         (IX86_BUILTIN_PMADCSWD): Ditto.
299         (IX86_BUILTIN_PHADDBW): Ditto.
300         (IX86_BUILTIN_PHADDBD): Ditto.
301         (IX86_BUILTIN_PHADDBQ): Ditto.
302         (IX86_BUILTIN_PHADDWD): Ditto.
303         (IX86_BUILTIN_PHADDWQ): Ditto.
304         (IX86_BUILTIN_PHADDDQ): Ditto.
305         (IX86_BUILTIN_PHADDUBW): Ditto.
306         (IX86_BUILTIN_PHADDUBD): Ditto.
307         (IX86_BUILTIN_PHADDUBQ): Ditto.
308         (IX86_BUILTIN_PHADDUWD): Ditto.
309         (IX86_BUILTIN_PHADDUWQ): Ditto.
310         (IX86_BUILTIN_PHADDUDQ): Ditto.
311         (IX86_BUILTIN_PHSUBBW): Ditto.
312         (IX86_BUILTIN_PHSUBWD): Ditto.
313         (IX86_BUILTIN_PHSUBDQ): Ditto.
314         (IX86_BUILTIN_PROTB): Ditto.
315         (IX86_BUILTIN_PROTW): Ditto.
316         (IX86_BUILTIN_PROTD): Ditto.
317         (IX86_BUILTIN_PROTQ): Ditto.
318         (IX86_BUILTIN_PROTB_IMM): Ditto.
319         (IX86_BUILTIN_PROTW_IMM): Ditto.
320         (IX86_BUILTIN_PROTD_IMM): Ditto.
321         (IX86_BUILTIN_PROTQ_IMM): Ditto.
322         (IX86_BUILTIN_PSHLB): Ditto.
323         (IX86_BUILTIN_PSHLW): Ditto.
324         (IX86_BUILTIN_PSHLD): Ditto.
325         (IX86_BUILTIN_PSHLQ): Ditto.
326         (IX86_BUILTIN_PSHAB): Ditto.
327         (IX86_BUILTIN_PSHAW): Ditto.
328         (IX86_BUILTIN_PSHAD): Ditto.
329         (IX86_BUILTIN_PSHAQ): Ditto.
330         (IX86_BUILTIN_FRCZSS): Ditto.
331         (IX86_BUILTIN_FRCZSD): Ditto.
332         (IX86_BUILTIN_FRCZPS): Ditto.
333         (IX86_BUILTIN_FRCZPD): Ditto.
334         (IX86_BUILTIN_CVTPH2PS): Ditto.
335         (IX86_BUILTIN_CVTPS2PH): Ditto.
336         (IX86_BUILTIN_COMEQSS): Ditto.
337         (IX86_BUILTIN_COMNESS): Ditto.
338         (IX86_BUILTIN_COMLTSS): Ditto.
339         (IX86_BUILTIN_COMLESS): Ditto.
340         (IX86_BUILTIN_COMGTSS): Ditto.
341         (IX86_BUILTIN_COMGESS): Ditto.
342         (IX86_BUILTIN_COMUEQSS): Ditto.
343         (IX86_BUILTIN_COMUNESS): Ditto.
344         (IX86_BUILTIN_COMULTSS): Ditto.
345         (IX86_BUILTIN_COMULESS): Ditto.
346         (IX86_BUILTIN_COMUGTSS): Ditto.
347         (IX86_BUILTIN_COMUGESS): Ditto.
348         (IX86_BUILTIN_COMORDSS): Ditto.
349         (IX86_BUILTIN_COMUNORDSS): Ditto.
350         (IX86_BUILTIN_COMFALSESS): Ditto.
351         (IX86_BUILTIN_COMTRUESS): Ditto.
352         (IX86_BUILTIN_COMEQSD): Ditto.
353         (IX86_BUILTIN_COMNESD): Ditto.
354         (IX86_BUILTIN_COMLTSD): Ditto.
355         (IX86_BUILTIN_COMLESD): Ditto.
356         (IX86_BUILTIN_COMGTSD): Ditto.
357         (IX86_BUILTIN_COMGESD): Ditto.
358         (IX86_BUILTIN_COMUEQSD): Ditto.
359         (IX86_BUILTIN_COMUNESD): Ditto.
360         (IX86_BUILTIN_COMULTSD): Ditto.
361         (IX86_BUILTIN_COMULESD): Ditto.
362         (IX86_BUILTIN_COMUGTSD): Ditto.
363         (IX86_BUILTIN_COMUGESD): Ditto.
364         (IX86_BUILTIN_COMORDSD): Ditto.
365         (IX86_BUILTIN_COMUNORDSD): Ditto.
366         (IX86_BUILTIN_COMFALSESD): Ditto.
367         (IX86_BUILTIN_COMTRUESD): Ditto.
368         (IX86_BUILTIN_COMEQPS): Ditto.
369         (IX86_BUILTIN_COMNEPS): Ditto.
370         (IX86_BUILTIN_COMLTPS): Ditto.
371         (IX86_BUILTIN_COMLEPS): Ditto.
372         (IX86_BUILTIN_COMGTPS): Ditto.
373         (IX86_BUILTIN_COMGEPS): Ditto.
374         (IX86_BUILTIN_COMUEQPS): Ditto.
375         (IX86_BUILTIN_COMUNEPS): Ditto.
376         (IX86_BUILTIN_COMULTPS): Ditto.
377         (IX86_BUILTIN_COMULEPS): Ditto.
378         (IX86_BUILTIN_COMUGTPS): Ditto.
379         (IX86_BUILTIN_COMUGEPS): Ditto.
380         (IX86_BUILTIN_COMORDPS): Ditto.
381         (IX86_BUILTIN_COMUNORDPS): Ditto.
382         (IX86_BUILTIN_COMFALSEPS): Ditto.
383         (IX86_BUILTIN_COMTRUEPS): Ditto.
384         (IX86_BUILTIN_COMEQPD): Ditto.
385         (IX86_BUILTIN_COMNEPD): Ditto.
386         (IX86_BUILTIN_COMLTPD): Ditto.
387         (IX86_BUILTIN_COMLEPD): Ditto.
388         (IX86_BUILTIN_COMGTPD): Ditto.
389         (IX86_BUILTIN_COMGEPD): Ditto.
390         (IX86_BUILTIN_COMUEQPD): Ditto.
391         (IX86_BUILTIN_COMUNEPD): Ditto.
392         (IX86_BUILTIN_COMULTPD): Ditto.
393         (IX86_BUILTIN_COMULEPD): Ditto.
394         (IX86_BUILTIN_COMUGTPD): Ditto.
395         (IX86_BUILTIN_COMUGEPD): Ditto.
396         (IX86_BUILTIN_COMORDPD): Ditto.
397         (IX86_BUILTIN_COMUNORDPD): Ditto.
398         (IX86_BUILTIN_COMFALSEPD): Ditto.
399         (IX86_BUILTIN_COMTRUEPD): Ditto.
400         (IX86_BUILTIN_PCOMEQUB): Ditto.
401         (IX86_BUILTIN_PCOMNEUB): Ditto.
402         (IX86_BUILTIN_PCOMLTUB): Ditto.
403         (IX86_BUILTIN_PCOMLEUB): Ditto.
404         (IX86_BUILTIN_PCOMGTUB): Ditto.
405         (IX86_BUILTIN_PCOMGEUB): Ditto.
406         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
407         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
408         (IX86_BUILTIN_PCOMEQUW): Ditto.
409         (IX86_BUILTIN_PCOMNEUW): Ditto.
410         (IX86_BUILTIN_PCOMLTUW): Ditto.
411         (IX86_BUILTIN_PCOMLEUW): Ditto.
412         (IX86_BUILTIN_PCOMGTUW): Ditto.
413         (IX86_BUILTIN_PCOMGEUW): Ditto.
414         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
415         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
416         (IX86_BUILTIN_PCOMEQUD): Ditto.
417         (IX86_BUILTIN_PCOMNEUD): Ditto.
418         (IX86_BUILTIN_PCOMLTUD): Ditto.
419         (IX86_BUILTIN_PCOMLEUD): Ditto.
420         (IX86_BUILTIN_PCOMGTUD): Ditto.
421         (IX86_BUILTIN_PCOMGEUD): Ditto.
422         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
423         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
424         (IX86_BUILTIN_PCOMEQUQ): Ditto.
425         (IX86_BUILTIN_PCOMNEUQ): Ditto.
426         (IX86_BUILTIN_PCOMLTUQ): Ditto.
427         (IX86_BUILTIN_PCOMLEUQ): Ditto.
428         (IX86_BUILTIN_PCOMGTUQ): Ditto.
429         (IX86_BUILTIN_PCOMGEUQ): Ditto.
430         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
431         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
432         (IX86_BUILTIN_PCOMEQB): Ditto.
433         (IX86_BUILTIN_PCOMNEB): Ditto.
434         (IX86_BUILTIN_PCOMLTB): Ditto.
435         (IX86_BUILTIN_PCOMLEB): Ditto.
436         (IX86_BUILTIN_PCOMGTB): Ditto.
437         (IX86_BUILTIN_PCOMGEB): Ditto.
438         (IX86_BUILTIN_PCOMFALSEB): Ditto.
439         (IX86_BUILTIN_PCOMTRUEB): Ditto.
440         (IX86_BUILTIN_PCOMEQW): Ditto.
441         (IX86_BUILTIN_PCOMNEW): Ditto.
442         (IX86_BUILTIN_PCOMLTW): Ditto.
443         (IX86_BUILTIN_PCOMLEW): Ditto.
444         (IX86_BUILTIN_PCOMGTW): Ditto.
445         (IX86_BUILTIN_PCOMGEW): Ditto.
446         (IX86_BUILTIN_PCOMFALSEW): Ditto.
447         (IX86_BUILTIN_PCOMTRUEW): Ditto.
448         (IX86_BUILTIN_PCOMEQD): Ditto.
449         (IX86_BUILTIN_PCOMNED): Ditto.
450         (IX86_BUILTIN_PCOMLTD): Ditto.
451         (IX86_BUILTIN_PCOMLED): Ditto.
452         (IX86_BUILTIN_PCOMGTD): Ditto.
453         (IX86_BUILTIN_PCOMGED): Ditto.
454         (IX86_BUILTIN_PCOMFALSED): Ditto.
455         (IX86_BUILTIN_PCOMTRUED): Ditto.
456         (IX86_BUILTIN_PCOMEQQ): Ditto.
457         (IX86_BUILTIN_PCOMNEQ): Ditto.
458         (IX86_BUILTIN_PCOMLTQ): Ditto.
459         (IX86_BUILTIN_PCOMLEQ): Ditto.
460         (IX86_BUILTIN_PCOMGTQ): Ditto.
461         (IX86_BUILTIN_PCOMGEQ): Ditto.
462         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
463         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
464         (enum multi_arg_type): New enum for describing the various SSE5
465         intrinsic argument types.
466         (bdesc_multi_arg): New table for SSE5 intrinsics.
467         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
468         (ix86_expand_multi_arg_builtin): New function for creating SSE5
469         intrinsics.
470         (ix86_expand_builtin): Add SSE5 intrinsic support.
471         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
472         operand instructions.
473         (ix86_expand_sse5_multiple_memory): New function to split the
474         second memory reference from SSE5 instructions.
475         (type_has_variadic_args_p): Delete in favor of stdarg_p.
476         (ix86_return_pops_args): Use stdarg_p to determine if the function
477         has variable arguments.
478         (ix86_setup_incoming_varargs): Ditto.
479         (x86_this_parameter): Ditto.
480
481         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
482         declaration.
483         (ix86_expand_sse5_pack): Ditto.
484         (ix86_sse5_valid_op_p): Ditto.
485         (ix86_expand_sse5_multiple_memory): Ditto.
486
487         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
488         constant for SSE5 support.
489         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
490         (UNSPEC_SSE5_TRUEFALSE): Ditto.
491         (UNSPEC_SSE5_PERMUTE): Ditto.
492         (UNSPEC_SSE5_ASHIFT): Ditto.
493         (UNSPEC_SSE5_LSHIFT): Ditto.
494         (UNSPEC_FRCZ): Ditto.
495         (UNSPEC_CVTPH2PS): Ditto.
496         (UNSPEC_CVTPS2PH): Ditto.
497         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
498         (PCOM_TRUE): Ditto.
499         (COM_FALSE_S): Ditto.
500         (COM_FALSE_P): Ditto.
501         (COM_TRUE_S): Ditto.
502         (COM_TRUE_P): Ditto.
503         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
504         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
505         types.
506         (memory attribute): Ditto.
507         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
508         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
509         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
510         (floor<mode>2): Ditto.
511         (ceil<mode>2): Ditto.
512         (btrunc<mode>2): Ditto.
513         (nearbyintdf2): Ditto.
514         (nearbyintsf2): Ditto.
515         (sse_setccsf): Disable if SSE5.
516         (sse_setccdf): Ditto.
517         (sse5_setcc<mode>): New support for SSE5 conditional move.
518         (sse5_pcmov_<mode>): Ditto.
519
520         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
521         (SSEMODEF4): Ditto.
522         (SSEMODEF2P): Ditto.
523         (ssemodesuffixf4): New mode attribute for SSE5.
524         (ssemodesuffixf2s): Ditto.
525         (ssemodesuffixf2c): Ditto.
526         (sserotatemax): Ditto.
527         (ssescalarmode): Ditto.
528         (sse_maskcmpv4sf3): Disable if SSE5.
529         (sse_maskcmpv2df3): Ditto.
530         (sse_vmmaskcmpv4sf3): Ditto.
531         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
532         (sse5_vmfmadd<mode>4): Ditto.
533         (sse5_fmsub<mode>4): Ditto.
534         (sse5_vmfmsub<mode>4): Ditto.
535         (sse5_fnmadd<mode>4): Ditto.
536         (sse5_vmfnmadd<mode>4): Ditto.
537         (sse5_fnmsub<mode>4): Ditto.
538         (sse5_vmfnmsub<mode>4): Ditto.
539         (sse5i_fmadd<mode>4): Ditto.
540         (sse5i_fmsub<mode>4): Ditto.
541         (sse5i_fnmadd<mode>4): Ditto.
542         (sse5i_fnmsub<mode>4): Ditto.
543         (sse5i_vmfmadd<mode>4): Ditto.
544         (sse5i_vmfmsub<mode>4): Ditto.
545         (sse5i_vmfnmadd<mode>4): Ditto.
546         (sse5i_vmfnmsub<mode>4): Ditto.
547         (mulv16qi3): Add SSE5 support.
548         (mulv4si3): Ditto.
549         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
550         (sse2_mulv4si3): Disable if SSE5.
551         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
552         (sse4_1_roundps): Ditto.
553         (sse4_1_roundsd): Ditto.
554         (sse4_1_roundss): Ditto.
555         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
556         be generated.
557         (sse_maskcmpsf3): Ditto.
558         (sse_vmmaskcmpv4sf3): Ditto.
559         (sse2_maskcmpv2df3): Ditto.
560         (sse2_maskcmpdf3): Ditto.
561         (sse2_vmmaskcmpv2df3): Ditto.
562         (sse2_eq<mode>3): Ditto.
563         (sse2_gt<mode>3): Ditto.
564         (sse5_pcmov_<mode>): Add SSE5 support.
565         (vec_unpacku_hi_v16qi): Ditto.
566         (vec_unpacks_hi_v16qi): Ditto.
567         (vec_unpacku_lo_v16qi): Ditto.
568         (vec_unpacks_lo_v16qi): Ditto.
569         (vec_unpacku_hi_v8hi): Ditto.
570         (vec_unpacks_hi_v8hi): Ditto.
571         (vec_unpacku_lo_v8hi): Ditto.
572         (vec_unpacks_lo_v8hi): Ditto.
573         (vec_unpacku_hi_v4si): Ditto.
574         (vec_unpacks_hi_v4si): Ditto.
575         (vec_unpacku_lo_v4si): Ditto.
576         (vec_unpacks_lo_v4si): Ditto.
577         (sse5_pmacsww): New SSE5 intrinsic insn.
578         (sse5_pmacssww): Ditto.
579         (sse5_pmacsdd): Ditto.
580         (sse5_pmacssdd): Ditto.
581         (sse5_pmacssdql): Ditto.
582         (sse5_pmacssdqh): Ditto.
583         (sse5_pmacsdqh): Ditto.
584         (sse5_pmacsswd): Ditto.
585         (sse5_pmacswd): Ditto.
586         (sse5_pmadcsswd): Ditto.
587         (sse5_pmadcswd): Ditto.
588         (sse5_pcmov_<move>): Conditional move support on SSE5.
589         (sse5_phaddbw): New SSE5 intrinsic insn.
590         (sse5_phaddbd): Ditto.
591         (sse5_phaddbq): Ditto.
592         (sse5_phaddwd): Ditto.
593         (sse5_phaddwq): Ditto.
594         (sse5_phadddq): Ditto.
595         (sse5_phaddubw): Ditto.
596         (sse5_phaddubd): Ditto.
597         (sse5_phaddubq): Ditto.
598         (sse5_phadduwd): Ditto.
599         (sse5_phadduwq): Ditto.
600         (sse5_phaddudq): Ditto.
601         (sse5_phsubbw): Ditto.
602         (sse5_phsubwd): Ditto.
603         (sse5_phsubdq): Ditto.
604         (sse5_pperm): Ditto.
605         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
606         (sse5_pperm_zero_v16qi_v8hi): Ditto.
607         (sse5_pperm_sign_v8hi_v4si): Ditto.
608         (sse5_pperm_zero_v8hi_v4si): Ditto.
609         (sse5_pperm_sign_v4si_v2di): Ditto.
610         (sse5_pperm_sign_v4si_v2di): Ditto.
611         (sse5_pperm_pack_v2di_v4si): Ditto.
612         (sse5_pperm_pack_v4si_v8hi): Ditto.
613         (sse5_pperm_pack_v8hi_v16qi): Ditto.
614         (sse5_perm<mode>): New SSE5 intrinsic insn.
615         (rotl<mode>3): Ditto.
616         (sse5_rotl<mode>3): Ditto.
617         (sse5_ashl<mode>3): Ditto.
618         (sse5_lshl<mode>3): Ditto.
619         (sse5_frcz<mode>2): Ditto.
620         (sse5s_frcz<mode>2): Ditto.
621         (sse5_cvtph2ps): Ditto.
622         (sse5_cvtps2ph): Ditto.
623         (sse5_vmmaskcmp<mode>3): Ditto.
624         (sse5_com_tf<mode>3): Ditto.
625         (sse5_maskcmp<mode>3): Ditto.
626         (sse5_maskcmp_uns<mode>3): Ditto.
627         (sse5_maskcmp_uns2<mode>3): Ditto.
628         (sse5_pcom_tf<mode>3): Ditto.
629
630         * config/i386/predicates.md (sse5_comparison_float_operator):
631         New predicate to match the comparison operators supported by
632         the SSE5 com instruction.
633         (ix86_comparison_int_operator): New predicate to match just the
634         signed int comparisons.
635         (ix86_comparison_uns_operator): New predicate to match just the
636         unsigned int comparisons.
637
638         * doc/invoke.texi (-msse5): Add documentation.
639         (-mfused-madd): Ditto.
640
641         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
642
643         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
644         mmintrin-common.h.
645         (x86_64-*-*): Ditto.
646
647         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
648
649         * config/i386/bmmintrin.h: New file, provide common x86 compiler
650         intrinisics for SSE5.
651
652         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
653         mmintrin-common.h.
654
655         * config/i386/mmintrin-common.h: New file, to contain common
656         instructions between SSE4.1 and SSE5.
657
658         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
659         FOREACH_FUNCTION_ARGS to iterate over the argument list.
660         (gen_regparm_prefix): Ditto.
661
662         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
663         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
664         prototype_p to determine if a function is prototyped.
665
666 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
667
668         * c-common.c (c_common_reswords) add the alignof keyword,
669         with same RID as __alignof and __alignof__
670
671 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
672
673         * hooks.h (hook_bool_const_int_const_int_true): Declare.
674         * hooks.c (hook_bool_const_int_const_int_true): New function.
675         * target.h (struct gcc_target): Add can_eliminate field.
676         * target-def.h (TARGET_CAN_ELIMINATE): Define.
677         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
678         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
679         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
680         (elim_table): Revise comment.
681         * system.h (CAN_ELIMINATE): Poison.
682         * defaults.h (CAN_ELIMINATE): Remove.
683         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
684
685         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
686         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
687         Define macro.
688         (alpha_vms_can_eliminate): Declare as static, change return type to
689         bool.
690         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
691
692         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
693         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
694         (arm_can_eliminate): New function.
695
696         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
697         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
698         (avr_can_eliminate): Declare as static.
699         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
700
701         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
702         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
703         (bfin_can_eliminate): New function.
704
705         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
706         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
707         (crx_can_eliminate): New function.
708
709         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
710         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
711         (fr30_can_eliminate): New function.
712
713         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
714         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
715         (frv_can_eliminate): New function.
716
717         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
718         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
719         (h8300_can_eliminate): New function.
720
721         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
722         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
723         (i386_can_eliminate): Declare as static, change return type to bool.
724         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
725
726         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
727         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
728         (ia64_can_eliminate): New function.
729
730         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
731         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
732         (iq2000_can_eliminate): New function.
733
734         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
735         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
736         (m32r_can_eliminate): New function.
737
738         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
739         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
740         (m68hc11_can_eliminate): New function.
741
742         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
743         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
744         (m68k_can_eliminate): New function.
745
746         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
747         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
748         (mep_can_eliminate): New function.
749
750         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
751         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
752         (mips_can_eliminate): New function.
753
754         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
755         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
756         (rs6000_can_eliminate): New function.
757
758         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
759         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
760         (s390_can_eliminate): Declare as static.
761         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
762
763         * config/score/score.h (CAN_ELIMINATE): Remove macro.
764         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
765         (score_can_eliminate): New function.
766
767         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
768         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
769         (sparc_can_eliminate): Declare as static.
770         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
771
772         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
773         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
774         (xstormy16_can_eliminate): New function.
775
776         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
777         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
778         (v850_can_eliminate): New function.
779
780 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
781
782         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
783         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
784         (*movdfcc_ext[1234]): Disable for IEEE mode.
785
786 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
787
788         * gimplify.c (prepare_gimple_addressable): New static function.
789         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
790         it addressable.
791         (gimplify_addr_expr): Invoke it similarly on the operand instead of
792         manually fiddling with it.
793
794 2009-08-25  Michael Matz  <matz@suse.de>
795
796         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
797         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
798         full expression.
799         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
800         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
801         (do_jump): Split out code for simple binary comparisons into ...
802         (do_jump_1): ... this, taking the individual operands and code.
803         Change callers to helper function above accordingly.
804         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
805         comparisons.
806
807 2009-08-25  Michael Matz  <matz@suse.de>
808
809         * expr.h (struct separate_ops, sepops): New type for passing
810         around an exploded simple expression.
811         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
812         Use this structure instead of expression tree.
813         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
814         expression, only its type.
815         (expand_vec_cond_expr): Take type and individual operands instead
816         of full expression.
817         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
818         expand_vec_shift_expr): Change prototype accordingly.
819         * tree-vect-stmts.c (vectorizable_condition): Change call of
820         expand_vec_cond_expr_p to pass only type.
821         * expr.c (do_store_flags): Change prototype and implementation
822         to take an exploded expression.
823         (expand_expr_real_1): New local ops initialized with details
824         of the full expression.  Use it instead of full
825         expression in calls to do_store_flags, expand_vec_cond_expr,
826         expand_widen_pattern_expr and expand_vec_shift_expr.
827
828 2009-08-25  Michael Matz  <matz@suse.de>
829
830         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
831         treeop2 initialized with first three operands of the full expression.
832         Substitute all TREE_OPERAND (exp, [012]) calls with them.
833
834 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
835
836         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
837         (__gthread_objc_condition_allocate): Mark arguments as unused.
838         (__gthread_objc_condition_deallocate): Likewise.
839         (__gthread_objc_condition_wait): Likewise.
840         (__gthread_objc_condition_broadcast): Likewise.
841         (__gthread_objc_condition_signal): Likewise.
842         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
843         (__gthread_objc_thread_id): Likewise.
844
845 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
846
847         PR middle-end/41149
848         * tree-pretty-print.c (print_call_name): Print the correct call name
849         for procedure pointer components.
850
851 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
852
853         * config/ia64/ia64.c (ia64_promote_function_mode): Call
854         default_promote_function_mode when not VMS.
855
856 2009-08-24  Olivier Hainque  <hainque@adacore.com>
857
858         * convert.c (convert_to_integer): Don't assume an input pointer is
859         POINTER_SIZE wide.  Fetch from the type instead.
860
861 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
862
863         * configure.ac (AC_PREREQ): Bump to 2.64.
864
865 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
866
867         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
868         (process_command): Don't search standard_exec_prefix_1 and
869         standard_exec_prefix_2.
870
871 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
872
873         * config/arm/arm.c (output_return_instruction): Handle for
874         unified syntax.
875
876 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
877
878         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
879
880 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
881
882         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
883         (*arm_movdf_vfp): Likewise.
884
885 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
886
887         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
888         (vashr<mode>3): Rename from ashr<mode>3.
889         (vlshr<mode>3): Rename from lshr<mode>3.
890
891 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
892
893         PR/40786
894         * c-format.c (format_wanted_type):  Add new member scalar_identity_flag.
895         (check_format_info_main): Use scalar_identify_flag.
896         (check_format_types): Check for scalar size identity if
897         scalar_identify_flag is set.
898         (printf_length_specs): Extend by new field.
899         (asm_fprintf_length_specs): Likewise.
900         (gcc_diag_length_specs): Likewise.
901         (scanf_length_specs): Likewise.
902         (strfmon_length_specs): Likewise.
903         (gcc_gfc_length_specs): Likewise.
904         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
905         (ms_printf_flag_specs): Likewise.
906         * c-format.h (format_length_info): Add new member scalar_identity_flag.
907
908 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
909
910         PR target/40718
911         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
912         (*call_value_pop_1): Ditto.
913         (*sibcall_pop_1): New insn pattern.
914         (*sibcall_value_pop_1): Ditto.
915
916 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
917
918         PR target/41081
919         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
920         ashrsi3_64): New.
921
922 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
923
924         PR target/41081
925         * fwprop.c (try_fwprop_subst): Allow multiple sets.
926         (get_reg_use_in): New function.
927         (forward_propagate_subreg): Propagate through subreg of zero_extend
928         or sign_extend.
929
930 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
931
932         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
933         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
934
935 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
936
937         * configure.ac: Remove --with-datarootdir, --with-docdir,
938         --with-htmldir switches.  No need to call AC_SUBST for
939         datarootdir, docdir, htmldir any more.
940         * configure: Regenerate.
941         * doc/install.texi (Configuration): Document --datarootdir,
942         --docdir, --htmldir, --pdfdir; update documentation for
943         --infodir, --mandir.
944         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
945         M4 to 1.4.6.
946
947         * aclocal.m4: Regenerate.
948         * config.in: Regenerate.
949         * configure: Regenerate.
950
951 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
952             Olivier Hainque  <hainque@adacore.com>
953
954         * config/ia64/ia64.c: Include libfuncs.h.
955         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
956         (ia64_expand_call): Use reg 25 on VMS.
957         (ia64_initialize_trampoline): Fix for VMS ABI.
958         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
959         (ia64_function_arg): Initialize reg 25 on VMS.
960         Fix OpenVMS ABI issues for varargs.
961         For OpenVMS, emit the Argument Information register set in the
962         incoming/sibcall case as well.
963         (ia64_arg_type): New function.
964         (ia64_function_arg_advance): Keep track of cum->words.
965         Fix OpenVMS ABI issues for varargs.
966         (ia64_function_value): On VMS, promote mode of non-aggregate types.
967         (ia64_override_options): Set flag_no_common on VMS.
968         (ia64_init_builtins): Disable FWRITE builtin.
969         (ia64_asm_output_external): Call DO_CRTL_NAMES.
970         (ia64_vms_init_libfuncs): Add decc$ routines.
971         (ia64_vms_valid_pointer_mode): New function.
972         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
973         (ia64_promote_function_mode): New function
974         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
975         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
976         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
977         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
978         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
979         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
980         Suppress trailing '#' if VALUE is numeric.
981         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
982         ia64_promote_function_mode.
983         (TARGET_VALID_POINTER_MODE): Define.
984
985 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
986
987         PR target/40671
988         * config/rs6000/rs6000.c (rs6000_override_options): Use
989         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
990
991         PR target/41145
992         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
993         reporting of vector + decimal/boolean/complex error.
994
995 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
996
997         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
998         __vector double TYPE_DECL.
999
1000 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
1001
1002         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
1003         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
1004         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
1005         to pointer to enum machine_mode.  Update all callers as needed.
1006
1007 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
1008
1009         * config/alpha/alpha.md (exception_receiver): Emit alternative
1010         GP load sequence if flag_reorder_blocks_and_partition is set.
1011         (*exception_receiver_2): Also enable when
1012         flag_reorder_blocks_and_partition is set.
1013
1014 2009-08-20  Matt Rice  <ratmice@gmail.com>
1015             Diego Novillo  <dnovillo@google.com>
1016
1017         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
1018         tree-ssa-sccvn.h.
1019
1020 2009-08-20  Richard Guenther  <rguenther@suse.de>
1021
1022         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
1023         * c-tree.h (c_dup_lang_specific_decl): Remove.
1024         (struct lang_decl, struct lang_type): Move definitions ...
1025         * c-lang.h: ... here.  New file.
1026         * c-decl.c: Include c-lang.h.
1027         (c_dup_lang_specific_decl): Remove.
1028         * c-typeck.c: Include c-lang.h.
1029         * Makefile.in (c-decl.o): Add c-lang.h dependency.
1030         (c-typeck.o): Likewise.
1031         * c-config-lang.in (gtfiles): Add c-lang.h.
1032         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
1033         like c-tree.h.
1034
1035 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
1036
1037         * config/alpha/alpha.c (alpha_end_function): Do not clear
1038         crtl->emit structure and free insn locators if cfun->is_thunk is true,
1039         this is now handled in generic code.
1040
1041 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
1042
1043         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
1044         (s390_z10_fix_long_loop_prediction): New function.
1045         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
1046         (s390_reorg): Walk over the INSNs and invoke
1047         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
1048
1049 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
1050
1051         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
1052         "*brx_64bit", "*brx_31bit"): New patterns.
1053         * config/s390/s390.c ('E'): New output modifier.
1054
1055 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1056             Richard Earnshaw  <richard.earnshaw@arm.com>
1057
1058         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
1059         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
1060
1061 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1062
1063         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
1064         patterns.
1065         * pa.c (emit_move_sequence): Check if address of operand1 is valid
1066         for mode mode of operand0 when doing secondary reload for SAR.
1067
1068 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
1069
1070         PR middle-end/41123
1071         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
1072         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
1073
1074 2009-08-19  Jason Merrill  <jason@redhat.com>
1075
1076         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
1077         supported template depth in C++0x.
1078
1079 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
1080
1081         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
1082         free_after_compilation.
1083         * config/score/score7.c (score7_output_mi_thunk): Likewise.
1084         * config/score/score3.c (score3_output_mi_thunk): Likewise.
1085         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
1086         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
1087         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
1088         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
1089         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
1090
1091 2009-08-19  Ian Lance Taylor  <iant@google.com>
1092
1093         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
1094         of (plus (mult (neg B) C) A).
1095
1096 2009-08-18  Michael Matz  <matz@suse.de>
1097
1098         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
1099         instead of comparing TYPE_MAIN_VARIANT for equality.
1100         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
1101         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
1102         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
1103         * gimplify.c (goa_lhs_expr_p): Ditto and use
1104         STRIP_USELESS_TYPE_CONVERSION.
1105
1106 2009-08-18  Michael Matz  <matz@suse.de>
1107
1108         * tree-ssa-structalias.c (create_variable_info_for): Also mark
1109         first field in a struct.
1110         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
1111
1112 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
1113
1114         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
1115         locators before emit_insn is called.  Remove assert that
1116         cfun->is_thunk.
1117         (alpha_end_function): Clear crtl->emit structure and free insn
1118         locators if cfun->is_thunk is true.
1119
1120 2009-08-18  Jason Merrill  <jason@redhat.com>
1121
1122         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
1123         type if available.
1124         * configure.ac: Test for it.
1125         * configure, config.in: Regenerate.
1126         * doc/install.texi: Document --enable-gnu-unique-object.
1127
1128 2009-08-18  Richard Guenther  <rguenther@suse.de>
1129
1130         PR middle-end/41094
1131         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
1132         pow(x,y*z) only if x is nonnegative.
1133
1134 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
1135
1136         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
1137         on jumps.
1138
1139         PR target/40971
1140         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
1141         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
1142
1143 2009-08-17  DJ Delorie  <dj@redhat.com>
1144
1145         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
1146         * config/m32c/prologue.md (epilogue_freit): New.
1147         (fset_b): New.
1148         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
1149         (bank_switch_p): Likewise.
1150         (fast_interrupt_p): Likewise.
1151         (interrupt_p): Likewise.
1152         (m32c_conditional_register_usage): Round memregs size up.
1153         (need_to_save): We only need to save $a0 when we use ENTER.
1154         (interrupt_p): Check for fast_interrupt too.
1155         (bank_switch_p): New.
1156         (fast_interrupt_p): New.
1157         (m32c_attribute_table): Add bank_switch and fast_interrupt.
1158         (m32c_emit_prolog): Support bank switching and fast interrupts.
1159         * doc/extend.texi (Function Attributes): Add bank_switch and
1160         fast_interrupt.
1161
1162 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
1163
1164         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
1165         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
1166
1167 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
1168
1169         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
1170         (menu): Add IA-64/VMS Options.
1171         (IA-64/VMS Options): Likewise.
1172
1173 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
1174
1175         PR target/38599
1176         * config/mips/mips.md (*lwxs): Use :P for pointer values.
1177
1178 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
1179
1180         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
1181         (mips_pop_asm_switch): Likewise.
1182         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
1183         with...
1184         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
1185         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
1186         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
1187         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
1188         instead of set_noreorder.
1189         (mips_output_function_prologue): Use the new functions.
1190         (mips_output_function_epilogue): Likewise.
1191         (mips_need_noat_wrapper_p): New function, split out from...
1192         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
1193         Use mips_push_asm_switch and mips_pop_asm_switch.
1194         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
1195         and mips_pop_asm_switch.
1196         (ASM_OUTPUT_REG_POP): Likewise.
1197         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
1198         Use mips_pop_asm_switch.
1199         (mips_asm_switch): New structure.
1200         (set_noreorder, set_nomacro): Replace with...
1201         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
1202         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
1203         instead of set_nomacro.
1204         (fix_truncsfsi2_macro): Likewise.
1205         (cprestore): Likewise.
1206         (hazard): Use mips_noreorder instead of set_noreorder.
1207         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
1208
1209 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
1210
1211         * config/alpha/alpha.c (alpha_and_function): Handle NULL_RTX returned
1212         from prev_active_insn.
1213
1214 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
1215
1216         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
1217         * config/avr/avr.c (avr_override_options): Initialize
1218         avr_current_arch variable.
1219         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
1220         __AVR_HAVE_16BIT_SP__ according to the device type.
1221         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
1222         TARGET_TINY_STACK.
1223         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
1224         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
1225
1226 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
1227
1228         PR debug/37801
1229         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
1230         generating inlined subroutine die only. We shouldn't be
1231         called for anything else.
1232         (gen_block_die): Don't generate inline subroutine debug info for
1233         abstract blocks.
1234
1235 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
1236
1237         * graphite-poly.c (print_pbb): Print PBB index.
1238
1239 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
1240
1241         PR middle-end/40981
1242         * graphite-interchange.c (ppl_max_for_le): Moved...
1243         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
1244         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
1245         ppl_Pointset_Powerset_C_Polyhedron_maximize.
1246         * graphite-ppl.h (ppl_max_for_le): Declared.
1247
1248 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
1249
1250         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
1251         supported on all platforms.
1252         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
1253         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
1254         * c-pragma.c: Likewise.
1255         * target-def.h (TARGET_INITIALIZER): Remove
1256         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
1257         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
1258
1259 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
1260
1261         * config/ia64/fde-vms.c: New file.
1262         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
1263         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
1264         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
1265         (uw_frame_state_for): Only register a personality routine if it is
1266         known to be compatible with our expectations.
1267         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
1268         Declare unw_table_entry stack variable and
1269         mod all calls to _Unwind_FindTableEntry to add arg.
1270         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
1271         (_Unwind_FindTableEntry): Add arg to prototype.
1272
1273 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
1274
1275         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
1276         field 'signal_pfs_loc'.
1277         (uw_frame_state_for): Remove duplicate code dealing with leaf
1278         procedures without unwind info.
1279         If in the frame after unwinding through a signal handler, restore
1280         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
1281         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
1282         'pfs_loc' to the AR.PFS location in the signal context; instead
1283         set 'signal_pfs_loc'.
1284         Manually generate the unwind info for the AR.PFS register.
1285         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
1286         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
1287         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
1288         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
1289         instead set 'signal_pfs_loc'.
1290         Remove code preventing the AR.PFS register from being restored
1291         from the signal context.
1292
1293 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
1294             Tristan Gingold  <gingold@adacore.com>
1295
1296         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
1297         * config/ia64/t-vms: New file.
1298         * config/ia64/vms64.h: New file.
1299         * config/ia64/vms.h: New file.
1300         * config/ia64/vms-crtinit.asm: New file.
1301         * config/ia64/vms_symvec_libgcc_s.opt: New file.
1302         * config/ia64/vms-unwind.h: New file.
1303
1304 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
1305
1306         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
1307         TFmode compares.
1308
1309 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1310
1311         PR middle-end/30789
1312         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
1313         Move declaration...
1314         * real.h (do_mpc_arg2): ... here.
1315         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
1316         and RDIV_EXPR.
1317
1318 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
1319
1320         * final.c (add_debug_prefix_map): Don't use GC memory for
1321         old_prefix and new_prefix.
1322
1323 2009-08-14  Richard Guenther  <rguenther@suse.de>
1324
1325         * ipa-prop.c (compute_complex_pass_through): If we cannot
1326         compute a non-varying offset for IPA_JF_ANCESTOR punt.
1327
1328 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1329
1330         * c-lex.c (c_lex_with_flags): Increase size of local variable
1331         to avoid memory clobber.
1332
1333 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
1334
1335         PR target/40934
1336         * config/i386/i386.c (ix86_fp_comparison_strategy):
1337         Only enable/disable sahf at function granularity.
1338
1339 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
1340
1341         PR rtl-optimization/41064
1342         * reload1.c (reload_as_needed): Don't call extract_insn
1343         for known invalid replacements after calling
1344         validate_replace_rtx_group and verify_changes.
1345
1346 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
1347
1348         PR target/41019
1349         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
1350         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
1351         ix86_expand_fp_vcond.
1352         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
1353         Assert that operation is supported by ix86_expand_int_vcond.
1354         (vcondu<SSEMODE124C8:mode>): Ditto.
1355
1356 2009-08-13  DJ Delorie  <dj@redhat.com>
1357
1358         * config/i386/djgpp-stdint.h: New.
1359         * config.gcc (djgpp): Use it.
1360
1361 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
1362
1363         * config/sh/sh.c (sh_override_options): When flag_exceptions or
1364         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
1365
1366 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
1367
1368         * tree-ssa-loop-prefetch.c
1369         (prune_ref_by_group_reuse): Enhance probabilistic analysis
1370         for long-stride pruning.
1371         (compute_miss_rate): New function to compute the probability
1372         that two memory references access different cache lines.
1373
1374 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
1375
1376         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
1377
1378 2009-08-13  Richard Guenther  <rguenther@suse.de>
1379
1380         PR middle-end/41047
1381         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
1382         use the constant pointer type.
1383         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
1384         of CV qualifiers on the target pointer type.
1385         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
1386         conversion check before restrict check.
1387
1388 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
1389
1390         PR target/41029
1391         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
1392
1393 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
1394
1395         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
1396
1397 2009-08-12  Richard Guenther  <rguenther@suse.de>
1398
1399         PR tree-optimization/41011
1400         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
1401         and reference constructing.
1402
1403 2009-08-12  Xinliang David Li  <davidxl@google.com>
1404
1405         PR tree-optimization/41012
1406         * tree-flow.h : New external interface.
1407         * gimple-low.c (check_call_arg): Change to public function.
1408         Remove argument mismatch check in lowering.
1409         * tree-inline.h (tree_can_inline_p): Interface change.
1410         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
1411         into this function.
1412         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
1413         Call change to tree_can_inline_p function.
1414         (cgraph_decide_inlining_incrementally): Ditto.
1415
1416 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
1417
1418         PR tree-optimization/41031
1419         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
1420         on the partition variable rather than promote_mode on the source
1421         type.  Assert that the partition variable's type has the same
1422         mode as the source value's.
1423
1424 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
1425
1426         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
1427         for for_return == 2.
1428         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
1429         comments.
1430         * calls.c (expand_call): Fix typo.
1431         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
1432         and PARM_DECL.
1433         * stmt.c (expand_value_return): Use promote_function_mode to copy out
1434         of pseudo.
1435         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
1436         * config/cris/cris.c (cris_promote_function_mode): Likewise.
1437         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
1438         * config/pa/pa.c (pa_promote_function_mode): Likewise.
1439
1440 2009-08-12  Andrew Haley  <aph@redhat.com>
1441
1442         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
1443
1444 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1445
1446         PR bootstrap/40103
1447         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
1448
1449 2009-08-12  Richard Guenther  <rguenther@suse.de>
1450
1451         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
1452         * gimplify.c (gimplify_modify_expr): Do not use
1453         lang_hooks.types_compatible_p.
1454         * tree-ssa.c (useless_type_conversion_p): For aggregates
1455         just return false if the canonical types differ.
1456
1457 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1458
1459         PR middle-end/40980
1460         * sese.c (convert_for_phi_arg): New.
1461         (add_guard_exit_phis): Use convert_for_phi_arg.
1462
1463 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1464
1465         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
1466         unknown subscript upper bounds.
1467
1468 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1469             Pranav Garg  <pranav.garg2107@gmail.com>
1470
1471         * graphite-interchange.c (gather_access_strides): Removed.
1472         (ppl_max_for_le): New.
1473         (build_linearized_memory_access): New.
1474         (memory_stride_in_loop): New.
1475         (pbb_interchange_profitable_p): Reimplemented.
1476         * graphite-ppl.h (ppl_new_id_map): New.
1477         (ppl_interchange): New.
1478
1479 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1480
1481         * graphite-interchange.c (compute_subscript): Removed.
1482         (compute_array_size_cstr): Removed.
1483         (compute_array_size_poly): Removed.
1484         (compute_array_size): Removed.
1485         (gather_access_strides_poly): Removed.
1486         (gather_access_strides): Empty.
1487
1488 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1489
1490         * graphite-dependences.c (dependence_polyhedron_1): Replace
1491         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
1492         (graphite_legal_transform_dr): Same.
1493         (graphite_carried_dependence_level_k): Same.
1494         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
1495         Initialize PDR_NB_SUBSCRIPTS.
1496         (print_pdr_access_layout): Replace pdr_nb_subscripts with
1497         PDR_NB_SUBSCRIPTS.
1498         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
1499         (PDR_NB_SUBSCRIPTS): New.
1500         (pdr_nb_subscripts): Removed.
1501         (pdr_dim): Simplified.
1502         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
1503         with PDR_NB_SUBSCRIPTS.
1504
1505 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1506
1507         * graphite-interchange.c (compute_array_size): Remove use of
1508         PDR_DATA_CONTAINER.
1509         * graphite-poly.c (new_poly_dr): Remove argument data_container.
1510         Do not initialize PDR_DATA_CONTAINER.
1511         (print_pdr): Do not print PDR_DATA_CONTAINER.
1512         * graphite-poly.h (struct poly_dr): Remove data_container field.
1513         (PDR_DATA_CONTAINER): Removed.
1514         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
1515         PDR_DATA_CONTAINER.
1516         (build_poly_dr): Same.
1517
1518 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
1519             Sebastian Pop  <sebastian.pop@amd.com>
1520
1521         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
1522         copy of the dependence polyhedron.  Free the temporary objects.
1523         (graphite_carried_dependence_level_k): Free unused objects before
1524         returning.
1525
1526         * testsuite/gcc.dg/graphite/interchange-1.c: XFAILed.
1527         * testsuite/gcc.dg/graphite/interchange-2.c: XFAILed.
1528         * testsuite/gcc.dg/graphite/interchange-3.c: XFAILed.
1529         * testsuite/gcc.dg/graphite/interchange-4.c: XFAILed.
1530         * testsuite/gcc.dg/graphite/interchange-7.c: XFAILed.
1531
1532 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1533
1534         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
1535         Early return without analyzing the data dependences if no
1536         transform has been done.  Call restore_scattering if the transform
1537         is not legal.
1538         (graphite-interchange.c): Same.
1539         * graphite-poly.c (print_scattering_function): Test for
1540         PBB_TRANSFORMED.
1541         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
1542         (apply_poly_transforms): Do not gcc_assert that
1543         the transform is legal.
1544         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
1545         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
1546         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
1547         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
1548         * graphite-poly.h (struct poly_scattering): New.
1549         (struct poly_bb): Add original, transformed, and saved fields.
1550         Remove transformed_scattering, original_scattering,
1551         nb_local_variables and nb_scattering_transform fields.
1552         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
1553         (poly_scattering_new): New.
1554         (poly_scattering_free): New.
1555         (poly_scattering_copy): New.
1556         (store_scattering_pbb): New.
1557         (store_scattering): New.
1558         (restore_scattering_pbb): New.
1559         (restore_scattering): New.
1560         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
1561         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
1562
1563 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1564
1565         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
1566         (print_scop): Same.
1567
1568 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1569
1570         * Makefile.in (graphite.o): Depends on PREDICT_H.
1571         * graphite.c: Include predict.h.
1572         (graphite_finalize): Call tree_estimate_probability.
1573         * predict.c (predict_loops): Do not call scev_initialize and
1574         scev_finalize.
1575         (tree_estimate_probability_bb): New.
1576         (tree_estimate_probability): Do not initialize loops: move that
1577         code to the driver.  Call tree_estimate_probability_bb.
1578         (tree_estimate_probability_driver): New.
1579         (pass_profile): Use tree_estimate_probability_driver.
1580         * predict.h (tree_estimate_probability): Declared.
1581
1582 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1583
1584         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
1585         * graphite-dependences.c (graphite_legal_transform): Add time to
1586         TV_GRAPHITE_DATA_DEPS.
1587         (dependency_between_pbbs_p): Same.
1588         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
1589
1590 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
1591
1592         PR rtl-optimization/41033
1593         * alias.c (nonoverlapping_component_refs_p): Punt when strict
1594         aliasing is disabled.
1595
1596 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
1597
1598         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
1599         si_mask_operand, and_load_operand, low_bitmask_operand,
1600         and_reg_operand, and_operand): New predicates.
1601         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
1602         * config/mips/mips.c (and_operands_ok): New function.
1603         * config/mips/mips-protos.h (and_operands_ok): Declare it.
1604         * config/mips/mips.md (move_type): Add ext_ins and logical.
1605         (type): Handle them.
1606         (and<mode>3): Use and_reg_operand as the second operand's predicate.
1607         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
1608         shift_shift.  Remove commutative constraint modifier.
1609         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
1610         shift_shift.
1611         (*clear_upper32_dext): Remove define_insn_and_split.
1612         (*clear_upper32): Turn this define_insn_and_split ...
1613         (splitter for ANDing register with 0xffff_ffff): .. into this.
1614
1615 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
1616
1617         * combine.c (try_widen_shift_mode): Factor out code to check if an
1618         integer constant is a low-order bitmask from here ...
1619         * rtlanal.c (low_bitmask_len): ... to here.
1620         * rtl.h (low_bitmask_len): Declare.
1621
1622 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
1623
1624         PR target/8603
1625         * config/alpha/alpha.md (addsi3): Remove expander.
1626         (addsi3): Rename from *addsi3_internal insn pattern.
1627         (subsi3): Remove expander.
1628         (subsi3): Rename from *subsi3_internal insn pattern.
1629
1630 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
1631
1632         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
1633         FWRITE_UNLOCKED.
1634
1635 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
1636             Eric Botcazou  <botcazou@adacore.com>
1637             Douglas B Rupp  <rupp@gnat.com>
1638
1639         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
1640         that records that fit in 64 bits are returned by immediate value,
1641         as required by OpenVMS Calling Standard.
1642         (function_value): Adjust for above modification.
1643         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
1644         virtual_incoming_args_rtx as base object, not next_arg.
1645         * config/alpha/vms.h: (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
1646
1647 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1648
1649         * reload.c (find_reloads_subreg_address): Check the original
1650         req_equiv_mem address to detect the case where an address is
1651         not valid in the outer mode.
1652
1653 2009-08-11  Richard Guenther  <rguenther@suse.de>
1654
1655         PR bootstrap/40788
1656         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
1657
1658 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
1659
1660         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
1661         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
1662
1663 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
1664             Douglas B Rupp  <rupp@gnat.com>
1665
1666         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
1667         PT_STACK when frame_pointer_needed on OpenVMS.
1668         (alpha_pv_save_size, alpha_using_fp): Remove.
1669         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
1670         with proper processing for PT_NULL.
1671         (alpha_vms_initial_elimination_offset): New function. Support for
1672         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
1673         (alpha_sa_size): Force procedure type to PT_STACK when
1674         frame_pointer_needed on OpenVMS.
1675         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
1676         (alpha_using_fp): Likewise.
1677         (alpha_vms_can_eliminate): Add prototype.
1678         (alpha_vms_initial_elimination_offset): Likewise.
1679         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
1680         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
1681
1682 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
1683             Douglas B Rupp  <rupp@gnat.com>
1684
1685         * config/alpha/alpha.c (common_object_handler): New function.
1686         (vms_attribute_table): Declare a single attribute "common_object".
1687         (vms_output_aligned_decl_common): New global function.
1688         (SECTION_VMS_OVERLAY): Delete.
1689         (SECTION_VMS_GLOBAL): Likewise.
1690         (SECTION_VMS_INITIALIZE): Likewise.
1691         (vms_asm_named_section): Remove support for above flags.
1692         (vms_section_type_flags): Delete.
1693         (TARGET_SECTION_TYPE_FLAGS): Likewise.
1694         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
1695         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
1696         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
1697
1698 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
1699
1700         PR target/41015
1701         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
1702         (sub_ddmmss): Likewise.
1703
1704 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
1705
1706         PR bootstrap/41018
1707         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
1708         year.
1709
1710 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1711
1712         PR target/37053
1713         * reload1.c (reload_as_needed): Use cancel_changes to completely
1714         undo a failed replacement attempt.
1715
1716 2009-08-10  Richard Guenther  <rguenther@suse.de>
1717
1718         PR middle-end/41006
1719         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
1720         (useless_type_conversion_p): ... here.  Require pointer targets
1721         to be compatible.
1722
1723 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
1724
1725         PR c++/40866
1726         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
1727         loose the original type of the statement list.
1728
1729 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
1730
1731         * config/alpha/alpha.c: Include libfuncs.h
1732         (avms_asm_output_extern): New function.
1733         (alpha_init_libfuncs): Init some decc libfuncs.
1734         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
1735         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
1736         (DO_CRTL_NAMES): Define.
1737         (LIB_SPEC): Remove.
1738         * config/alpha/vms64.h: (POINTERS_EXTEND_UNSIGNED): Remove undef.
1739         (LONG_TYPE_SIZE): Define.
1740         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
1741         (SUBTARGET_SWITCHES): Define malloc64 switch.
1742         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
1743         (MASK_RETURN_ADDR): Define.
1744         doc/invoke.texi (mmalloc64): Document switch.
1745
1746 2009-08-09  Olivier Hainque  <hainque@adacore.com>
1747             Douglas B Rupp  <rupp@gnat.com>
1748
1749         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
1750         uses_condition_handler.
1751         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
1752         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
1753         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
1754         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
1755         (code_for_builtin): New insn codes for the new alpha_builtins.
1756         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
1757         (alpha_sa_size): Account for uses_condition_handler.
1758         (alpha_expand_prologue): Likewise.
1759         (alpha_start_function): Likewise.
1760         (alpha_expand_epilogue): Likewise.
1761         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
1762         establish/revert expanders.
1763         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
1764         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
1765         New expander, resorting to the alpha.c associated function.
1766         (builtin_revert_vms_condition_handler): Likewise.
1767         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
1768         __gcc_shell_handler, the static VMS condition handler used as
1769         an indirection wrapper to the current dynamically established
1770         handler.
1771         * config/alpha/vms-unwind.h: Complete rewrite.
1772         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
1773         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
1774
1775 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
1776             Douglas B Rupp  <rupp@gnat.com>
1777
1778         * config/alpha/alpha.c (alpha_links): Add 'target' field.
1779         (alpha_need_linkage): Handle aliases.  Return function symbol.
1780         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
1781         Use ultimate alias target for the linkage name.
1782         * config/alpha/alpha.md (movmemdi): Use the symbol returned
1783         by alpha_need_linkage for the function symbol.
1784         (setmemdi): Likewise.
1785
1786 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
1787
1788         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
1789         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
1790         (ASM_WEAKEN_LABEL): Define.
1791         (CRT_CALL_STATIC_FUNCTION): Define.
1792         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
1793         (ENDFILE_SPEC): Define.
1794         (INIT_SECTION_ASM_OP): Define.
1795         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
1796         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
1797         crtend.o crtendS.o.
1798         (MULTILIB_OSDIRNAMES): Define.
1799         (shlib_version): Define.
1800         (SHLIB_EXT): Define.
1801         (SHLIB_OBJS): Define.
1802         (SHLIB_NAME): Define.
1803         (SHLIB_MULTILIB): Define.
1804         (SHLIB_INSTALL): Define.
1805         (SHLIB_SYMVEC): Define.
1806         (SHLIB_SYMVECX2): Define.
1807         (SHLIB_LINK): Define.
1808
1809 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
1810
1811         * config/alpha/alpha.c (alpha_initialize_trampoline):
1812         Initialize VMS trampoline IAW ABI for bounded procedure calls.
1813         (alpha_start_function): Emit transfer address on nested functions
1814         for VMS trampoline call.
1815         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
1816         since no longer used.
1817         * config/alpha/vms-tramp.asm: Remove.
1818         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
1819         since now only data initialized at runtime.
1820
1821 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
1822
1823         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
1824         (LINK_GCC_C_SEQUENCE_SPEC): Define.
1825         (MD_EXEC_PREFIX): Remove, no longer used.
1826         (MD_STARTFILE_PREFIX): Likewise.
1827         (INCLUDE_DEFAULTS): Likewise.
1828         * config/alpha/t-vms:
1829         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
1830
1831 2009-08-09  Richard Guenther  <rguenther@suse.de>
1832
1833         PR tree-optimization/41016
1834         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
1835         (operand_precision): Remove.
1836         (integral_operand_p): Likewise.
1837         (recognize_single_bit_test): Adjust.
1838
1839 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
1840
1841         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
1842         operation overflows.  Likewise non-cast unary arithmetic.
1843         If one arm of a conditional expression is always taken,
1844         inhibit evaluation warnings for the other arm.  Likewise inhibit
1845         evaluation warnings for the second && or || operand if the first
1846         operand is enough to determine the result.
1847         * c-typeck.c (build_conditional_expr): Apply the same inhibition
1848         rules here.
1849         (build_binary_op): Prevent duplicate evaluation warnings.
1850
1851 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
1852
1853         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
1854         and destination have different modes, Use promote_mode to
1855         determine the signedness of the conversion.  Assert that the
1856         promoted source mode matches the destination mode.  Don't pass
1857         the destination and destination mode to expand_expr if the source
1858         mode is different.  Simplify conversion logic.
1859
1860 2009-08-09  Ira Rosen  <irar@il.ibm.com>
1861
1862         PR tree-optimization/41008
1863         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
1864         from condition only in case it's a comparison. Adjust checks.
1865
1866 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
1867
1868         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
1869         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
1870         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
1871         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
1872         (dump_cand): Handle them.
1873         (struct iv_cand): New members COST_STEP and AINC_USE.
1874         (stmt_after_increment): Likewise.
1875         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
1876         callers changed.  Use gimple_uid comparison instead of scanning.
1877         (add_candidate_1): When looking for identical candidates, take
1878         AINC_USE into account.  Set it for new candidates.
1879         (force_expr_to_var_cost): Cast target_spill_cost to int.
1880         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
1881         All callers changed.  Check for availability of autoinc addressing
1882         modes, both in general for a given mode, and in the specific use case.
1883         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
1884         changed.
1885         (get_computation_cost): Likewise.
1886         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
1887         add_autoinc_candidates): New static functions.
1888         (add_candidate): Call add_autoinc_candidates for candidates based on
1889         a USE_ADDRESS use.
1890         (find_iv_candidates): Call set_autoinc_for_original_candidates.
1891         (determine_use_iv_cost_address): If we have an autoinc candidate at
1892         the matching use, verify autoinc is possible and subtract the cost
1893         of the candidate's step from the cost.
1894         (determine_iv_cost): Record the cost of the increment in the COST_STEP
1895         member of the candidate.
1896         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
1897         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
1898
1899 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
1900
1901         * config.build (ia64-hp-*vms*): New target.
1902         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
1903         with ia64-hp-*vms*.
1904         * config.gcc (ia64-hp-*vms*): New target.
1905         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
1906         with ia64-hp-*vms*.
1907         * config.host (ia64-hp-*vms*): New target.
1908         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
1909         with ia64-hp-*vms*.
1910
1911 2009-08-08  Richard Guenther  <rguenther@suse.de>
1912
1913         PR tree-optimization/40991
1914         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
1915
1916 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
1917
1918         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
1919         mode check.  Do truncations in an integer mode.
1920         (force_to_mode): Handle subregs for all mode types.  Only do
1921         arithmetic simplifications on integer modes.
1922
1923 2009-08-07  Richard Guenther  <rguenther@suse.de>
1924
1925         PR tree-optimization/40999
1926         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
1927         (maybe_fold_reference): Lookup constant initializers.
1928         (fold_gimple_assign): Likewise.
1929
1930 2009-08-07  Richard Guenther  <rguenther@suse.de>
1931
1932         * tree-ssa.c (useless_type_conversion_p_1): Only for types
1933         that require structural equality defer to the langhook.
1934
1935 2009-08-07  Martin Jambor  <mjambor@suse.cz>
1936
1937         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
1938         comments.
1939         (struct ipa_pass_through_data): New type.
1940         (struct ipa_ancestor_jf_data): New type.
1941         (union jump_func_value): Removed field formal_id, added fields
1942         pass_through and ancestor.
1943         (struct ipa_param_call_note): Changed type of formal_id to int from
1944         unsigned.
1945         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
1946         operations jump functions and ancestor jump functions.
1947         (compute_complex_pass_through): New function.
1948         (compute_scalar_jump_functions): Call compute_complex_pass_through,
1949         reflect changes in the jump function strucutre.
1950         (update_jump_functions_after_inlining): Ignore complex pass-through
1951         and ancestor jump functions.
1952         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
1953         polynomial pass-through with operation jump functions.
1954
1955 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
1956
1957         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
1958         fde->dw_fde_begin as begin label instead of hot/cold label.
1959         Use LLSDAC label instead of LLSDA for second section lsda.
1960         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
1961         label instead of LLSDA if it is true.
1962         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
1963         callers.
1964         * except.c (add_call_site, dw2_size_of_call_site_table): Add
1965         SECTION argument.  Use it as index into crtl->eh.call_site_record
1966         array.
1967         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
1968         use it to determine how to print table entries instead of using
1969         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
1970         label instead of normal begin label as base.
1971         (sjlj_assign_call_site_values): Adjust add_call_site caller.
1972         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
1973         ensure no EH range spans between sections and that landing pads
1974         are always in the corresponding section.
1975         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
1976         for crtl->eh.call_site_record being an array rather than scalar.
1977         (output_one_function_exception_table): New function, copied
1978         from output_function_exception_table.  Adjust
1979         dw2_size_of_call_site_table, dw2_output_call_site_table
1980         callers.  For SECOND section use *C suffixed labels.
1981         (output_function_exception_table): Call
1982         output_one_function_exception_table and, when doing hot/cold
1983         partitioning, also another time for the second section.
1984         * opts.c: Include except.h.
1985         (decode_options): Allow -freorder-blocks-and-partition with
1986         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
1987         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
1988         * function.h (struct rtl_eh): Change call_site_record from
1989         scalar into array of 2 elements.
1990
1991 2009-08-07  Martin Jambor  <mjambor@suse.cz>
1992
1993         * ipa-prop.c (count_formal_params_1): New function.
1994         (ipa_get_vector_of_formal_parms): New function.
1995         (get_vector_of_formal_parm_types): New function.
1996         (ipa_modify_formal_parameters): New function.
1997         (ipa_modify_call_arguments): New function.
1998         (index_in_adjustments_multiple_times_p): New function.
1999         (ipa_combine_adjustments): New function.
2000         (ipa_dump_param_adjustments): New function.
2001         * ipa-prop.h (struct ipa_parm_adjustment): New type.
2002         (ipa_get_vector_of_formal_parms): Declare.
2003         (ipa_modify_formal_parameters): Declare.
2004         (ipa_modify_call_arguments): Declare.
2005         (ipa_combine_adjustments): Declare.
2006         (ipa_dump_param_adjustments): Declare.
2007         (build_ref_for_offset): Declare.
2008         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
2009         * tree-sra.c: Include ipa-prop.c.
2010         (build_ref_for_offset): Make public.
2011
2012 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
2013
2014         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
2015
2016 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
2017
2018         * gcc/doc/extend.texi (__builtin_extract_return_address)
2019         (__builtin_frob_return_address): Document.
2020
2021 2009-08-06  Paul Brook  <paul@codesourcery.com>
2022
2023         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
2024         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
2025         implementation on ARMv6-M.
2026
2027 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
2028
2029         * doc/extend.texi (pcs): Document new attribute for ARM.
2030
2031 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
2032
2033         * arm.c (pcs_attribute_args): Comment out unsupported attribute
2034         variants.
2035
2036 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
2037
2038         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
2039         warning ().
2040
2041 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
2042
2043         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
2044
2045 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
2046
2047         Merge ARM/hard_vfp_branch to trunk.
2048
2049         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
2050
2051         * arm.c (libcall_eq): New function.
2052         (libcall_hash): New function.
2053         (add_libcall): New function.
2054         (arm_libcall_uses_aapcs_base): New function.
2055         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
2056         libcalls using the base PCS.
2057         (arm_init_cumulative_args): Likewise.
2058
2059         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
2060
2061         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
2062         Use base ABI for conversion libfuncs between HFmode and SFmode.
2063
2064         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
2065
2066         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
2067         V4SImode as representatives of all 64-bit and 128-bit vector
2068         types.  Allow vector types without vector modes.
2069         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
2070         without vector modes like BLKmode.
2071         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
2072         BLKmode.  Avoid unsupported vector modes or TImode moves for
2073         non-TARGET_NEON.
2074         (aapcs_vfp_allocate_return_reg): Likewise.
2075         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
2076         V8QImode if TARGET_NEON || TARGET_IWMMXT.
2077
2078         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
2079
2080         * config/arm/arm.c (arm_handle_pcs_attribute): New.
2081         (arm_get_pcs_model): Pass attribute arguments to
2082         arm_pcs_from_attribute.
2083         (arm_init_cumulative_args): Use base AAPCS for conversions from
2084         floating-point types to DImode.
2085         (arm_attribute_table): Add pcs attribute.
2086         (arm_handle_pcs_attribute): New.
2087         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
2088         conversions from floating-point types to DImode, also declare them
2089         to use base AAPCS and declare functions they call to use base
2090         AAPCS and their RTABI names.
2091
2092         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
2093
2094         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
2095         -mfloat-abi=hard not being supported for VFP.
2096
2097         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
2098
2099         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
2100         SYMBOL_REF to hard_libcall_value.
2101
2102         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
2103             Richard Earnshaw  <rearnsha@arm.com>
2104
2105         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
2106         has been put on the stack, all remaining co-processory arguments for
2107         that co-processor also go on the stack.
2108
2109         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
2110
2111         * config/arm/arm.c (arm_return_in_memory): Handle returning
2112         vectors of suitable size in registers also for AAPCS case.
2113
2114         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
2115
2116         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
2117
2118         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
2119
2120         ARM Hard-VFP calling convention
2121         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
2122         * target.h (gcc_target): Add libcall_value to table of call hooks.
2123         * targhooks.h (default_libcall_value): Default implementation.
2124         * targhooks.c (default_libcall_value): Likewise.
2125         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
2126         * optabs.c (expand_unop): Use it.
2127         * expr.h (hard_libcall_value): Pass the function RTX through.
2128         * calls.c (emit_library_call_value_1): Update call to
2129         hard_libcall_value.
2130         * explow.c (hard_libcall_value): Use new target hook.
2131         * testsuite/lib/target-supports.exp
2132         (check_effective_target_arm_hard_vfp_ok): New hook.
2133         (check_effective_target_arm_neon_ok): Improve test for neon
2134         availability.
2135         * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant.
2136         * config/arm/arm.c: Include cgraph.h
2137         (TARGET_FUNCTION_VALUE): Override default hook.
2138         (arm_pcs_default): New variable.
2139         (arm_override_options): Don't fault hard calling convention with VFP.
2140         Add support for AAPCS variants.
2141         (arm_function_value): Make static.  Handle AAPCS variants.
2142         (arm_libcall_value): New function.
2143         (arm_apply_result_size): Handle VFP registers in results.
2144         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
2145         conventions.
2146         (pcs_attribute_args): New variable.
2147         (arm_pcs_from_attribute): New function.
2148         (arm_get_pcs_model): New function.
2149         (aapcs_vfp_cum_init): New function.
2150         (aapcs_vfp_sub_candidate): New function.
2151         (aapcs_vfp_is_return_candidate): New function.
2152         (aapcs_vfp_is_call_candidate): New function.
2153         (aapcs_vfp_allocate): New function.
2154         (aapcs_vfp_allocate_return_reg): New function.
2155         (aapcs_vfp_advance): New function.
2156         (aapcs_cp_arg_layout): New variable.
2157         (aapcs_select_call_coproc): New function.
2158         (aapcs_select_return_coproc): New function.
2159         (aapcs_allocate_return_reg): New function.
2160         (aapcs_libcall_value): New function.
2161         (aapcs_layout_arg): New function.
2162         (arm_init_cumulative_args): Initialize AAPCS args data.
2163         (arm_function_arg): Handle AAPCS variants using new interface.
2164         (arm_arg_parital_bytes): Likewise.
2165         (arm_function_arg_advance): New function.
2166         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
2167         calling conventions.
2168         (arm_setup_incoming_varargs): Handle new AAPCS args data.
2169         * arm.h (NUM_VFP_ARG_REGS): Define.
2170         (LIBCALL_VALUE): Update.
2171         (FUNCTION_VALUE): Delete.
2172         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
2173         (arm_pcs): New enum.
2174         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
2175         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
2176         (FUNCTION_ARG_REGNO_P): Add VFP regs.
2177         * arm-protos.h (arm_function_arg_advance): Add.
2178         (aapcs_libcall_value): Add.
2179         (arm_function_value): Delete.
2180
2181 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
2182             H.J. Lu  <hongjiu.lu@intel.com>
2183
2184         PR target/40957
2185         * config/i386/i386.c (standard_sse_mode_p): Remove.
2186         (standard_sse_constant_p): Return 2 for integer mode
2187         vector_all_ones_operand when SSE2 is enabled.
2188         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
2189         (ix86_expand_vector_move): Do not check for negative values from
2190         standard_sse_constant_p.
2191
2192 2009-08-06  Richard Guenther  <rguenther@suse.de>
2193
2194         * tree-ssa.c (useless_type_conversion_p_1): Make function and
2195         array type comparisons frontend independent.
2196         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
2197         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
2198         out array reference lower bound and element size operands.
2199         (ao_ref_init_from_vn_reference): Properly compute the offset
2200         for ARRAY_RANGE_REF.
2201         (vn_reference_fold_indirect): Fill out array reference lower
2202         bound and element size operands.
2203         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
2204         a non gimple valued reference operand which can happen for
2205         array reference lower bound or element size.
2206         (create_component_ref_by_pieces_1): Properly generate the
2207         element size operand for array references.
2208
2209 2009-08-06  Richard Guenther  <rguenther@suse.de>
2210
2211         PR tree-optimization/40964
2212         * tree.c (iterative_hash_host_wide_int): Export.
2213         * tree.h (iterative_hash_host_wide_int): Declare.
2214         * tree-ssa-structalias.c (heapvar_map): New struct.
2215         (heapvar_map_eq): New function.
2216         (heapvar_map_hash): Likewise.
2217         (heapvar_lookup): Adjust.
2218         (heapvar_insert): Likewise.
2219         (make_constraint_from_heapvar): Allow multiple heap variables
2220         per decl at different offsets.
2221         (init_alias_heapvars): Adjust.
2222
2223 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
2224
2225         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
2226         * mips_output_sync_loop (mips_output_sync_loop): Only emit
2227         trailing sync if TARGET_SYNC_AFTER_SC.
2228
2229 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
2230
2231         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
2232         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
2233         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
2234         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
2235         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
2236         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
2237         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
2238         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
2239         test_and_set_12): Rewrite calls to mips_output_sync_loop.
2240         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
2241         the prototype declaration match the definition.
2242         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
2243         instructions explicitly.  Add barrier_before and operands
2244         parameters.
2245         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
2246         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
2247         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
2248         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
2249         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
2250         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
2251
2252 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
2253
2254         * tree-ssa-alias.c: Fix intervals to use [) syntax.
2255
2256 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
2257             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
2258
2259         PR target/40906
2260         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
2261         source operand.
2262
2263 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
2264
2265         PR rtl-optimization/40924
2266         * dse.c (canon_address): Before calling cselib_expand_value_rtx
2267         make sure canon_rtx (mem_address) isn't simpler than
2268         canon_rtx (expanded_mem_address).
2269
2270 2009-08-05  Li Feng  <nemokingdom@gmail.com>
2271
2272         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
2273         for each poly_bb_p.
2274         (build_scop_drs): Build alias set for each SCoP.
2275
2276 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
2277
2278         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
2279         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
2280         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
2281         (MIPS_ARCH_FLOAT_SPEC): Likewise.
2282         (BASE_DRIVER_SELF_SPECS): Likewise.
2283
2284 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
2285
2286         * tree-ssa-alias.c: Fix some comment typos.
2287
2288 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
2289
2290         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
2291         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
2292
2293 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
2294
2295         PR c/39902
2296         * simplify-rtx.c (simplify_binary_operation_1): Disable
2297         simplifications for decimal float operations.
2298
2299 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
2300
2301         PR middle-end/40943
2302         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
2303         operand of INDIRECT_REF.
2304
2305 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
2306
2307         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
2308         constants referencing TLS symbols.
2309
2310 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
2311
2312         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
2313         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
2314
2315 2009-08-03  Richard Guenther  <rguenther@suse.de>
2316
2317         * tree.c (make_vector_type): Build a main variant first,
2318         get the canonical one and then build the variant.
2319         * tree-ssa.c (useless_type_conversion_p_1): Handle
2320         fixed-point types.
2321         (useless_type_conversion_p): Conversions to pointers to
2322         incomplete record types are useless.
2323
2324 2009-08-03  Richard Guenther  <rguenther@suse.de>
2325
2326         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
2327         file will be created.
2328         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
2329         * toplev.c (compile_file): Adjust comment.
2330
2331 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
2332
2333         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
2334         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
2335         (TARGET_PROMOTE_FUNCTION_MODE): Define.
2336         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
2337         (sh_promote_function_mode): Fix typo.
2338
2339 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
2340
2341         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
2342
2343 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2344
2345         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
2346         declaration arguments.
2347
2348 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
2349
2350         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
2351         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
2352         (ix86_split_ashl): Ditto.
2353         (ix86_expand_vector_init_one_nonzero): Ditto.
2354         (ix86_expand_vector_set): Ditto.
2355         (ix86_expand_reduc_v4sf): Ditto.
2356
2357 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
2358
2359         * explow.c (promote_function_mode): Remove assert.
2360         * config/sh/sh.c (sh_promote_function_mode): Declare.
2361
2362 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2363
2364         * config/pa/pa.c (pa_promote_function_mode): Declare.
2365         Change to static.  Fix promote_mode call.
2366
2367         * gthr-dce.h (CONST_CAST2): Define if not defined.
2368         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
2369
2370         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
2371
2372 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
2373
2374         * expr.c (store_constructor): Use promote_decl_mode.  Remove
2375         now write-only variable unsignedp.
2376         (expand_expr_real_1): Use promote_decl_mode.
2377         * expr.h (promote_function_mode, promote_decl_mode): New.
2378         (promote_mode): Remove last argument.
2379         * function.c (assign_temp): Drop last argument of promote_mode.
2380         (assign_parm_find_data_types): Use promote_function_mode.
2381         (assign_parm_setup_reg): Likewise.
2382         (expand_function_end): Use promote_function_mode.
2383         * calls.c (initialize_argument_information): Use promote_function_mode.
2384         (precompute_arguments): Use promote_mode instead of checking if
2385         only PROMOTE_FUNCTION_MODE is defined.
2386         (expand_call): When making sibcall decisions, use promote_function_mode.
2387         Below, remove an if for targetm.calls.promote_function_return and
2388         and use promote_function_mode.
2389         (emit_library_call_value_1): Use promote_function_mode, fix bug
2390         where promote_mode was passed FOR_CALL == 0 for a return value in an
2391         assertion.
2392         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
2393         * explow.c (promote_function_mode, promote_decl_mode): New.
2394         (promote_mode): Keep only the FOR_CALL == 0 case.
2395         * combine.c (setup_incoming_promotion): Remove test of
2396         promote_function_args.  Use promote_function_mode.
2397         * stmt.c (expand_value_return): Use promote_decl_mode.
2398         (expand_decl): Use promote_decl_mode.
2399
2400         * expr.c (store_constructor): Use promote_decl_mode.  Remove
2401         now write-only variable unsignedp.
2402         (expand_expr_real_1): Use promote_decl_mode.
2403         * expr.h (promote_function_mode, promote_decl_mode): New.
2404         (promote_mode): Remove last argument.
2405         * function.c (assign_temp): Drop last argument of promote_mode.
2406         (assign_parm_find_data_types): Use promote_function_mode.
2407         (assign_parm_setup_reg): Likewise.
2408         (expand_function_end): Use promote_function_mode.
2409         * calls.c (initialize_argument_information): Use promote_function_mode.
2410         (precompute_arguments): Use promote_mode instead of checking if
2411         only PROMOTE_FUNCTION_MODE is defined.
2412         (expand_call): When making sibcall decisions, use promote_function_mode.
2413         Below, remove an if for targetm.calls.promote_function_return and
2414         and use promote_function_mode.
2415         (emit_library_call_value_1): Use promote_function_mode, fix bug
2416         where promote_mode was passed FOR_CALL == 0 for a return value in an
2417         assertion.
2418         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
2419         * explow.c (promote_function_mode, promote_decl_mode): New.
2420         (promote_mode): Keep only the FOR_CALL == 0 case.
2421         * combine.c (setup_incoming_promotion): Remove test of
2422         promote_function_args.  Use promote_function_mode.
2423         * stmt.c (expand_value_return): Use promote_decl_mode.
2424         (expand_decl): Use promote_decl_mode.
2425
2426         * explow.c (promote_function_mode): Just call the target hook.
2427         * targhooks.c (default_promote_function_mode,
2428         default_promote_function_mode_always_promote): New.
2429         * targhooks.h (default_promote_function_mode,
2430         default_promote_function_mode_always_promote): Declare.
2431         * target.h (promote_function_args, promote_function_return): Remove.
2432         (promote_function_mode): New.
2433         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
2434         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
2435         (TARGET_PROMOTE_FUNCTION_MODE): New.
2436         (TARGET_CALLS): Adjust.
2437         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
2438         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
2439
2440         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
2441         * config/s390/s390.c (s390_promote_function_mode): ... here,
2442         with pointer handling.
2443         (TARGET_PROMOTE_FUNCTION_MODE): Define.
2444         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
2445
2446         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
2447         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
2448         with pointer handling.
2449         (TARGET_PROMOTE_FUNCTION_MODE): Define.
2450         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
2451
2452         * config/sh/sh-protos.h (sh_promote_function_mode): New.
2453         * config/sh/sh.c (sh_promote_function_mode): New.
2454         (TARGET_PROMOTE_FUNCTION_MODE): Define.
2455         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
2456
2457         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
2458         * config/cris/cris.c (cris_promote_function_mode): ... here.
2459         (TARGET_PROMOTE_FUNCTION_MODE): Define.
2460         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
2461
2462         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
2463         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
2464         (TARGET_PROMOTE_FUNCTION_MODE): Define.
2465         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
2466
2467         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
2468         * config/arm/arm.c (arm_promote_function_mode): ... here, without
2469         complex type handling.
2470         (TARGET_PROMOTE_FUNCTION_MODE): Define.
2471         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
2472
2473         * config/pa/pa.c (pa_promote_function_mode): New.
2474         (TARGET_PROMOTE_FUNCTION_MODE): Define.
2475         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
2476
2477         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
2478         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
2479         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
2480         * config/xtensa/xtensa.c: Likewise.
2481         * config/stormy16/stormy16.c: Likewise.
2482         * config/iq2000/iq2000.c: Likewise.
2483         * config/rs6000/rs6000.c: Likewise.
2484         * config/picochip/picochip.c: Likewise.
2485         * config/arc/arc.c: Likewise.
2486         * config/mcore/mcore.c: Likewise.
2487         * config/score/score.c: Likewise.
2488         * config/mips/mips.c: Likewise.
2489         * config/bfin/bfin.c: Likewise.
2490         * config/ia64/ia64.c: Likewise (disabled though).
2491
2492         * config/frv/frv.h: Remove pointless remark.
2493
2494         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
2495         TARGET_PROMOTE_FUNCTION_ARGS,
2496         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
2497         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
2498
2499 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
2500
2501         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
2502         -floop-parallelize-all.
2503         * toplev.c (process_options): Rename flag_graphite_force_parallel to
2504         flag_loop_parallelize_all.
2505         * tree-ssa-loop.c (gate_graphite_transforms): Same.
2506         * graphite.c (graphite_transform_loops): Same.
2507         * common.opt: Same.
2508         * graphite-poly.c (apply_poly_transforms): Same.
2509
2510 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
2511
2512         PR tree-optimization/40914
2513         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
2514         if set, then check the delta field of the PMF record.
2515         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
2516         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
2517         call is stored in the delta.
2518
2519 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
2520
2521         * config/mips/mips.md (*clear_upper32_dext): New pattern.
2522
2523 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
2524
2525         * config/i386/bsd.h (ASM_BYTE): New define.
2526         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
2527         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
2528         .byte.  Use fputs or putc instead of fprintf where appropriate.
2529         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
2530         fputs or putc instead of fprintf where appropriate.
2531         * config/i386/i386elf.h: Ditto.
2532         * config/i386/sysv4.h: Ditto.
2533
2534         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
2535         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
2536         (*tls_global_dynamic_64): Ditto.
2537
2538 2009-07-31  Christian Bruel  <christian.bruel@st.com>
2539
2540         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
2541
2542 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2543
2544         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
2545         Remove dead code for MINUS.
2546
2547 2009-07-31  Anthony Green  <green@moxielogic.com>
2548
2549         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
2550         $r12 in prologue.
2551         (moxie_expand_epilogue): Ditto for epilogue.
2552         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
2553         incoming arguments.
2554         (moxie_function_arg): Ditto.
2555         (moxie_pass_by_reference): Ditto.
2556         (moxie_arg_partial_bytes): Ditto.
2557         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
2558         (FUNCTION_ARG_ADVANCE) Ditto.
2559         (REG_PARM_STACK_SPACE) Ditto.
2560         (FUNCTION_ARG_REGNO_P) Dito.
2561
2562         * config.gcc: Add moxie linux config support.
2563         * gcc/config/moxie/uclinux.h: New file.
2564
2565 2009-07-31  DJ Delorie  <dj@redhat.com>
2566
2567         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
2568         (UNSPECV_SP_SWITCH_E): New.
2569         (sp_switch_1): Change to an unspec.
2570         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
2571         replace $r15.
2572         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
2573         reference the new stack's address
2574
2575 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2576
2577         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
2578         graphite-clast-to-gimple.o, graphite-dependences.o,
2579         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
2580         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
2581         (graphite-blocking.o,
2582         graphite-clast-to-gimple.o, graphite-dependences.o,
2583         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
2584         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
2585         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
2586         * cfgloop.h (struct loop): Add can_be_parallel field.
2587         * common.opt (fgraphite-identity): Moved up.
2588         (fgraphite-force-parallel): New flag.
2589         * graphite.c: Rewrite.
2590         * graphite.h: Rewrite.
2591         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
2592         after Graphite.
2593         * toplev.c (graphite_out_file): New file descriptor.
2594         (graphite_in_file): New.
2595         (process_options): flag_graphite_force_parallel cannot be used without
2596         Graphite.
2597         * tree-ssa-loop.c: Include toplev.h.
2598         (gate_graphite_transforms): Enable flag_graphite for
2599         flag_graphite_force_parallel.
2600
2601 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2602
2603         * ChangeLog.graphite: New.
2604         * graphite-blocking.c: New.
2605         * graphite-clast-to-gimple.c: New.
2606         * graphite-clast-to-gimple.h: New.
2607         * graphite-dependences.c: New.
2608         * graphite-dependences.h: New.
2609         * graphite-interchange.c: New.
2610         * graphite-poly.c: New.
2611         * graphite-poly.h: New.
2612         * graphite-ppl.c: New.
2613         * graphite-ppl.h: New.
2614         * graphite-scop-detection.c: New.
2615         * graphite-scop-detection.h: New.
2616         * graphite-sese-to-poly.c: New.
2617         * graphite-sese-to-poly.h: New.
2618         * sese.c: New.
2619         * sese.h: New.
2620
2621 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2622
2623         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
2624         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
2625
2626 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2627
2628         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
2629         (scev_is_linear_expression): Return false if the evolution is not
2630         affine multivariate.
2631
2632 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2633
2634         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
2635         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
2636
2637 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2638
2639         * tree-data-ref.c (debug_data_references): New.
2640         (debug_data_reference): New.
2641         * tree-data-ref.h (debug_data_references): Declared.
2642         (debug_data_reference): Declared.
2643
2644 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2645
2646         * tree-data-ref.c (stmt_simple_memref_p: Removed.
2647         * tree-data-ref.h (scop_p): Removed.
2648         (struct data_reference): Remove field scop.
2649         (DR_SCOP): Removed.
2650         (stmt_simple_memref_p): Removed.
2651
2652 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2653
2654         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
2655         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
2656         basic block empty.
2657
2658 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2659
2660         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
2661
2662 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2663
2664         * doc/invoke.texi (-fgraphite-identity): Documented.
2665
2666 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2667
2668         * tree-scalar-evolution.c: Fix comment.
2669         (instantiate_scev_1): Return unknow from scev instantiation if the
2670         result is not above instantiate_below.
2671
2672 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2673
2674         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
2675         static anymore.  Instantiate the symbols that may have been introduced
2676         by chrec_apply.
2677         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
2678         Declared.
2679
2680 2009-07-30  DJ Delorie  <dj@redhat.com>
2681
2682         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
2683         .vliw directive to VLIW sections.
2684
2685 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2686
2687         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
2688         New variables.
2689         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
2690         (AUTOHEADER): New variable.
2691         ($(srcdir)/cstamp-h.in): Use it.
2692
2693 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
2694             Pat Haugen  <pthaugen@us.ibm.com>
2695             Revital Eres <ERES@il.ibm.com>
2696
2697         * config/rs6000/vector.md (VEC_F): Add VSX support.
2698         (VEC_A): Ditto.
2699         (VEC_N): Ditto.
2700         (mov<mode>): Ditto.
2701         (vector_load_<mode>): Ditto.
2702         (vector_store_<mode>): Ditto.
2703         (vector GPR move split): Ditto.
2704         (vec_reload_and_plus_<mptrsize>): Ditto.
2705         (vec_reload_and_reg_<mptrsize>): Ditto.
2706         (add<mode>3): Ditto.
2707         (sub<mode>3): Ditto.
2708         (mul<mode>3): Ditto.
2709         (neg<mode>2): Ditto.
2710         (abs<mode>2): Ditto.
2711         (smin<mode>3): Ditto.
2712         (smax<mode>3): Ditto.
2713         (vector_eq<mode>): Ditto.
2714         (vector_gt<mode>): Ditto.
2715         (vector_ge<mode>): Ditto.
2716         (vector_gtu<mode>): Ditto.
2717         (vector_select_<mode>_uns): Ditto.
2718         (vector_eq_<mode>_p): Ditto.
2719         (vector_gt_<mode>_p): Ditto.
2720         (vector_ge_<mode>_p): Ditto.
2721         (vector_gtu_<mode>_p): Ditto.
2722         (cr6_test_for_zero): Ditto.
2723         (cr6_test_for_zero_reverse): Ditto.
2724         (cr6_test_for_lt): Ditto.
2725         (cr6_test_for_lt_reverse): Ditto.
2726         (xor<mode>3): Ditto.
2727         (ior<mode>3): Ditto.
2728         (and<mode>3): Ditto.
2729         (one_cmpl<mode>2): Ditto.
2730         (nor<mode>2): Ditto.
2731         (andc<mode>2): Ditto.
2732         (float<VEC_int<mode>2): Ditto.
2733         (unsigned_float<VEC_int><mode>2): Ditto.
2734         (fix_trunc<mode><VEC_int>2): Ditto.
2735         (fixuns_trunc<mode><VEC_int>2): Ditto.
2736         (vec_init<mode>):
2737         (vec_set<mode>): Ditto.
2738         (vec_extract<mode>): Ditto.
2739         (vec_interleave_highv4sf): Ditto.
2740         (vec_interleave_lowv4sf): Ditto.
2741         (vec_realign_load_<mode>): Ditto.
2742         (vec_shl_<mode>): Ditto.
2743         (vec_shr_<mode>): Ditto.
2744         (div<mode>3): New patterns for VSX.
2745         (vec_interleave_highv2df): Ditto.
2746         (vec_interleave_lowv2df): Ditto.
2747         (vec_pack_trunc_v2df): Ditto.
2748         (vec_pack_sfix_trunc_v2df): Ditto.
2749         (vec_pack_ufix_trunc_v2df): Ditto.
2750         (vec_unpacks_hi_v4sf): Ditto.
2751         (vec_unpacks_lo_v4sf): Ditto.
2752         (vec_unpacks_float_hi_v4si): Ditto.
2753         (vec_unpacks_float_lo_v4si): Ditto.
2754         (vec_unpacku_float_hi_v4si): Ditto.
2755         (vec_unpacku_float_lo_v4si): Ditto.
2756         (movmisalign<mode>): Ditto.
2757         (vector_ceil<mode>2): New patterns for vectorizing math library.
2758         (vector_floor<mode>2): Ditto.
2759         (vector_btrunc<mode>2): Ditto.
2760         (vector_copysign<mode>3): Ditto.
2761
2762         * config/rs6000/predicates.md (easy_vector_constant_msb): New
2763         predicate for setting the high bit in each word, used for copysign.
2764
2765         * config/rs6000/ppc-asm.h (f19): Whitespace.
2766         (f32-f63): Define if VSX.
2767         (v0-v31): Define if Altivec.
2768         (vs0-vs63): Define if VSX.
2769
2770         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
2771
2772         * config/rs6000/power7.md: New file, provide tuning parameters for
2773         -mcpu=power7.
2774
2775         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
2776         (rs6000_cpu_cpp_builtins): Ditto.
2777         (altivec_overloaded_builtins): Ditto.
2778         (altivec_resolve_overloaded_builtin): Ditto.
2779
2780         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
2781         debug switch to disable vectorizing simple math builtin
2782         functions.
2783
2784         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
2785         Vectorize simple math builtin functions.
2786         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
2787         hook to vectorize math builtins.
2788         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
2789         (rs6000_builtin_conversion): Add VSX/power7 support.
2790         (rs6000_builtin_vec_perm): Ditto.
2791         (vsplits_constant): Add support for loading up a vector constant
2792         with just the high bit set in each part.
2793         (rs6000_expand_vector_init): Add VSX/power7 support.
2794         (rs6000_expand_vector_set): Ditto.
2795         (rs6000_expand_vector_extract): Ditto.
2796         (rs6000_emit_move): Ditto.
2797         (bdesc_3arg): Ditto.
2798         (bdesc_2arg): Ditto.
2799         (bdesc_1arg): Ditto.
2800         (rs6000_expand_ternop_builtin): Ditto.
2801         (altivec_expand_builtin): Ditto.
2802         (rs6000_expand_unop_builtin): Ditto.
2803         (rs6000_init_builtins): Ditto.
2804         (altivec_init_builtins): Ditto.
2805         (builtin_function_type): Ditto.
2806         (rs6000_common_init_builtins): Ditto.
2807         (rs6000_handle_altivec_attribute); Ditto.
2808         (rs6000_mangle_type): Ditto.
2809         (rs6000_vector_mode_supported_p): Ditto.
2810         (rs6000_mode_dependent_address): Altivec addresses with AND -16
2811         are mode dependent.
2812
2813         * config/rs6000/vsx.md: New file for VSX support.
2814
2815         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
2816         identifing values with just the most significant bit set.
2817         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
2818         vectorized builtins.
2819
2820         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
2821         (UNSPEC_VRFIM): Delete.
2822         (splitter for loading up vector with most significant bit): New
2823         splitter for vectorizing copysign.
2824         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
2825         vectorizing simple math functions.
2826         (altivec_vrfip): Add support for vectorizing simple math functions.
2827         (altivec_vrfim): Ditto.
2828         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
2829
2830         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
2831         (power7.md, vsx.md): Include for power7 support.
2832         (copysigndf3): Use VSX instructions if -mvsx.
2833         (negdf2_fpr): Ditto.
2834         (absdf2_fpr): Ditto.
2835         (nabsdf2_fpr): Ditto.
2836         (adddf3_fpr): Ditto.
2837         (subdf3_fpr): Ditto.
2838         (muldf3_fpr): Ditto.
2839         (divdf3_fpr): Ditto.
2840         (fix_truncdfdi2_fpr): Ditto.
2841         (cmpdf_internal1): Ditto.
2842         (fred, fred_fpr): Convert into expander/insn to add VSX support.
2843         (btruncdf2, btruncdf2_fpr): Ditto.
2844         (ceildf2, ceildf2_fpr): Ditto.
2845         (floordf2, floordf2_fpr): Ditto.
2846         (floatdidf2, floatdidf2_fpr): Ditto.
2847         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
2848         (fmsubdf4_fpr): Ditto.
2849         (fnmadddf4_fpr_1): Ditto.
2850         (fnmadddf4_fpr_2): Ditto.
2851         (fnmsubdf4_fpr_1): Ditto.
2852         (fnmsubdf4_fpr_2): Ditto.
2853         (fixuns_truncdfdi2): Add expander for VSX support.
2854         (fix_truncdfdi2): Ditto.
2855         (fix_truncdfsi2): Ditto.
2856         (ftruncdf2): Ditto.
2857         (btruncsf2): Whitespace.
2858         (movdf_hardfloat32): Add support for VSX registers.
2859         (movdf_softfloat32): Ditto.
2860         (movdf_hardfloat64): Ditto.
2861         (movdf_hardfloat64_mfpgpr): Ditto.
2862         (movdf_softfloat64): Ditto.
2863         (movti splitters): Add check for vector registers supporting
2864         TImode in the future.
2865         (bpermd): Add power7 bpermd instruction.
2866
2867         * config/rs6000/altivec.h (vec_div): Define if VSX.
2868         (vec_mul): Ditto.
2869         (vec_msub): Ditto.
2870         (vec_nmadd): Ditto.
2871         (vec_nearbyint): Ditto.
2872         (vec_rint): Ditto.
2873         (vec_sqrt): Ditto.
2874         (all predicates): Use the generic builtin function, and not the V4SF
2875         specific function so that the predicates will work with VSX's V2DF.
2876         (vec_all_*): Ditto.
2877         (vec_any_*): Ditto.
2878
2879         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
2880         Document new VSX functions and types.
2881
2882         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
2883         switches.
2884
2885         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
2886         "wa", and "j" constraints.  Modify "v" to talk about Altivec
2887         instead of just vector.
2888
2889 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
2890
2891         PR debug/26475
2892         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
2893         location for phi arguments.
2894         (rewrite_update_phi_arguments): Find locations for reaching defs.
2895         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
2896         Add location to add_phi_arg calls.
2897         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
2898         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
2899         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
2900         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
2901         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
2902         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
2903         * tree-phinodes.c (make_phi_node): Initialize location.
2904         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
2905         (add_phi_arg): Add location parameter.
2906         (remove_phi_arg_num): Move location when moving phi argument.
2907         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
2908         location.
2909         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
2910         slpeel_update_phi_nodes_for_guard1,
2911         slpeel_update_phi_nodes_for_guard2,
2912         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
2913         vect_loop_versioning): Set locations.
2914         * tree-parloops.c (create_phi_for_local_result,
2915         transform_to_exit_first_loop, create_parallel_loop): Add locations.
2916         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
2917         * tree-vect-loop.c (get_initial_def_for_induction,
2918         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
2919         locations.
2920         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
2921         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
2922         (gimple_phi_arg_set_location): New.  Set locus.
2923         (gimple_phi_arg_has_location): New.  Check for locus.
2924         (redirect_edge_var_map_location): New.  Return locus from var_map.
2925         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
2926         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
2927         combining PHI arguments.
2928         (cond_store_replacement): Set location.
2929         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
2930         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
2931         scop_add_exit_phis_edge): Add locations.
2932         * tree-cfgcleanup.c (remove_forwarder_block,
2933         remove_forwarder_block_with_phi): Add locations.
2934         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
2935         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
2936         locations.
2937         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
2938         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
2939         flush_pending_stmts): Add source location.
2940         * lambda-code.c (perfect_nestify): Maintain location stack with argument
2941         stack to preserve locations.
2942         * tree-vect-stmts.c (vectorizable_load): Add location.
2943         * tree-inline.c (copy_phis_for_bb): Copy locus.
2944         (setup_one_parameter): Add call locus to inlined parameter stmts.
2945         (initialize_inlined_parameters): Pass in call location as parameter
2946         assignment locus.
2947         (tree_function_versioning): Pass location to setup_one_parameter.
2948         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
2949         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
2950         copy and edge lists.
2951         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
2952         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
2953         locus parameter and override the stmt default if provided.
2954         (new_elim_graph, clear_elim_graph, delete_elim_graph,
2955         elim_graph_add_edge, elim_graph_remove_succ_edge,
2956         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
2957         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
2958         eliminate_phi):  Add locus info in elimination graph for each edge and
2959         value copy.
2960         (insert_backedge_copies): Copy locus if present.
2961         * tree-flow.h (struct _edge_var_map): Add locus field.
2962         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
2963         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
2964         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
2965         locations.
2966         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
2967
2968 2009-07-30  Martin Jambor  <mjambor@suse.cz>
2969
2970         PR tree-optimization/40570
2971         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
2972         use inlining loops.
2973
2974 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
2975
2976         * ssa-loop-manip.c: Include langhooks.h.
2977         (rewrite_phi_with_iv): New.
2978         (rewrite_all_phi_nodes_with_iv): New.
2979         (canonicalize_loop_ivs): Move here from tree-parloops.c.
2980         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
2981         * tree-parloops.c (loop_parallel_p): Move out all conditions
2982         except dependency check.
2983         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
2984         (gen_parallel_loop): Call canonicalize_loop_ivs without
2985         reduction_list argument.
2986         (build_new_reduction): New.
2987         (gather_scalar_reductions): New.
2988         (try_get_loop_niter): New.
2989         (try_create_reduction_list): New.
2990         (parallleize_loops): Change the parallel conditions check.
2991         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
2992         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
2993
2994 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
2995
2996         * opt-functions.awk (opt_args): Allow argument to be enclosed in
2997         curly braces.
2998         * doc/options.texi (Option properties):  Mention new quoting syntax.
2999
3000 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
3001
3002         * config/alpha/alpha.c (alpha_start_function):
3003         Handle VMS_DEBUG_MAIN_POINTER
3004         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
3005         * doc/invoke.texi: Document -mdebug-main switch.
3006
3007 2009-07-29  Richard Henderson  <rth@redhat.com>
3008
3009         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
3010         (cgraph_create_edge_including_clones): Likewise.
3011         * tree-inline.c (copy_bb): Operate on the correct edges
3012         when updating the callgraph.
3013
3014 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
3015
3016         * config/alpha/vms-cc.c: Deleted.
3017         * config/alpha/vms-ld.c: Deleted.
3018         * config/alpha/t-vms64: Moved to config/vms
3019         * config/alpha/vms-crt0-64.c: Moved to config/vms
3020         * config/alpha/vms-crt0.c: Moved to config/vms
3021         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
3022         * config/alpha/vms-psxcrt0.c: Moved to config/vms
3023         * config/alpha/xm-vms.h: Moved to config/vms
3024         * config/alpha/x-vms: Moved to config/vms
3025         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
3026         config/vms/t-vms.
3027         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
3028         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
3029         (version): Set.
3030         * config/vms/t-vms64: Moved here from config/alpha
3031         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
3032         (argc,argv,envp): Enforce 32bit malloc'ing.
3033         * config/vms/vms-psxcrt0-64.c: Likewise.
3034         * config/vms/vms-crt0.c: Moved here from config/alpha.
3035         * config/vms/vms-psxcrt0.c: Likewise.
3036         * config/vms/vms-crtl-64.h: New file.
3037         * config/vms/vms-crtl.h: New file.
3038         * config/vms/vms.opt: New file.
3039         * config/vms/xm-vms64.h: New file.
3040         * config/vms/xm-vms.h: Moved here from config/alpha.
3041         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
3042         Set.
3043         * config/vms/x-vms: Moved here from config/alpha.
3044         (version, VMS_EXTRA_PARTS): Moved to t-vms.
3045         (vms-ld.o, vms-cc.o): Removed.
3046         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
3047
3048 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
3049
3050         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
3051         correct stack (obvious VMS fix).
3052
3053 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
3054
3055         * dwarf2out.c (output_file_names): Output VMS style file name, size,
3056         date, version info if VMS_DEBUGGING_INFO defined.
3057         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
3058         size, date calculating code moved here.
3059
3060 2009-07-29  Paul Brook  <paul@codesourcery.com>
3061
3062         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
3063         do_push/do_pop.
3064
3065 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
3066
3067         PR target/40577
3068         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
3069         to DImode when generating insq_le insn.
3070
3071 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
3072
3073         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
3074         New macro set for VMS_DEBUGGGING_INFO.
3075         (AT_string_form): Use it.
3076
3077 2009-07-28  DJ Delorie  <dj@redhat.com>
3078
3079         * config/mep/mep.c (vtext_section): New.
3080         (vftext_section): New.
3081         (ftext_section): New.
3082         (mep_select_section): Add support for functions.
3083         (mep_unique_section): Likewise.
3084         (mep_asm_init_sections): Likewise.
3085         (mep_encode_section_info): Remove it from here.
3086
3087         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
3088
3089 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
3090
3091         * tree.h (TREE_DEPRECATED): Document it is used for types too.
3092         (TYPE_VECTOR_OPAQUE): Use default_def_flag
3093
3094 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
3095
3096         * dwarf2out.c (output_file_names): Test new macro
3097         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
3098         (add_comp_dir_attribute): Likewise.
3099
3100 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
3101
3102         * config/i386/mingw-w64.h (LINK_SPEC): Add
3103         separating space between commands.
3104
3105 2009-07-28  Jan Hubicka  <jh@suse.cz>
3106
3107         PR tree-optimization/40759
3108         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
3109         for renaming.
3110
3111 2009-07-27  DJ Delorie  <dj@redhat.com>
3112
3113         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
3114         types are dword-aligned.
3115         (mep_expand_va_start): Likewise.
3116
3117 2009-07-27  Olivier Hainque  <hainque@adacore.com>
3118             Douglas B Rupp  <rupp@gnat.com>
3119
3120         * convert.c (convert_to_pointer): Don't assume the target
3121         pointer type is POINTER_SIZE long. Fetch its precision instead.
3122
3123 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
3124
3125         * system.h (fopen): Undefine if macro.
3126
3127 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
3128
3129         * dwarf2out.c (output_cfi_p): Removed.
3130         (output_cfis): New function.
3131         (output_fde): New function, split from output_call_frame_info.
3132         (output_call_frame_info): Use it.
3133         (dwarf2out_switch_text_section): Use output_cfis.
3134
3135 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
3136
3137         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
3138         TARGET_BI_ARCH is specified without enabling SJLJ.
3139         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
3140         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
3141
3142 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
3143
3144         * arm.md (negdi2): Use DImode if forcing a value into a register.
3145
3146 2009-07-26  Ira Rosen  <irar@il.ibm.com>
3147
3148         PR tree-optimization/40801
3149         * tree-vect-stmts.c (vectorizable_call): Get previous copy
3150         of vector operand from the previous copy of vector statement.
3151         Pass the correct definition type value to
3152         vect_get_vec_def_for_stmt_copy().
3153
3154 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3155
3156         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
3157         const char ** conversion.
3158
3159 2009-07-25 David Daney <ddaney@caviumnetworks.com>
3160
3161         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
3162         fancy_abort() if !ENABLE_ASSERT_CHECKING.
3163         (gcc_unreachable): Invoke __builtin_unreachable() if
3164         !ENABLE_ASSERT_CHECKING.
3165
3166 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
3167
3168         PR rtl-optimization/40445
3169         * emit-rtl.c (next_nonnote_insn_bb): New function.
3170         * rtl.h (next_nonnote_insn_bb): Declare new function.
3171         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
3172         with no successors that is the successor of the ENTRY_BLOCK.
3173         Continue from the top after removing an empty fallthrough block.
3174         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
3175         of next_nonnote_insn.
3176
3177 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
3178
3179         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
3180
3181 2009-07-25  Martin Jambor  <mjambor@suse.cz>
3182
3183         * c-common.c (c_common_attribute_table): New element for noclone.
3184         (handle_noclone_attribute): New function. Forward-declare.
3185         * tree-inline.c (tree_versionable_function_p): Check for noclone
3186         attribute.
3187         * doc/extend.texi (Labels as Values): Document need for noclone.
3188         (Function Attributes): Document noclone attribute.
3189
3190 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
3191
3192         PR rtl-optimization/34999
3193         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
3194         and dw_fde_switched_cold_to_hot fields.
3195         (output_cfi_p): New function.
3196         (output_call_frame_info): If fde->dw_fde_switched_sections,
3197         output 2 FDEs instead of one with corrupted header.
3198         (dwarf2out_do_cfi_startproc): New function.
3199         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
3200         and fde->dw_fde_switched_cold_to_hot.
3201         (dwarf2out_switch_text_section): Compute
3202         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
3203         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
3204         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
3205         Otherwise, compute fde->dw_fde_switch_cfi.
3206
3207 2009-07-24  Cary Coutant  <ccoutant@google.com>
3208
3209         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
3210
3211 2009-07-24  Cary Coutant  <ccoutant@google.com>
3212
3213         * cfghooks.c (split_block): Copy discriminator to new block.
3214         * tree-cfg.c (assign_discriminator): Check location of last
3215         instruction in block as well as first.
3216
3217 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
3218
3219         * config/i386/linux.c: Use fputs or putc instead of fprintf
3220         where appropriate.
3221         * config/i386/gas.h: Ditto.
3222         * config/i386/x86-64.h: Ditto.
3223         * config/i386/att.h: Ditto.
3224
3225 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3226
3227         * expmed.c (emit_store_flag): Use a recursive call to optimize the
3228         xor case.
3229
3230 2009-07-24  Martin Jambor  <mjambor@suse.cz>
3231
3232         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
3233         (ipa_push_func_to_list_1): Declare.
3234         (ipa_push_func_to_list): New function.
3235
3236         * ipa-prop.c (ipa_push_func_to_list_1): New function.
3237         (ipa_init_func_list): Call ipa_push_func_to_list_1.
3238         (ipa_push_func_to_list): Removed.
3239         (ipa_pop_func_from_list): Clear node_enqueued flag.
3240
3241 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
3242
3243         * config/s390/s390.c (override_options): Default
3244         max-unrolled-insns to 100 for z10 tuning.
3245
3246 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
3247
3248         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
3249         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
3250         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
3251         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
3252         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
3253         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
3254         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
3255
3256 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
3257
3258         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
3259         use default set in mingw32.h header.
3260         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
3261         64-bit /mingw/include path.
3262         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
3263         path.
3264
3265 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
3266
3267         PR rtl-optimization/40209
3268         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
3269
3270 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
3271
3272         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
3273         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
3274         with the rest of string where appropriate.  Use fputs or putc
3275         instead of fprintf where appropriate.
3276
3277 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
3278             Pat Haugen  <pthaugen@us.ibm.com>
3279             Revital Eres <ERES@il.ibm.com>
3280
3281         * config/rs6000/vector.md: New file.  Move most of the vector
3282         expander support here from altivec.md to allow for the VSX vector
3283         unit in the future.  Add support for secondary_reload patterns.
3284         Rewrite the patterns for vector comparison, and vector comparison
3285         predicate instructions so that the RTL expresses the desired
3286         behavior, instead of using unspec.
3287
3288         * config/rs6000/constraints.md ("f" constraint): Use
3289         rs6000_constraints to hold the precalculated register class.
3290         ("d" constraint): Ditto.
3291         ("wd" constraint): New constraint for VSX.
3292         ("wf" constraint): Ditto.
3293         ("ws" constraint): Ditto.
3294         ("wa" constraint): Ditto.
3295         ("wZ" constraint): Ditto.
3296         ("j" constraint): Ditto.
3297
3298         * config/rs6000/predicates.md (vsx_register_operand): New
3299         predicate for VSX.
3300         (vfloat_operand): New predicate for vector.md.
3301         (vint_operand): Ditto.
3302         (vlogical_operand): Ditto.
3303         (easy_fp_constant): If VSX, 0.0 is an easy constant.
3304         (easy_vector_constant): Add VSX support.
3305         (altivec_indexed_or_indirect_operand): New predicate for
3306         recognizing Altivec style memory references with AND -16.
3307
3308         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
3309         for vector secondary reload support.
3310         (rs6000_vector_reg_class): Delete, replacing it with
3311         rs6000_constraints.
3312         (rs6000_vsx_reg_class): Ditto.
3313         (rs6000_constraints): New array to hold the register classes of
3314         each of the register constraints that can vary at runtime.
3315         (builtin_mode_to_type): New static array for builtin function type
3316         creation.
3317         (builtin_hash_table): New static hash table for builtin function
3318         type creation.
3319         (TARGET_SECONDARY_RELOAD): Define target hook.
3320         (TARGET_IRA_COVER_CLASSES): Ditto.
3321         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
3322         registers are 128 bits if VSX memory reference instructions are used.
3323         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
3324         unit is being used.
3325         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
3326         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
3327         Print several of the scheduling related parameters.
3328         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
3329         rs6000_constraints instead of rs6000_vector_reg_class.  Move
3330         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
3331         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
3332         Altivec.  Add VSX support.  Setup for secondary reload support on
3333         Altivec/VSX registers.
3334         (rs6000_override_options): Make power7 set the scheduling groups
3335         like the power5.  Add support for new debug switches to override
3336         the scheduling defaults.  Temporarily disable -mcpu=power7 from
3337         setting -mvsx.  Add support for debug switches -malways-hint,
3338         -msched-groups, and -malign-branch-targets.
3339         (rs6000_buitlin_conversion): Add support for returning unsigned
3340         vector conversion functions to fix regressions due to stricter
3341         type checking.
3342         (rs6000_builtin_mul_widen_even): Ditto.
3343         (rs6000_builtin_mul_widen_odd): Ditto.
3344         (rs6000_builtin_vec_perm): Ditto.
3345         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
3346         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
3347         to zero a register.
3348         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
3349         generated upstream.
3350         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
3351         VSX types for bit operations.  Changes to accomidate vector.md.
3352         (bdesc_2arg): Ditto.
3353         (bdesc_1arg): Ditto.
3354         (struct builtin_description_predicates): Rewrite predicate
3355         handling so that RTL describes the operation, instead of passing
3356         the instruction to be used as a string argument.
3357         (bdesc_altivec_preds): Ditto.
3358         (altivec_expand_predicate_builtin): Ditto.
3359         (altivec_expand_builtin): Ditto.
3360         (rs6000_expand_ternop_builtin): Use a switch instead of an if
3361         statement for vsldoi support.
3362         (altivec_expand_ld_builtin): Change to use new names from vector.md.
3363         (altivec_expand_st_builtin): Ditto.
3364         (paired_expand_builtin): Whitespace changes.
3365         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
3366         builtin_mode_to_type table for secondary reload.  Call
3367         builtin_function_type to build random builtin functions.
3368         (altivec_init_builtins): Change to use builtin_function_type to
3369         create builtin function types dynamically as we need them.
3370         (builtin_hash_function): New support for hashing the tree types
3371         for builtin function as we need it, rather than trying to build
3372         all of the trees that we need.  Add initial preliminary VSX support.
3373         (builtin_function_type): Ditto.
3374         (builtin_function_eq): Ditto.
3375         (builtin_hash_struct): Ditto.
3376         (rs6000_init_builtins): Ditto.
3377         (rs6000_common_init_builtins): Ditto.
3378         (altivec_init_builtins): Ditto.
3379         (rs6000_common_init_builtins): Ditto.
3380         (enum reload_reg_type): New enum for simplifing reg classes.
3381         (rs6000_reload_register_type): Simplify register classes into GPR,
3382         Vector, and other registers.  Altivec and VSX addresses in reload.
3383         (rs6000_secondary_reload_inner): Ditto.
3384         (rs6000_ira_cover_classes): New target hook, that returns the
3385         appropriate cover classes, based on -mvsx being used or not.
3386         (rs6000_secondary_reload_class): Add VSX support.
3387         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
3388         (get_vsel_insn): Ditto.
3389         (rs6000_emit_vector_compare): Rewrite vector conditional support
3390         so that where we can, we use RTL operators, instead of blindly use
3391         UNSPEC.
3392         (rs6000_emit_vector_select): Ditto.
3393         (rs6000_emit_vector_cond_expr): Ditto.
3394         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
3395         (create_TOC_reference): Add -mdebug=addr support.
3396         (emit_frame_save): VSX loads/stores need register indexed addressing.
3397
3398         * config/rs6000/rs6000.md: Include vector.md.
3399
3400         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
3401
3402         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
3403         support for V2DI, V2DF in logical, permute, select operations.
3404
3405         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug