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