OSDN Git Service

/cp
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2011-12-21  Jakub Jelinek  <jakub@redhat.com>
2
3         * tree-vect-patterns.c (vect_operation_fits_smaller_type): Initialize
4         *op0 and *op1 to NULL_TREE first to avoid warnings.
5         * calls.c (initialize_argument_information): Initialize base to avoid
6         warnings.
7
8         PR middle-end/51644
9         PR middle-end/51647
10         * tree-eh.c (decide_copy_try_finally): At -O0, return true
11         even when ndests is not 1, if there are only gimple_clobber_p
12         (or debug) stmts in the finally sequence.
13         * tree-inline.c (estimate_num_insns): Return 0 for gimple_clobber_p
14         stmts.
15
16 2011-12-21  Aldy Hernandez  <aldyh@redhat.com>
17
18         PR middle-end/51472
19         * trans-mem.c (tm_log_add): Use create_tmp_var_reg.
20
21 2011-12-21  Martin Jambor  <mjambor@suse.cz>
22
23         * tree-into-ssa.c (rewrite_update_stmt): Do not dump extra newlines.
24         (rewrite_update_enter_block): Likewise.
25         (dump_update_ssa): Likewise.
26         (update_ssa): Likewise but also dump a newline at the beginning.
27
28 2011-12-21  Enkovich Ilya  <ilya.enkovich@intel.com>
29
30         PR target/50038
31         * implicit-zee.c: Delete.
32         * ree.c: New file.
33         * Makefile.in: Replace implicit-zee.c with ree.c.
34         * config/i386/i386.c (ix86_option_override_internal): Rename
35         flag_zee to flag_ree.
36         * common.opt (fzee): Ignored.
37         (free): New.
38         * passes.c (init_optimization_passes): Replace pass_implicit_zee
39         with pass_ree.
40         * tree-pass.h (pass_implicit_zee): Delete.
41         (pass_ree): New.
42         * timevar.def (TV_ZEE): Delete.
43         (TV_REE): New.
44         * doc/invoke.texi: Add -free description.
45
46 2011-12-21  Tristan Gingold  <gingold@adacore.com>
47
48         * config/vms/vms-protos.h (vms_function_section): New prototype.
49         * config/vms/vms.c (vms_function_section): New function.
50         * config/vms/vms.h (TARGET_ASM_FUNCTION_SECTION): Define.
51
52 2011-12-21  Richard Guenther  <rguenther@suse.de>
53
54         PR lto/41159
55         * tree-outof-ssa.c (insert_value_copy_on_edge): Use the
56         mode of the pseudo as destination mode.  Only assert that
57         is equal to the promoted mode of the decl if it is a REG.
58
59 2011-12-21  Tristan Gingold  <gingold@adacore.com>
60
61         * config/vms/xm-vms.h (STANDARD_EXEC_PREFIX): Remove define.
62
63 2011-12-20  Richard Henderson  <rth@redhat.com>
64
65         * config/ia64/ia64.c (MAX_VECT_LEN): New.
66         (struct expand_vec_perm_d): New.
67         (TARGET_VECTORIZE_VEC_PERM_CONST_OK): New.
68         (ia64_unpack_assemble): Use ia64_expand_vec_perm_const_1.
69         (expand_vselect, expand_vselect_vconcat): New.
70         (expand_vec_perm_identity, expand_vec_perm_shrp): New.
71         (expand_vec_perm_1, expand_vec_perm_broadcast): New.
72         (expand_vec_perm_interleave_2, expand_vec_perm_v4hi_5): New.
73         (ia64_expand_vec_perm_const_1, ia64_expand_vec_perm_const): New.
74         (ia64_vectorize_vec_perm_const_ok): New.
75         (ia64_expand_vec_setv2sf, ia64_expand_vec_perm_even_odd): New.
76         * config/ia64/ia64-protos.h: Update.
77         * config/ia64/vect.md (VEC): New mode iterator.
78         (vecint): New mode attribute.
79         (vec_interleave_lowv8qi, vec_interleave_highv8qi): Privatize with '*'.
80         (vec_interleave_lowv4hi, vec_interleave_highv4hi): Likewise.
81         (vec_interleave_lowv2si, vec_interleave_highv2si): Likewise.
82         (vec_interleave_lowv2sf, vec_interleave_highv2sf): Likewise.
83         (mix1_even, mix1_odd, mux1_alt): Likewise.
84         (mux1_brcst_qi): Remove '*' from name.
85         (vec_extract_evenv8qi, vec_extract_oddv8qi): Remove.
86         (vec_extract_evenv4hi, vec_extract_oddv4hi): Remove.
87         (vec_extract_evenv2si, vec_extract_oddv2si): Remove.
88         (vec_extract_evenv2sf, vec_extract_oddv2sf): Remove.
89         (vec_extract_evenodd_helper): Remove.
90         (vec_setv2sf): Use ia64_expand_vec_setv2sf.
91         (vec_pack_trunc_v4hi): Use ia64_expand_vec_perm_even_odd.
92         (vec_pack_trunc_v2si): Likewise.
93         (vec_perm_const<VEC>): New.
94
95 2011-12-20  Richard Henderson  <rth@redhat.com>
96
97         * tree-vect-generic.c (expand_vector_operations_1): Correct tests
98         for vector types -- use the type not the mode.  Fix optab selection
99         for vector shifts by a scalar.  Handle over-large integer modes
100         like BLKmode.
101
102 2011-12-20  Richard Henderson  <rth@redhat.com>
103
104         * config/arm/arm.md (*arm_xorsi3): Match iorsi3 and perform
105         post-reload splitting.
106
107         * config/arm/arm.md (*arm_cmpdi_unsigned): Enable for thumb2.
108         * config/arm/arm.c (arm_select_cc_mode): Use it.
109
110 2011-12-20  Richard Sandiford  <rdsandiford@googlemail.com>
111
112         * tree-ssa-math-opts.c (convert_plusminus_to_widen): Restrict
113         handling of signedness differences to integer types.  Only build
114         a new optype if type1 isn't correct.
115
116 2011-12-20  Vladimir Makarov  <vmakarov@redhat.com>
117
118         PR target/49865
119         * ira-costs.c (find_costs_and_classes): Prefer registers even
120           if the memory cost is the same.
121
122 2011-12-20  Joseph Myers  <joseph@codesourcery.com>
123
124         * c-decl.c (diagnose_mismatched_decls, grokdeclarator, grokfield)
125         (finish_struct): Refer to C11 in comments.  Use flag_isoc11.
126         * c-parser.c (c_parser_static_assert_declaration)
127         (c_parser_static_assert_declaration_no_semi, c_parser_declspecs)
128         (c_parser_alignas_specifier, c_parser_alignof_expression): Refer
129         to C11 in comments.  Use flag_isoc11.
130         * c-typeck.c (comptypes_check_different_types): Refer to C11 in
131         comment.
132         * doc/cpp.texi (Overview): Refer to -std=c11 instead of -std=c1x.
133         * doc/cppopts.texi (-std=c11, -std=gnu11): Document in preference
134         to -std=c1x and -std=gnu1x.
135         * doc/extend.texi (Inline, Alternate Keywords, Other Builtins)
136         (__builtin_complex, Unnamed Fields): Refer to -std=c11 and C11
137         instead of -std=c1x and C1X.
138         * doc/invoke.texi (-std=c11, -std=iso9899:2011): Document in
139         preference to -std=c1x.
140         (-std=gnu11): Document in preference to -std=gnu1x.
141         * doc/standards.texi: Document C11 instead of C1X.  Document C11
142         as actual standard.  Document headers required from freestanding
143         C11 implementations.
144         * ginclude/float.h, ginclude/stddef.h: Test __STDC_VERSION__ >=
145         201112L for C11.  Update comments to refer to C11.
146
147 2011-12-20  Andreas Schwab  <schwab@linux-m68k.org>
148
149         * configure: Regenerate.
150
151 2011-12-20  Bernd Schmidt  <bernds@codesourcery.com>
152
153         PR middle-end/51200
154         * expr.c (store_field): Avoid a direct store if the mode is larger
155         than the size of the bit field.
156         * stor-layout.c (layout_decl): If flag_strict_volatile_bitfields,
157         treat non-volatile bit fields like volatile ones.
158         * toplev.c (process_options): Disallow combination of
159         -fstrict-volatile-bitfields and ABI versions less than 2.
160         * config/arm/arm.c (arm_option_override): Don't enable
161         flag_strict_volatile_bitfields if the ABI version is less than 2.
162         * config/h8300/h8300.c (h8300_option_override): Likewise.
163         * config/rx/rx.c (rx_option_override): Likewise.
164         * config/m32c/m32c.c (m32c_option_override): Likewise.
165         * config/sh/sh.c (sh_option_override): Likewise.
166
167 2011-12-20  Richard Guenther  <rguenther@suse.de>
168
169         PR lto/46796
170         * dwarf2out.c (modified_type_die): When the type variant
171         chain is corrupt use the types name, if available, instead
172         of __unknown__.
173
174 2011-12-20  Tristan Gingold  <gingold@adacore.com>
175
176         * config/alpha/alpha.c (alpha_start_function): Adjust condition to
177         create VMS trampoline entry point.
178
179 2011-12-19  Richard Sandiford  <rdsandiford@googlemail.com>
180
181         PR rtl-optimization/42839
182         * fwprop.c (forward_propagate_subreg): Skip the SIGN/ZERO_EXTEND
183         optimization if the source register is already extended.
184
185 2011-12-19  Richard Sandiford  <rdsandiford@googlemail.com>
186
187         * lower-subreg.c (can_decompose_p): Check every word of a hard
188         register.
189
190 2011-12-19  Sandra Loosemore  <sandra@codesourcery.com>
191             Tom de Vries <tom@codesourcery.com>
192
193         PR rtl-opt/50380
194         * cse.c (find_comparison_args): Detect fixed point and
195         bail early.
196
197 2011-12-19  Aldy Hernandez  <aldyh@redhat.com>
198
199         PR middle-end/51411
200         * trans-mem.c (ipa_tm_create_version): Unset DECL_WEAK.
201
202 2011-12-19  Quentin Neill  <quentin.neill@amd.com>
203
204         PR target/48743
205         * config/i386/driver-i386.c (host_detect_local_cpu): Also check
206         family to distinguish PROCESSOR_ATHLON.
207
208 2011-12-19  Richard Guenther  <rguenther@suse.de>
209
210         PR lto/51573
211         * streamer-hooks.h (struct streamer_hooks): Add second
212         ref_p parameter to write_tree.
213         (stream_write_tree): Adjust.
214         (stream_write_tree_shallow_non_ref): New define.
215         * lto-streamer.h (lto_output_tree): Adjust.
216         * lto-streamer-out.c (lto_output_tree): Likewise.
217         * tree-streamer-out.c (streamer_write_chain): Only
218         force the immediate tree to be streamed as non-reference.
219
220 2011-12-19  Martin Jambor  <mjambor@suse.cz>
221
222         PR tree-optimization/51583
223         * tree-sra.c (load_assign_lhs_subreplacements): Call
224         force_gimple_operand_gsi when necessary also in case of no
225         corresponding replacement on the RHS.
226
227 2011-12-19  Jakub Jelinek  <jakub@redhat.com>
228
229         * gimple.h (gimplify_seq_add_stmt): Rename to...
230         (gimple_seq_add_stmt_without_update): ... this.
231         * gimplify.c (gimplify_seq_add_stmt): Rename to...
232         (gimple_seq_add_stmt_without_update): ... this.
233         (gimplify_seq_add_stmt): New inline wrapper for it.
234         * tree-vect-patterns.c (append_pattern_def_seq): Use
235         gimple_seq_add_stmt_without_update instead of gimplify_seq_add_stmt.
236
237         PR tree-optimization/51596
238         * tree-cfg.c (replace_uses_by): Call gimple_purge_dead_eh_edges
239         when needed.
240
241         PR middle-end/51590
242         PR tree-optimization/51606
243         * tree-vect-patterns.c (append_pattern_def_seq, new_pattern_def_seq):
244         New inline functions.
245         (vect_recog_over_widening_pattern,
246         vect_recog_vector_vector_shift_pattern,
247         vect_recog_sdivmod_pow2_pattern, vect_recog_mixed_size_cond_pattern,
248         adjust_bool_pattern_cast, vect_recog_bool_pattern): Use them.
249
250 2011-12-19  Richard Guenther  <rguenther@suse.de>
251
252         PR lto/51572
253         * tree.c (free_lang_data_in_type): Do not unlink TYPE_DECL
254         from TYPE_FIELDS.
255         (find_decls_types_r): Walk TYPE_DECLs in TYPE_FIELDS.
256         * tree-streamer-out.c (write_ts_field_decl_tree_pointers): Do
257         not stream TREE_CHAIN.
258         (write_ts_type_non_common_tree_pointers): Stream TYPE_FIELDS
259         using streamer_write_chain.
260         * tree-streamer-in.c (lto_input_ts_field_decl_tree_pointers):
261         Do not stream TREE_CHAIN.
262         (lto_input_ts_type_non_common_tree_pointers): Stream TYPE_FIELDS
263         using streamer_read_chain.
264         * gimple-streamer-in.c (input_gimple_stmt): Skip non-FIELD_DECLs.
265         * gimple.c (gimple_canonical_types_compatible_p): Properly
266         handle trailing non-FIELD_DECLs in TYPE_FIELDS.
267
268 2011-12-19  Andreas Schwab  <schwab@linux-m68k.org>
269
270         * configure: Regenerate.
271
272 2011-12-19  Bernd Schmidt  <bernds@codesourcery.com>
273
274         * emit-rtl.c (init_emit_once): Initialize const_tiny_rtx[3] for
275         partial integer modes.
276
277 2011-12-19  Andreas Schwab  <schwab@linux-m68k.org>
278
279         PR target/51532
280         * config/m68k/m68k.h (FL_CAS, TARGET_CAS): Define.
281         * config/m68k/m68k.c (FL_FOR_isa_20): Add FL_CAS.
282         * config/m68k/sync.md: Use TARGET_CAS instead of (TARGET_68020 ||
283         TARGET_68040).
284
285 2011-12-18  Anatoly Sokolov  <aesok@post.ru>
286
287         * config/ia64/ia64.h (REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P,
288         LEGITIMATE_ADDRESS_REG, LEGITIMATE_ADDRESS_DISP,
289         GO_IF_LEGITIMATE_ADDRESS): Remove macros.
290         * config/ia64/ia64.c (TARGET_LEGITIMATE_ADDRESS_P): Define.
291         (ia64_reg_ok_for_base_p, ia64_legitimate_address_reg,
292         ia64_legitimate_address_disp, ia64_legitimate_address_p): New
293         functions.
294
295 2011-12-17  Tom de Vries  <tom@codesourcery.com>
296
297         PR tree-optimization/51491
298         * tree-ssa-ccp.c (insert_clobber_before_stack_restore)
299         (gsi_prev_dom_bb_nondebug, insert_clobbers_for_var): New function.
300         (ccp_fold_stmt): Use insert_clobbers_for_var after a successful
301         fold_builtin_alloca_with_align.
302         (ccp_visit_stmt): Calculate and free dominator info.
303
304 2011-12-16  Eric Botcazou  <ebotcazou@adacore.com>
305
306         * config/sparc/sparc.md (UNSPEC_FRAME_BLOCKAGE): New constant.
307         (frame_blockage): New expander.
308         (frame_blockage<P:mode>): New instruction.
309         * config/sparc/sparc.c (sparc_expand_prologue): When the sequence of
310         instructions establishing the frame isn't atomic, emit frame blockage.
311
312 2011-12-16  Tristan Gingold  <gingold@adacore.com>
313
314         * config/alpha/vms.h (USE_TM_CLONE_REGISTRY): Define.
315
316 2011-12-16  Tristan Gingold  <gingold@adacore.com>
317
318         * config/alpha/alpha.c (alpha_use_linkage): Follow transparent alias.
319         (alpha_write_one_linkage): Use assemble_name to emit linkage name.
320
321 2011-12-16  Tristan Gingold  <gingold@adacore.com>
322
323         * config/vms/t-vms (vms.o, vms-c.o): Force output filename.
324
325 2011-12-16  Tristan Gingold  <gingold@adacore.com>
326
327         * config/vms/vms.c (VMS_CRTL_GLOBAL): Define.
328         (vms_patch_builtins): Handle.
329         * config/vms/vms-crtlmap.map: Add an entry for environ.
330
331 2011-12-16  Jakub Jelinek  <jakub@redhat.com>
332
333         PR debug/51557
334         * sel-sched-ir.c (create_copy_of_insn_rtx): Copy all notes
335         other than REG_EQUAL, REG_EQUIV and REG_LABEL_OPERAND.
336
337         PR tree-optimization/51576
338         * tree-cfg.c (replace_uses_by): Call maybe_clean_or_replace_eh_stmt
339         even if fold_stmt didn't change anything.
340
341 2011-12-16  Richard Guenther  <rguenther@suse.de>
342
343         PR lto/51572
344         * dwarf2out.c (gen_type_die_with_usage): Use the context of
345         the TYPE_DECL as well if it is file-scope.
346
347 2011-12-15  DJ Delorie  <dj@redhat.com>
348
349         * config/rl78/rl78.md (return): Rename to rl78_return.
350         * config/rl78/rl78.c (rl78_expand_epilogue): Use new name.
351         (rl78_expand_eh_epilogue): Use new name.
352         (rl78_calculate_death_notes): Likewise.
353
354 2011-12-15  Jakub Jelinek  <jakub@redhat.com>
355
356         * tree-vectorizer.h (struct _stmt_vec_info): Remove pattern_def_stmt
357         field, add pattern_def_seq.
358         (STMT_VINFO_PATTERN_DEF_STMT): Remove.
359         (STMT_VINFO_PATTERN_DEF_SEQ): Define.
360         (NUM_PATTERNS): Bump to 10.
361         * tree-vect-loop.c (vect_determine_vectorization_factor,
362         vect_transform_loop): Adjust for pattern def changing from a single
363         gimple stmt to gimple_seq.
364         * tree-vect-stmts.c (vect_analyze_stmt, new_stmt_vec_info,
365         free_stmt_vec_info): Likewise.
366         * tree-vect-patterns.c (vect_recog_over_widening_pattern,
367         vect_recog_vector_vector_shift_pattern,
368         vect_recog_mixed_size_cond_pattern, adjust_bool_pattern_cast,
369         adjust_bool_pattern, vect_mark_pattern_stmts): Likewise.
370         (vect_recog_sdivmod_pow2_pattern): New function.
371         (vect_vect_recog_func_ptrs): Add it.
372
373         * config/i386/sse.md (vcond<V_256:mode><VI_256:mode>,
374         vcond<V_128:mode><VI124_128:mode>, vcond<VI8F_128:mode>v2di):
375         Use general_operand instead of nonimmediate_operand for
376         operand 5 and no predicate for operands 1 and 2.
377         * config/i386/i386.c (ix86_expand_int_vcond): Optimize
378         x < 0 ? -1 : 0 and x < 0 ? 1 : 0 into vector arithmetic
379         resp. logical shift.
380
381 2011-12-15  Georg-Johann Lay  <avr@gjlay.de>
382
383         * config/avr/avr-protos.h (print_operand): Remove.
384         (print_operand_address): Remove.
385         * config/avr/avr.h (PRINT_OPERAND): Remove.
386         (PRINT_OPERAND_ADDRESS): Remove.
387         (PRINT_OPERAND_PUNCT_VALID_P): Remove.
388         * config/avr/avr.c (TARGET_PRINT_OPERAND): New hook define.
389         (TARGET_PRINT_OPERAND_ADDRESS): New hook define.
390         (TARGET_PRINT_OPERAND_PUNCT_VALID_P): New hook define.
391         (print_operand_address): Rename to...
392         (avr_print_operand_address): ...this and make static.
393         (print_operand): Rename to...
394         (avr_print_operand): ...this and make static.
395         (avr_print_operand_punct_valid_p): New static function.
396
397 2011-12-15  Andreas Tobler  <andreast@fgznet.ch>
398
399         * config/i386/freebsd.h (TARGET_ASM_FILE_END): Define.
400
401 2011-12-15  Jakub Jelinek  <jakub@redhat.com>
402
403         PR c/51360
404         * c-parser.c (c_parser_omp_clause_num_threads,
405         c_parser_omp_clause_schedule): Call mark_exp_read.
406
407 2011-12-15  Romain Geissler  <romain.geissler@gmail.com>
408
409         * builtins.def (BUILT_IN_STPNCPY_CHK): New definition.
410         * builtins.c (expand_builtin, fold_builtin_4, maybe_emit_chk_warning):
411         Add BUILT_IN_STPNCPY_CHK case.
412         * gimple-fold.c (gimple_fold_builtin): Likewise.
413         * tree-object-size.c (pass_through_call): Likewise.
414         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1,
415         call_may_clobber_ref_p_1): Likewise.
416         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call,
417         find_func_clobbers): Likewise.
418         * tree.h (fold_builtin_strncpy_chk): Rename to fold_builtin_stxncpy_chk
419         * builtins.c (fold_builtin_strncpy_chk): Likewise.
420         Rewrite stpncpy_chk calls to strncpy_chk calls if returned value is
421         ignored.
422
423 2011-12-15  Richard Guenther  <rguenther@suse.de>
424
425         PR lto/51567
426         * gimple.c (compare_type_names_p): Also compare the TREE_CODE.
427         (iterative_hash_name): Also hash the TREE_CODE.
428         (gimple_types_compatible_p_1): For types with a TYPE_DECL
429         name and a type DECL_CONTEXT recurse to that type.
430         (iterative_hash_gimple_type): Likewise.
431
432 2011-12-15  Iain Sandoe  <iains@gcc.gnu.org>
433
434         * config/rs6000/rs6000.c  (rs6000_emit_prologue): Move update of
435         VRSave mask to save_world() when that is in use.
436
437 2011-12-15  Richard Guenther  <rguenther@suse.de>
438
439         * lto-wrapper.c (run_gcc): In non-parallel mode remove
440         ltrans inputs immediately after processing them.  In parallel
441         mode truncate the ltrans inputs in the make rule that processes
442         them if temporary files are not to be preserved.
443
444 2011-12-15  Anatoly Sokolov  <aesok@post.ru>
445
446         * config/arm/arm.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove.
447         * config/arm/arm.c (arm_memory_move_cost, arm_register_move_cost):
448         New functions.
449         (TARGET_REGISTER_MOVE_COST, TARGET_MEMORY_MOVE_COST): Define.
450
451 2011-12-15  Richard Guenther  <rguenther@suse.de>
452
453         PR lto/51564
454         * tree.h (REGISTER_DEFS_IN_THIS_STMT, NECESSARY,
455         STMT_IN_SSA_EDGE_WORKLIST): Remove no longer existing flag
456         uses documentation.
457         (TREE_ASM_WRITTEN): Update documentation to mention its use
458         on TYPE_DECLs from debug info generation.
459         * tree-streamer-out.c (pack_ts_base_value_fields): Stream
460         TREE_ASM_WRITTEN as always zero for TYPE_DECLs, similar to
461         all other types.
462
463 2011-12-15  Georg-Johann Lay  <avr@gjlay.de>
464
465         PR target/51050
466         * config/avr/avr.c (expand_epilogue): Don't build SUBREG of fp.
467         (avr_prologue_setup_frame): Ditto.
468
469 2011-12-15  Jakub Jelinek  <jakub@redhat.com>
470
471         PR debug/51517
472         * tree-ssa-coalesce.c (coalesce_ssa_name): For !optimize, test
473         !DECL_IGNORED_P instead of !DECL_ARTIFICIAL.
474
475 2012-12-15  Richard Guenther  <rguenther@suse.de>
476
477         Revert
478         PR lto/48437
479         * lto-streamer-out.c (tree_is_indexable): Exclude block-local
480         extern declarations.
481
482         PR lto/48508
483         PR lto/48437
484         * tree-streamer-out.c (streamer_write_chain): Stream DECL_EXTERNAL
485         VAR_DECLs and FUNCTION_DECLs locally.
486
487 2011-12-14  Richard Henderson  <rth@redhat.com>
488
489         * config/arm/arm.md (*addsi3_compare0_scratch): Set predicable.
490         (*compare_negsi_si, *compare_addsi2_op0): Likewise.
491         (*compare_addsi2_op1, *zeroextractsi_compare0_scratch): Likewise.
492         (*compareqi_eq0, *arm_cmpsi_insn, *arm_cmpsi_negshiftsi_si): Likewise.
493
494 2011-12-14  Richard Guenther  <rguenther@suse.de>
495
496         * tree-cfg.c (replace_uses_by): Fixup TREE_CONSTANT for
497         propagating all kinds of constants.
498
499 2011-12-14  Richard Guenther  <rguenther@suse.de>
500
501         PR lto/51497
502         * lto-streamer-in.c (lto_read_body): Fixup local types
503         TYPE_CANONICAL and variant chain.
504
505 2011-12-14  Richard Guenther  <rguenther@suse.de>
506
507         * tree.c (free_lang_data_in_type): Do not clear fields
508         dependent on debuginfo level setting.
509         (find_decls_types_r): Use TYPE_STUB_DECL rathern than TREE_CHAIN.
510         * tree.h (TYPE_STUB_DECL): Properly check that we access a type.
511
512 2011-12-14  Georg-Johann Lay  <avr@gjlay.de>
513
514         PR target/50931
515         * config/avr/avr.md (mulpsi3): New expander.
516         (*umulqihipsi3, *umulhiqipsi3): New insns.
517         (*mulsqipsi3.libgcc, *mulpsi3.libgcc): New insns.
518         (mulsqipsi3, *mulpsi3): New insn-and-splits.
519         (ashlpsi3): Turn to expander.  Move insn code to...
520         (*ashlpsi3): ...this new insn.
521
522 2011-12-14  Richard Guenther  <rguenther@suse.de>
523
524         * tree-cfg.c (replace_uses_by): Only mark blocks altered
525         that will make a difference.  Only recompute ADDR_EXPR
526         invariantness if it could possibly have changed.  Do so
527         before folding the statement.
528
529 2011-12-13  Eric Botcazou  <ebotcazou@adacore.com>
530
531         * lto-streamer-out.c (write_symbol): Use proper 64-bit host type.
532         * lto-cgraph.c (input_cgraph_opt_section): Use 'int' for offsets.
533         * lto-streamer-in.c (lto_read_body): Likewise.
534         (lto_input_toplevel_asms): Likewise.
535         * lto-section-in.c (lto_create_simple_input_block): Likewise.
536         * ipa-inline-analysis.c (inline_read_section): Likewise.
537         * ipa-prop.c (ipa_prop_read_section): Likewise.
538
539         * df.h (DF_NOTE): Fix typo in comment.
540
541 2011-12-13  Aldy Hernandez  <aldyh@redhat.com>
542
543         * trans-mem.c (ipa_tm_create_version_alias): Set DECL_CONTEXT and
544         DECL_LANG_SPECIFIC.
545
546 2011-12-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
547
548         * regmove.c (fixup_match_2): Only access call_used_regs with hard regs.
549
550 2011-12-13  Andrew Pinski  <apinski@cavium.com>
551             Adam Nemet  <anemet@caviumnetworks.com>
552
553         * config/mips/mips-cpus.def: Add Octeon2.
554         * config/mips/mips-tables.opt: Regenerate.
555         * config/mips/mips.md (define_attr "cpu"): Add Octeon2.
556         * config/mips/driver-native.c (host_detect_local_cpu): Support Octeon2.
557         * config/mips/octeon.md (octeon_arith): Add Octeon2.
558         (octeon_condmove): Likewise.
559         (octeon_load): Rename to ..
560         (octeon_load_o1): this.
561         (octeon_load_o2): New reserve.
562         (octeon_cop_o2): New reserve.
563         (octeon_store):  Match Octeon2 also.
564         (octeon_brj): Rename to ..
565         (octeon_brj_o1): this.
566         (octeon_brj_o2): New reserve.
567         (octeon_imul3): Rename to ...
568         (octeon_imul3_o1): this.
569         (octeon_imul3_o2): New reserve.
570         (octeon_imul): Rename to ...
571         (octeon_imul_o1): this.
572         (octeon_imul_o2): New reserve.
573         (octeon_mfhilo): Rename to ...
574         (octeon_mfhilo_o1): This.
575         (octeon_mfhilo_o2): New reserve.
576         (octeon_imadd): Rename to ...
577         (octeon_imadd_o1): this.
578         (octeon_imadd_o2): New reserve.
579         (octeon_idiv): Rename to ..
580         (octeon_idiv_o1): This.
581         (octeon_idiv_o2_si): New reserve.
582         (octeon_idiv_o2_di): Likewise.
583         (octeon_unknown): Match Octeon2 also.
584         * config/mips/mips.c (mips_rtx_cost_data): Add Octeon2 cost data.
585         (mips_issue_rate): Octeon2 can issue 2 at a time.
586         * config/mips/mips.h (TARGET_OCTEON): Match Octeon2 also.
587         (TARGET_OCTEON2): New define.
588         (TUNE_OCTEON): Match Octeon2 also.
589
590 2011-12-13  Richard Henderson  <rth@redhat.com>
591
592         * config/sparc/tso.h: New file.
593         * config.gcc (sparc-*-linux*, sparc*-*-solaris2*): Use it.
594         * config/sparc/sparc.c (sparc_option_override): Honor
595         SUBTARGET_DEFAULT_MEMORY_MODEL.
596         * config/sparc/sparc.h (SUBTARGET_DEFAULT_MEMORY_MODEL): New.
597
598 2011-12-13  Aldy Hernandez  <aldyh@redhat.com>
599
600         PR middle-end/51443
601         * trans-mem.c (struct diagnose_tm): Remove saw_unsafe.
602         (diagnose_tm_1): Same.
603         (ipa_tm_execute): Do not test tm_may_enter_irr before we set it.
604         (ipa_tm_scan_irr_function): Return gracefully when no
605         DECL_STRUCT_FUNCTION.
606         (ipa_tm_scan_irr_block): Believe the user on TM attributes.
607
608 2011-12-13  Martin Jambor  <mjambor@suse.cz>
609
610         PR middle-end/50628
611         * tree-sra.c (propagate_subaccesses_across_link): Do not propagate
612         sub-accesses of scalar accesses.
613
614 2011-12-13  Martin Jambor  <mjambor@suse.cz>
615
616         PR tree-optimization/51362
617         * ipa-cp.c (estimate_local_effects): When estimated size of a
618         specialized clone is zero, bump it to one.
619
620 2011-12-13  Richard Guenther  <rguenther@suse.de>
621
622         PR lto/48354
623         * tree.c (find_decls_types_r): Also walk DECL_ORIGINAL_TYPE.
624         * tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers):
625         Stream DECL_ORIGINAL_TYPE.
626         * tree-streamer-out.c (write_ts_decl_non_common_tree_pointers):
627         Likewise.
628
629 2011-12-13  Jakub Jelinek  <jakub@redhat.com>
630
631         Revert
632         2011-12-12  Jakub Jelinek  <jakub@redhat.com>
633
634         PR tree-optimization/51481
635         * gimple-fold.c (gimple_fold_call): Call
636         maybe_clean_or_replace_eh_stmt.  Avoid optimization if stmt has EH
637         edges, but gimple_fold_builtin result can't throw.
638
639 2011-12-13  Jakub Jelinek  <jakub@redhat.com>
640             Michael Matz  <matz@suse.de>
641
642         PR tree-optimization/51117
643         * tree-eh.c (sink_clobbers): New function.
644         (execute_lower_eh_dispatch): Call it for BBs ending with
645         internally throwing RESX.
646         * cfgexpand.c (add_scope_conflicts_1): Add all conflicts only
647         at the first real instruction.
648
649 2011-12-13  Tristan Gingold  <gingold@adacore.com>
650
651         * final.c (final_scan_insn): Guard the call to begin_epilogue
652         debug hook.
653
654 2011-12-13  Tristan Gingold  <gingold@adacore.com>
655
656         * vmsdbgout.c (vmsdbgout_write_source_line): New function.
657         (vmsdbgout_end_prologue): Call vmsdbgout_write_source_line.
658         (vmsdbgout_begin_epilogue): Likewise.
659         (vmsdbgout_end_epilogue): Likewise.
660         (vmsdbgout_source_line): Move code to vmsdbgout_write_source_line.
661
662 2011-12-13  Richard Guenther  <rguenther@suse.de>
663
664         PR middle-end/51481
665         * tree-cfg.c (replace_uses_by): Pass proper arguments to
666         maybe_clean_or_replace_eh_stmt.
667
668 2011-12-13  Richard Guenther  <rguenther@suse.de>
669
670         PR tree-optimization/51519
671         * ipa-inline.c (edge_badness): Use edge growth in non-guessed
672         branch probability case as well.
673
674 2011-12-13  Revital Eres  <revital.eres@linaro.org>
675
676         * modulo-sched.c (mark_loop_unsched): Free bbs.
677
678 2011-12-12  Jakub Jelinek  <jakub@redhat.com>
679
680         PR rtl-optimization/51495
681         * function.c (thread_prologue_and_epilogue_insns): Don't add
682         to bb_tail basic blocks that have EDGE_COMPLEX predecessor edges
683         from basic blocks not needing prologue.
684
685         PR tree-optimization/51481
686         * gimple-fold.c (gimple_fold_call): Call
687         maybe_clean_or_replace_eh_stmt.  Avoid optimization if stmt has EH
688         edges, but gimple_fold_builtin result can't throw.
689
690 2011-12-12  Vladimir Makarov  <vmakarov@redhat.com>
691
692         PR rtl-optimization/21617
693         * ira-color.c (bucket_allocno_compare_func): Don't compare
694         allocno classes.  Compare number of hard registers needed.
695
696 2011-12-12  Eric Botcazou  <ebotcazou@adacore.com>
697
698         PR tree-optimization/50569
699         * tree-sra.c (build_ref_for_model): Replicate a chain of COMPONENT_REFs
700         in the expression of MODEL instead of just the last one.
701
702 2011-12-12  Jakub Jelinek  <jakub@redhat.com>
703
704         PR middle-end/51510
705         * calls.c (internal_arg_pointer_based_exp_scan): Don't use
706         VEC_safe_grow_cleared if idx is smaller than VEC_length.
707
708 2011-12-12  Richard Sandiford  <richard.sandiford@linaro.org>
709
710         PR middle-end/50873
711         * optabs.c (maybe_legitimize_operand_same_code): Use copy_to_mode_reg
712         instead of force_reg.  Do nothing if the address is already a
713         non-virtual pseudo register.
714
715 2011-12-12  Torvald Riegel  <triegel@redhat.com>
716
717         * gimplify.c (voidify_wrapper_expr): Add default handling for
718         outermost wrapper.
719
720 2011-12-12  Torvald Riegel  <triegel@redhat.com>
721
722         * tree-ssa-tail-merge.c (gimple_equal_p): Don't treat transaction
723         commits as equal.
724
725 2011-12-12  Iain Sandoe  <iains@gcc.gnu.org>
726
727         * config/darwin-sections.def (zobj_const_data_section): Fix over-
728         length section name.
729
730 2011-12-11  Richard Henderson  <rth@redhat.com>
731
732         * config/rs6000/rs6000.c (rs6000_expand_interleave): Use
733         BYTES_BIG_ENDIAN, not TARGET_BIG_ENDIAN.
734
735 2011-12-11  Jakub Jelinek  <jakub@redhat.com>
736
737         PR tree-optimization/51485
738         * tree-vect-data-refs.c (vect_analyze_data_refs): Give up on
739         DRs in call stmts.
740
741 2011-12-11  Patrick Marlier  <patrick.marlier@gmail.com>
742
743         * trans-mem.c (ipa_tm_transform_calls_redirect): Do not remove edge.
744
745 2011-12-10  Richard Henderson  <rth@redhat.com>
746
747         * config/rs6000/altivec.md (altivec_vmrghb): Rewrite pattern as
748         vec_select + vec_concat.
749         (altivec_vmrghh, altivec_vmrghw, altivec_vmrghsf, altivec_vmrglb,
750         altivec_vmrglh, altivec_vmrglw, altivec_vmrglsf): Likewise.
751         (vec_perm_constv16qi): New.
752         (vec_extract_evenv4si, vec_extract_evenv4sf, vpkuhum_nomode,
753         vpkuwum_nomode, vec_extract_oddv8hi, vec_extract_oddv16qi,
754         vec_interleave_high<VI>, vec_interleave_low<VI>): Remove.
755         * config/rs6000/paired.md (paired_merge00): Rewrite pattern as
756         vec_select + vec_concat.
757         (paired_merge10, paired_merge01, paired_merge11): Likewise.
758         (vec_perm_constv2sf): New.
759         (vec_interleave_highv2sf, vec_interleave_lowv2sf,
760         vec_extract_evenv2sf, vec_extract_oddv2sf): Remove.
761         * config/rs6000/spe.md (spe_evmergehi): Rewrite pattern as
762         vec_select + vec_concat.
763         (spe_evmergehilo, spe_evmergelo, spe_evmergelohi): New.
764         (vec_perm_constv2si): New.
765         * config/rs6000/vector.md (vec_interleave_highv4sf,
766         vec_interleave_lowv4sf, vec_interleave_high<VEC_64>,
767         vec_interleave_low<VEC_64>): Remove.
768         * config/rs6000/vsx.md (VS_double): New mode attribute.
769         (UNSPEC_VSX_XXPERMDI): Remove.
770         (vsx_xxpermdi_<VSX_L>_1): Rewrite pattern as vec_select + vec_concat.
771         (vsx_xxmrghw_<VSX_W>, vsx_xxmrglw_<VSX_W>): Likewise.
772         (vsx_xxpermdi_<VSX_L>): Change to expander.
773         (vec_perm_const<VSX_D>): New.
774         (vsx_mergel_<VSX_D>, vsx_mergeh_<VSX_D>): New.
775         * config/rs6000/predicates.md (const_0_to_1_operand): New.
776         (const_2_to_3_operand): New.
777         * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): New.
778         (altivec_expand_vec_perm_const): New.
779         (rs6000_expand_vec_perm_const_1, rs6000_expand_vec_perm_const): New.
780         (rs6000_vectorize_vec_perm_const_ok): New.
781         (rs6000_do_expand_vec_perm): New.
782         (rs6000_expand_extract_even, rs6000_expand_interleave): New.
783         * config/rs6000/rs6000-builtin.def (VEC_MERGE*): Update rtx codes.
784         * config/rs6000/rs6000-modes.def: Add double-wide vector modes.
785         * config/rs6000/rs6000-protos.h: Update.
786
787 2011-12-10  Richard Henderson  <rth@redhat.com>
788
789         * expr.c (expand_expr_real_2) [VEC_PERM_EXPR]: Avoid passing a
790         CONST_INT to expand_vec_perm as the selector.
791         * optabs.c (expand_vec_perm): Assert the selector is of a proper mode.
792
793 2011-12-10  Richard Henderson  <rth@redhat.com>
794
795         * genmodes.c (struct mode_data): Remove wider_2x member.
796         (blank_mode): Adjust initializer.
797         (calc_wider_mode): Use XALLOCAVEC.
798         (emit_move_wider): Select double-width same-element vectors for
799         2xwider vectors.
800         * machmode.h (GET_MODE_2XWIDER_MODE): Update documentation.
801         * config/i386/i386.c (doublesize_vector_mode): Remove.
802         (expand_vselect_vconcat): Use GET_MODE_2XWIDER_MODE instead.
803
804 2011-12-10  Joern Rennecke  <joern.rennecke@embecosm.com>
805
806         * config/epiphany/epiphany.h (USE_LOAD_POST_INCREMENT): Define.
807         (USE_LOAD_POST_DECREMENT, USE_STORE_POST_INCREMENT): Likewise.
808         (USE_STORE_POST_DECREMENT): Likewise.
809
810         * config/epiphany/epiphany.h (EPIPHANY_RETURN_REGNO): New macro,
811         broken out of ..
812         (INCOMING_RETURN_ADDR_RTX) .. this.  Use EPIPHANY_RETURN_REGNO.
813         (DWARF_FRAME_RETURN_COLUMN): New macro.
814
815         * config/epiphany/epiphany-protos.h (epiphany_start_function): Declare.
816         * config/epiphany/epiphany.c (epiphany_handle_interrupt_attribute):
817         Split "timer" value into "timer0" and "timer1".
818         Handle page_miss, message and wand.  Don't handle static_flag.
819         Adjust warning text.
820         (epiphany_start_function): New function.
821         (epiphany_compute_function_type): Split "timer" value into "timer0"
822         and "timer1".  Handle page_miss, message and wand.
823         Don't handle static_flag.
824         (epiphany_expand_epilogue): Don't use frame_insn for status / iret
825         restore.
826         * config/epiphany/epiphany.h: ASM_DECLARE_FUNCTION_NAME: Define.
827         (enum epiphany_function_type):
828         Split EPIPHANY_FUNCTION_TIMER value into EPIPHANY_FUNCTION_TIMER0
829         and EPIPHANY_FUNCTION_TIMER1.
830         Remove EPIPHANY_FUNCTION_ILINK1 and EPIPHANY_FUNCTION_ILINK2 values.
831         Add EPIPHANY_FUNCTION_PAGE_MISS and EPIPHANY_FUNCTION_MESSAGE values.
832         Rename EPIPHANY_FUNCTION_STATIC_FLAG to EPIPHANY_FUNCTION_WAND.
833
834 2011-12-10  Nathan Sidwell  <nathan@acm.org>
835
836         PR gcov-profile/51449
837         * coverage.c (coverage_end_function): Always process the coverage
838         variables.
839
840 2011-12-09  Aldy Hernandez  <aldyh@redhat.com>
841
842         PR/51291
843         * tree.c (build_common_builtin_nodes): Do not use TM_PURE
844         attribute unless language has support for TM.
845         * config/i386/i386.c (ix86_init_tm_builtins): Exit gracefully in
846         the absence of TM builtins.
847
848 2011-12-09  Eric Botcazou  <ebotcazou@adacore.com>
849
850         * gimple-fold.c (gimple_fold_stmt_to_constant_1) <GIMPLE_UNARY_RHS>:
851         Also check the TYPE_MODE to recognize useless pointer conversions.
852
853 2011-12-09  Jakub Jelinek  <jakub@redhat.com>
854
855         PR tree-optimization/51117
856         * tree-eh.c (optimize_clobbers): Don't remove just one
857         clobber, but all consecutive clobbers before RESX.
858         Use gimple_clobber_p predicate.
859
860 2011-12-09  Michael Meissner  <meissner@the-meissners.org>
861
862         * config/rs6000/rs6000.c (altivec_expand_builtin): Call
863         expand_call to return a valid funciton instead of return
864         cosnt0_rtx/NULL_RTX if there was an error with the builtin.
865         (altivec_expand_ld_builtin): Ditto.
866         (rs6000_inner_target_options): If VSX is selected as a target
867         attribute or pragma, enable ALTIVEC also.
868         (rs6000_pragma_target_parse): Call rs6000_option_override_internal
869         to do all of the standard processing when switching options,
870         including redefining appropriate macros.
871
872         PR rtl-optimization/51469
873         * varasm.c (default_binds_local_p_1): If the symbol is a gnu
874         indirect function, mark the symbol as non-local.
875
876 2011-12-09  H.J. Lu  <hongjiu.lu@intel.com>
877
878         PR bootstrap/51479
879         * Makefile.in (errors.o): Restored.
880
881 2011-12-09  Richard Guenther  <rguenther@suse.de>
882
883         PR lto/48042
884         * tree.c (free_lang_data_in_decl): Remove freeing conditional
885         on debuginfo level.
886
887 2011-12-09  Joern Rennecke  <joern.rennecke@embecosm.com>
888
889         PR middle-end/40154
890         * emit-rtl.c (set_dst_reg_note): New function.
891         * rtl.h (set_dst_reg_note): Declare.
892         * optabs.c (expand_binop, expand_absneg_bit): Use set_dst_reg_note.
893         (emit_libcall_block, expand_fix): Likewise.
894         * function.c (assign_parm_setup_reg, expand_function_start): Likewise.
895         * expmed.c (expand_mult_const, expand_divmod): Likewise.
896         * reload1.c (gen_reload): Likewise.
897
898         * dse.c (get_stored_val, get_call_args): Use gen_int_mode.
899         * expmed.c (expand_divmod): Likewise.
900         * combine.c (simplify_if_then_else): Likewise.
901
902 2011-12-09  Kai Tietz  <ktietz@redhat.com>
903
904         * ira-color.c (print_hard_regs_subforest): Use
905         HOST_WIDEST_INT_PRINT_DEC instead of %lld.
906         (allocno_hard_regs): Change type of cost member to HOST_WIDEST_INT.
907         (add_allocno_hard_regs): Change type of argument cost
908         to HOST_WIDEST_INT.
909         * ira-conflict.c (build_conflict_bit_table): Replace use
910         of long-long by HOST_WIDEST_INT.
911
912 2011-12-09  Georg-Johann Lay  <avr@gjlay.de>
913
914         PR target/51425
915         * config/avr/avr.md (config/avr/avr.md, *sbix_branch_tmp): Use
916         zero_extract:QIHI instead of zero_extract:HI.
917
918 2011-12-09  Jakub Jelinek  <jakub@redhat.com>
919             Andrew Pinski  <apinski@cavium.com>
920
921         PR tree-optimization/51117
922         * tree-eh.c (optimize_clobbers): New function.
923         (execute_lower_eh_dispatch): Call it.
924
925 2011-12-09  Richard Guenther  <rguenther@suse.de>
926
927         PR tree-optimization/51482
928         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size):
929         Make sure to only create REAL_TYPE and INTEGER_TYPE component vectors.
930
931 2011-12-09  Kai Tietz  <ktietz@redhat.com>
932
933         * implicit-zee.c (num_realized): Change type to long.
934         (num_ze_opportunities): Likewise.
935
936 2011-12-08  Andrew Pinski  <apinski@cavium.com>
937
938         * config/mips/mips-cpus.def (octeon+): New CPU.
939         * config/mips/mips-tables.opt: Regenerate.
940         * config/mips/mips.h (MIPS_CPP_SET_PROCESSOR): Emit '+' as 'P'.
941
942 2011-12-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
943
944         PR middle-end/39976
945         * tree-ssa-dom.c (enum expr_kind): Add EXPR_PHI.
946         (struct hashable_expr): Add struct phi field.
947         (initialize_hash_element): Handle phis; change to use XCNEWVEC.
948         (hashable_expr_equal_p): Handle phis.
949         (iterative_hash_hashable_expr): Likewise.
950         (print_expr_hash_elt): Likewise.
951         (free_expr_hash_elt): Likewise.
952         (dom_opt_enter_block): Create equivalences from redundant phis.
953         (eliminate_redundant_computations): Handle redundant phis.
954         (lookup_avail_expr): Handle phis.
955
956 2011-12-08  Jakub Jelinek  <jakub@redhat.com>
957
958         PR tree-optimization/51466
959         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also copy
960         TREE_SIDE_EFFECTS.
961
962 2011-12-08  Richard Guenther  <rguenther@suse.de>
963
964         * tree-ssa-operands.c (add_stmt_operand): Do not mark stmts
965         volatile when processing operands of an ADDR_EXPR.
966         (get_indirect_ref_operands): Likewise.
967         (get_tmr_operands): Likewise.
968         (get_expr_operands): Likewise.
969
970 2011-12-08  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
971
972         PR target/50395
973         * config/s390/s390.c (s390_mainpool_finish): Emit the jump over
974         the literal pool as jump insn.
975
976 2011-12-08  Richard Guenther  <rguenther@suse.de>
977
978         PR tree-optimization/49772
979         * tree-inline.c (optimize_inline_calls): Remove bail out on errors.
980
981 2011-12-08  Richard Guenther  <rguenther@suse.de>
982
983         PR lto/50747
984         * lto-streamer-out.c (produce_symtab): Remove asserts.
985
986 2011-12-08  Richard Guenther  <rguenther@suse.de>
987
988         PR lto/49945
989         * lto-streamer-out.c (tree_is_indexable): Localize variably
990         modified types and their FIELD_DECLs.
991
992 2011-12-08  Eric Botcazou  <ebotcazou@adacore.com>
993
994         PR tree-optimization/51315
995         * tree.h (get_object_or_type_alignment): Declare.
996         * expr.c (get_object_or_type_alignment): Move to...
997         * builtins.c (get_object_or_type_alignment): ...here.  Add assertion.
998         * tree-sra.c (tree_non_mode_aligned_mem_p): Rename to...
999         (tree_non_aligned_mem_p): ...this.  Add ALIGN parameter.  Look into
1000         MEM_REFs and use get_object_or_type_alignment for them.
1001         (build_accesses_from_assign): Adjust for above change.
1002         (access_precludes_ipa_sra_p): Likewise.
1003
1004 2011-12-08  Richard Guenther  <rguenther@suse.de>
1005
1006         PR lto/48437
1007         * lto-streamer-out.c (tree_is_indexable): Exclude block-local
1008         extern declarations.
1009
1010 2011-12-07  Andrew Pinski  <apinski@cavium.com>
1011
1012         PR middle-end/45416
1013         * expr.c (do_store_flag): Rewrite code that looks for BIT_AND_EXPR for
1014         SSA-expand.
1015
1016 2011-12-07  Richard Guenther  <rguenther@suse.de>
1017
1018         PR tree-optimization/50823
1019         * ipa-inline.c (edge_badness): Do not account for the number of
1020         remaining calls.
1021
1022 2011-12-07  Martin Jambor  <mjambor@suse.cz>
1023
1024         PR tree-optimization/50744
1025         * ipa-cp.c (good_cloning_opportunity_p): Assert size_cost is positive,
1026         compute evaluation in HOST_WIDEST_INT.
1027         (safe_add): New function
1028         (propagate_effects): Use safe_add to accumulate effects.
1029
1030 2011-12-06  Joel Sherrill <joel.sherrill@oarcorp.com>
1031
1032         * config/rs6000/rtems.h: Switch to using global_options_set
1033         in SUBSUBTARGET_OVERRIDE_OPTIONS.
1034
1035 2011-12-06  David S. Miller  <davem@davemloft.net>
1036
1037         * config/sparc/visintrin.h: Add appropriate __VIS__ cpp protection.
1038
1039 2011-12-06  Georg-Johann Lay  <avr@gjlay.de>
1040
1041         * config/avr/avr.c (avr_file_start): Fix missing ,
1042
1043 2011-12-06  Jakub Jelinek  <jakub@redhat.com>
1044
1045         PR target/51354
1046         * config/i386/i386.c (ix86_emit_leave): Call ix86_add_cfa_restore_note
1047         unconditionally.
1048
1049 2011-12-06  Georg-Johann Lay  <avr@gjlay.de>
1050
1051         Forward-port from gcc-4_6-branch r181936 2011-12-02.
1052         * config/avr/avr-mcus.def (avr_mcu_types): ATtiny4313 and
1053         AT86RF401 have a 16-bit SP (their manual is bogus).
1054
1055 2011-12-06  Georg-Johann Lay  <avr@gjlay.de>
1056
1057         Forward-port from gcc-4_6-branch r181936 2011-12-02.
1058
1059         PR target/51002
1060         * config/avr/avr.md (movhi_sp_r): Set insn condition to
1061         !AVR_HAVE_8BIT_SP.
1062         * config/avr/avr.c (output_movhi): Use "clr%B0" instead of "in
1063         %B0,__SP_H__" if AVR_HAVE_8BIT_SP.
1064         (avr_file_start): Only print "__SP_H__ = 0x3e" if !AVR_HAVE_8BIT_SP.
1065
1066 2011-12-06  Georg-Johann Lay  <avr@gjlay.de>
1067
1068         PR target/51409
1069         PR target/49868
1070         * config/avr/avr.h (ADDR_SPACE_PGM, ADDR_SPACE_PGM1,
1071         ADDR_SPACE_PGM2, ADDR_SPACE_PGM3, ADDR_SPACE_PGM4,
1072         ADDR_SPACE_PGM5, ADDR_SPACE_PGMX): Write as enum.
1073         (avr_addrspace_t): New typedef.
1074         (avr_addrspace): New declaration.
1075         * config/avr/avr-c.c (avr_toupper): New static function.
1076         (avr_register_target_pragmas, avr_cpu_cpp_builtins): Use
1077         avr_addrspace to get address space information.
1078         * config/avr/avr.c (avr_addrspace): New variable.
1079         (avr_out_lpm, avr_pgm_check_var_decl, avr_insert_attributes,
1080         avr_asm_named_section, avr_section_type_flags,
1081         avr_asm_select_section, avr_addr_space_address_mode,
1082         avr_addr_space_convert, avr_emit_movmemhi): Use it.
1083         (avr_addr_space_pointer_mode): Forward to avr_addr_space_address_mode.
1084         (avr_pgm_segment): Remove.
1085
1086 2011-12-06  Richard Guenther  <rguenther@suse.de>
1087
1088         PR middle-end/50601
1089         * varasm.c (assemble_alias): Move DECL_EXTERNAL implementation
1090         quirk adjustjment ...
1091         * passes.c (rest_of_decl_compilation): ... here.
1092
1093 2011-12-06  Richard Guenther  <rguenther@suse.de>
1094
1095         PR middle-end/51436
1096         * gimple-fold.c (gimplify_and_update_call_from_tree): Guard vdef check
1097         for the fact we do not have virtual operands when not optimizing.
1098
1099 2011-12-06  Richard Guenther  <rguenther@suse.de>
1100
1101         PR tree-optimization/51245
1102         * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_constant_for_pieces):
1103         New function.
1104         (vn_reference_lookup_3): Use it.  Properly valueize all refs we create.
1105
1106 2011-12-06  Iain Sandoe  <iains@gcc.gnu.org>
1107
1108         * config/rs6000/rs6000.c (darwin_rs6000_override_options): Initialize
1109         rs6000_current_abi.
1110
1111 2011-12-06  Richard Guenther  <rguenther@suse.de>
1112
1113         PR tree-optimization/51363
1114         * gimple.c (gimple_rhs_has_side_effects): Remove.
1115         * gimple.h (gimple_rhs_has_side_effects): Likewise.
1116         * tree-ssa-dom.c (optimize_stmt): Simplify conditional.
1117
1118 2011-12-06  Alan Modra  <amodra@gmail.com>
1119
1120         PR target/50906
1121         * config/rs6000/rs6000.c (rs6000_emit_prologue <TARGET_SPE_ABI>):
1122         Do not mark r11 setup as frame-related.  Pass correct offset to
1123         rs6000_emit_savres_rtx.  Correct out-of-line rs6000_frame_related
1124         arguments.  Correct sp_offset.  Remove "offset" fudge from
1125         in-line rs6000_frame_related call.  Rename misleading variable.
1126         Fix comments and whitespace.  Tidy some expressions.
1127         (rs6000_emit_epilogue <TARGET_SPE_ABI>): Always set frame_reg_rtx
1128         to r11 in out-of-line case.  Correct sp_offset.  Pass correct
1129         offset to rs6000_emit_savres_rtx.  Rename misleading variable.
1130         Fix comments and whitespace.  Tidy some expressions.
1131         (rs6000_emit_epilogue <non-TARGET_SPE_ABI>): Add sp_offset
1132         adjustment when !saving_GPRs_inline.  Correct register mode
1133         used in address calcs.
1134         (rs6000_emit_epilogue <non-TARGET_SPE_ABI>): Similarly when
1135         !restoring_GPRs_inline.
1136
1137 2011-12-06  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
1138
1139         * config/arm/vfp.md (*combine_vcvt_f64_<FCVTI32typename>): Fix
1140         formatting character for vmov.f64 case.
1141
1142 2011-12-05  Jakub Jelinek  <jakub@redhat.com>
1143
1144         PR tree-optimization/51396
1145         * tree-ssa-math-opts.c (convert_mult_to_fma): Don't optimize
1146         if MUL_RESULT has zero uses.
1147
1148         PR debug/51410
1149         * c-decl.c (pop_scope): Don't add DECL_EXTERNAL decls
1150         for debug info if scope is file_scope.
1151
1152         PR c/51339
1153         * c-decl.c (c_finish_incomplete_decl, finish_decl): Call
1154         relayout_decl instead of layout_decl.
1155
1156 2011-12-05  Richard Sandiford  <rdsandiford@googlemail.com>
1157
1158         * resource.c (init_resource_info): Only consider EXIT_IGNORE_STACK
1159         if there is in epilogue.
1160
1161 2011-12-05  Richard Sandiford  <rdsandiford@googlemail.com>
1162
1163         * optabs.c (maybe_emit_sync_lock_test_and_set): Pass a null target
1164         to emit_library_call_value.
1165         (expand_atomic_compare_and_swap): Likewise.
1166
1167 2011-12-05  Vladimir Makarov  <vmakarov@redhat.com>
1168
1169         PR other/50775
1170         * ira-int.h (struct ira_object): Remove add_data.
1171         (OBJECT_ADD_DATA): Remove.
1172
1173         * ira-build.c (ira_create_object): Remove OBJECT_ADD_DATA
1174         initialization.
1175
1176         * ira-color.c (object_hard_regs_t, object_hard_regs): Rename to
1177         allocno_hard_regs_t, allocno_hard_regs.
1178         (object_hard_regs_node_t, object_hard_regs_node): Rename to
1179         allocno_hard_regs_node_t and allocno_hard_regs_node.
1180         (struct allocno_color_data): Add new member last_process.  Move
1181         profitable_hard_regs, hard_regs_node, and hard_regs_subnodes_start
1182         from object_color_data.
1183         (object_color_data_t, object_color_data, OBJECT_COLOR_DATA): Remove.
1184         (curr_allocno_process): New static variable.
1185         (object_hard_regs_eq, object_hard_regs_htab): Rename to
1186         allocno_hard_regs_eq and allocno_hard_regs_htab.
1187         (init_object_hard_regs, finish_object_hard_regs): Rename to
1188         init_allocno_hard_regs and finish_allocno_hard_regs.
1189         (object_hard_regs_compare, object_hard_regs_node_t): Rename to
1190         allocno_hard_regs_compare and allocno_hard_regs_node_t.
1191         (create_new_object_hard_regs_node): Rename to
1192         create_new_allocno_hard_regs_node.
1193         (add_new_object_hard_regs_node_to_forest): Rename to
1194         add_new_allocno_hard_regs_node_to_forest.
1195         (add_object_hard_regs_to_forest, collect_object_hard_regs_cover):
1196         Rename to add_allocno_hard_regs_to_forest and
1197         collect_allocno_hard_regs_cover.
1198         (setup_object_hard_regs_nodes_parent): Rename to
1199         setup_allocno_hard_regs_nodes_parent.
1200         (remove_unused_object_hard_regs_nodes): Rename to
1201         remove_unused_allocno_hard_regs_nodes.
1202         (enumerate_object_hard_regs_nodes, object_hard_regs_nodes_num):
1203         Rename to enumerate_allocno_hard_regs_nodes and
1204         allocno_hard_regs_nodes_num.
1205         (object_hard_regs_nodes, object_hard_regs_subnode_t): Rename to
1206         allocno_hard_regs_nodes and allocno_hard_regs_subnode_t.
1207         (object_hard_regs_subnode, object_hard_regs_subnodes): Rename to
1208         allocno_hard_regs_subnode and allocno_hard_regs_subnodes.
1209         (object_hard_regs_subnode_index): Rename to
1210         allocno_hard_regs_subnode_index.
1211         (setup_object_hard_regs_subnode_index): Rename to
1212         setup_allocno_hard_regs_subnode_index.
1213         (get_object_hard_regs_subnodes_num): Rename to
1214         get_allocno_hard_regs_subnodes_num.
1215         (form_object_hard_regs_nodes_forest): Rename to
1216         form_allocno_hard_regs_nodes_forest.
1217         (finish_object_hard_regs_nodes_tree): Rename to
1218         form_allocno_hard_regs_nodes_forest
1219         (finish_object_hard_regs_nodes_forest): Rename to
1220         finish_allocno_hard_regs_nodes_forest.
1221         (setup_left_conflict_sizes_p): Use allocno data instead of object ones.
1222         Process conflict allocnos once.
1223         (update_left_conflict_sizes_p): Use allocno data instead of object
1224         ones.  Change prototype signature.
1225         (empty_profitable_hard_regs): Use allocno data instead of object ones.
1226         (setup_profitable_hard_regs): Ditto.
1227         (get_conflict_profitable_regs): Rename to
1228         get_conflict_and_start_profitable_regs.  Use allocno data for
1229         profitable regs calculation.
1230         (check_hard_reg_p): Change prototype signature.  Check profitable
1231         regs for allocno not the objects.
1232         (assign_hard_reg): Process conflict allocnos only once for
1233         updating conflict costs.
1234         (setup_allocno_available_regs_num): Use allocno data instead of
1235         object ones.  Modify debug output.
1236         (color_pass): Remove initialization and finalization of object
1237         color data.
1238
1239 2011-12-05  Kazu Hirata  <kazu@codesourcery.com>
1240
1241         PR target/51408
1242         * config/arm/arm.md (*minmax_arithsi): Always require the else
1243         clause in the MINUS case.
1244
1245 2011-12-05  Richard Guenther  <rguenther@suse.de>
1246
1247         PR tree-optimization/50904
1248         * tree-ssa-loop-im.c (struct mem_ref): Remove vops member.
1249         (MEM_ANALYZABLE): New.
1250         (memory_references): Remove clobbered_vops and vop_ref_map
1251         members, add all_refs_stored_in_loop member.
1252         (memref_free): Adjust.
1253         (mem_ref_alloc): Likewise.
1254         (gather_mem_refs_stmt): Do not record clobbers, instead
1255         record refs for unanalyzable stmts.
1256         (gather_mem_refs_in_loops): Do not propagate clobbers.
1257         (struct vop_to_refs_elt, vtoe_hash, vtoe_eq, vtoe_free,
1258         record_vop_access, get_vop_accesses, get_vop_stores,
1259         add_vop_ref_mapping): Remove.
1260         (create_vop_ref_mapping_loop): Adjust to simply record all stores.
1261         (analyze_memory_references): Adjust.
1262         (refs_independent_p): Check for not analyzable refs.
1263         (can_sm_ref_p): Likewise.
1264         (ref_indep_loop_p_1): Simplify.
1265         (tree_ssa_lim_finalize): Adjust.
1266
1267         * tree-ssa-loop-im.c (stmt_cost): Simplify, use LIM_EXPENSIVE
1268         rather than magic constants.  Assign zero cost to PAREN_EXPR
1269         and SSA_NAME copies.  Assign cost proportional to the vector
1270         size for vector constructors.
1271
1272 2011-12-05  Richard Guenther  <rguenther@suse.de>
1273
1274         * tree-ssa-alias.h (struct ao_ref_s): Add volatile_p field.
1275         * tree-ssa-alias.c (ao_ref_init): Initialize it.
1276         (ao_ref_init_from_ptr_and_size): Likewise.
1277         (refs_may_alias_p_1): Two volatile accesses conflict.
1278         (ref_maybe_used_by_call_p_1): Likewise.
1279         (call_may_clobber_ref_p_1): Likewise.
1280         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Initialize
1281         volatile_p field.
1282
1283 2011-12-05  Richard Guenther  <rguenther@suse.de>
1284
1285         * tree-ssa.c (verify_ssa): Verify SSA names in the loop over all SSA
1286         names.  Remove SSA operand checking, call verify_ssa_operands.
1287         * tree-ssa-operands.h (verify_ssa_operands): Declare.
1288         * tree-ssa-operands.c (verify_ssa_operands): New function.
1289
1290 2011-12-05  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
1291
1292         * config/arm/arm.c (vfp3_const_double_for_fract_bits): Define.
1293         * config/arm/arm-protos.h (vfp3_const_double_for_fract_bits): Declare.
1294         * config/arm/constraints.md ("Dt"): New constraint.
1295         * config/arm/predicates.md
1296         (const_double_vcvt_power_of_two_reciprocal): New.
1297         * config/arm/vfp.md (FCVTI32typename): New.
1298         (FCVT): New iterator.
1299         (*combine_vcvt_f32_<FCVTI32typename>): New.
1300         (*combine_vcvt_f64_<FCVTI32typename>): New.
1301
1302 2011-12-05  Richard Guenther  <rguenther@suse.de>
1303
1304         * cgraph.c (cgraph_create_edge_1): Initialize
1305         call_stmt_cannot_inline_p from the stmt if possible.
1306         (cgraph_make_edge_direct): Likewise.
1307         * gimple-streamer-in.c (input_gimple_stmt): Do not
1308         call gimple_call_set_cannot_inline.
1309         * gimple.h (enum gf_mask): Remove GF_CALL_CANNOT_INLINE, shift values.
1310         (gimple_call_set_cannot_inline): Remove.
1311         (gimple_call_cannot_inline_p): Likewise.
1312         * ipa-inline-analysis.c (initialize_inline_failed): Look
1313         at the edge call_stmt_cannot_inline_p flag.
1314         * ipa-inline.c (can_inline_edge_p): Likewise.
1315         (early_inliner): Only update the edge flag.
1316         * ipa-prop.c (update_indirect_edges_after_inlining): Likewise.
1317         (ipa_modify_call_arguments): Do not call gimple_call_set_cannot_inline.
1318         * cgraphunit.c (assemble_thunk): Likewise.
1319         * gimple-fold.c (gimple_fold_call): Likewise.
1320
1321         * tree.h (CALL_CANNOT_INLINE_P): Remove.
1322         * tree-mudflap.c (mf_xform_statements): Do not modify alloca calls.
1323         * builtins.c (expand_builtin_alloca): With -fmudflap do not expand
1324         alloca calls inline.
1325         * cfgexpand.c (expand_call_stmt): Do not set CALL_CANNOT_INLINE_P.
1326         * gimple.c (gimple_build_call_from_tree): Do not read
1327         CALL_CANNOT_INLINE_P.
1328         * gimplify.c (gimplify_call_expr): Do not copy CALL_CANNOT_INLINE_P.
1329
1330 2011-12-05  Jakub Jelinek  <jakub@redhat.com>
1331             Eric Botcazou  <ebotcazou@adacore.com>
1332
1333         PR middle-end/51323
1334         PR middle-end/50074
1335         * calls.c (internal_arg_pointer_exp_state): New variable.
1336         (internal_arg_pointer_based_exp_1,
1337         internal_arg_pointer_exp_scan): New functions.
1338         (internal_arg_pointer_based_exp): New function.
1339         (mem_overlaps_already_clobbered_arg_p): Use it.
1340         (expand_call): Free internal_arg_pointer_exp_state.cache vector
1341         and clear internal_arg_pointer_exp_state.scan_start.
1342
1343 2011-12-04  Kaz Kojima  <kkojima@gcc.gnu.org>
1344
1345         * config/sh/linux.h (TARGET_DEFAULT): Add MASK_SOFT_ATOMIC.
1346         * config/sh/sync.md: New file.
1347         * config/sh/sh.md: Include sync.md.
1348         * config/sh/sh.opt (msoft-atomic): New option.
1349         * doc/invoke.texi (SH Options): Document it.
1350
1351 2011-12-04  Nathan Sidwell  <nathan@acm.org>
1352
1353         * gcov-io.h (struct gcov_info): Replace trailing array with
1354         pointer to array.
1355         * profile.c (branch_prob): Only call renamed
1356         coverage_begin_function once.
1357         * coverage.h (coverage_begin_output): Rename to ...
1358         (coverage_begin_function): ... here.
1359         * coverage.c (struct function_list): Rename to ...
1360         (struct coverage_data): ... this.  Update all uses.
1361         (gcov_info_var, gcov_fn_info_type, gcov_fn_info_ptr_type): New globals.
1362         (bbg_file_opened, bbg_function_announced): Remove.
1363         (get_coverage_counts): Adjust message.
1364         (coverage_begin_ouput): Rename to ...
1365         (coverage_begin_function): ... here.  Move file opening to
1366         coverage_init.  Adjust for being called only once.
1367         (coverage_end_function): Remove bbg file and inhibit further
1368         output here on error.
1369         (build_info_type): Adjust for change to pointer to array.
1370         (build_info): Receive array of function pointers and adjust.
1371         (create_coverage): Break into ...
1372         (coverage_obj_init, coverage_obj_fn, coverage_obj_finish):
1373         ... these, and adjust.
1374         (coverage_init): Open the notes file here.  Tidy.
1375         (coverage_finish): Call coverage_obj_init etc.
1376
1377 2011-12-04  Ira Rosen  <ira.rosen@linaro.org>
1378
1379         PR middle-end/51285
1380         * tree-vect-loop.c (vect_create_epilog_for_reduction): Create exit
1381         phi nodes for outer loop in case of double reduction.
1382
1383 2011-12-04  Jérémie Detrey  <Jeremie.Detrey@loria.fr>
1384
1385         PR target/51393
1386         * config/i386/avxintrin.h (_mm256_insert_epi64): Declare second
1387         parameter as long long.
1388
1389 2011-12-04  Richard Sandiford  <rdsandiford@googlemail.com>
1390
1391         PR middle-end/51351
1392         * optabs.c (init_sync_libfuncs): Use "or" rather than "ior"
1393         in the external names.
1394
1395 2011-12-03  Jack Howarth <howarth@bromo.med.uc.edu>
1396
1397         * config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Pass -no_pie for
1398         non-PIC code when targeting 10.7 or later.
1399
1400 2011-12-03  Iain Sandoe  <iains@gcc.gnu.org>
1401
1402         * config/darwin.h (STARTFILE_SPEC): Do not use -lbundle1.o when
1403         Darwin >= 10.
1404         (DARWIN_DYLIB1_SPEC): Do not use -ldylib1.10.5.o when Darwin >= 10.
1405         (DARWIN_CRT1_SPEC): Use -lcrt1.10.6.o when Darwin >= 10.
1406
1407 2011-12-03  Jakub Jelinek  <jakub@redhat.com>
1408
1409         * fold-const.c (fold_unary_loc): Fold VEC_UNPACK_LO_EXPR,
1410         VEC_UNPACK_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
1411         VEC_UNPACK_FLOAT_HI_EXPR with VECTOR_CST argument.
1412         (fold_binary_loc): Fold VEC_PACK_TRUNC_EXPR,
1413         VEC_PACK_FIX_TRUNC_EXPR, VEC_WIDEN_MULT_LO_EXPR
1414         and VEC_WIDEN_MULT_HI_EXPR with VECTOR_CST arguments.
1415
1416         PR debug/50317
1417         * tree-ssa.c (target_for_debug_bind): Also allow is_gimple_reg_type
1418         vars that aren't referenced.
1419         (tree-ssa-live.c (remove_unused_locals): Don't clear TREE_ADDRESSABLE
1420         of unreferenced local vars.
1421         * cfgexpand.c (expand_debug_expr): For DEBUG_IMPLICIT_PTR allow also
1422         TREE_ADDRESSABLE vars that satisfy target_for_debug_bind.
1423
1424 2011-12-03  Anatoly Sokolov  <aesok@post.ru>
1425
1426         * config/arm/arm.h (LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Remove.
1427         * config/arm/arm-protos.h (aapcs_libcall_value): Remove.
1428         * config/arm/arm.c (TARGET_FUNCTION_VALUE_REGNO_P): Define.
1429         (arm_libcall_value_1, arm_function_value_regno_p): New function.
1430         (arm_function_value, arm_libcall_value): Use arm_libcall_value_1.
1431         (aapcs_libcall_value): Make static.
1432         (arm_libcall_value): Add static qualifier.
1433
1434 2011-12-02  Jakub Jelinek  <jakub@redhat.com>
1435
1436         PR target/51387
1437         * config/i386/sse.md (mul<mode>3 with VI1_AVX2 iterator): For
1438         V32QImode use { 0,2,..,14,32,34,..,46,16,18,..,30,48,50,..,62 }
1439         permutation instead of extract even permutation.
1440
1441 2011-12-02  Nathan Sidwell  <nathan@acm.org>
1442
1443         * gcov.c (struct arc_info): Add is_throw field.
1444         (struct (block_info): Add exceptional field, reduce flags size to
1445         account for it.
1446         (struct function_info): Add has_catch field.
1447         (struct line_info): Add unexceptional field.
1448         (process_file): Call find_exception_blocks if necessary.
1449         (read_graph_file): Adjust.  Note if an exceptional edge is seen.
1450         (find_exception_blocks): New.
1451         (add_line_counts): Set line's unexceptional flag if not exceptional.
1452         (output_branch_count): Note exceptional arcs, lines and blocks.
1453         * gcov-dump.c (tag_arcs): Decode arc flags.
1454         * doc/gcov.texi: Document '=====' lines.
1455
1456 2011-12-02  Anatoly Sokolov  <aesok@post.ru>
1457
1458         * config/ia64/ia64.h (PRINT_OPERAND, PRINT_OPERAND_ADDRESS,
1459         PRINT_OPERAND_PUNCT_VALID_P): Remove macros.
1460         * config/ia64/ia64-protos.h (ia64_print_operand,
1461         ia64_print_operand_address): Remove.
1462         * config/ia64/ia64.c (TARGET_PRINT_OPERAND,
1463         TARGET_PRINT_OPERAND_ADDRESS, TARGET_PRINT_OPERAND_PUNCT_VALID_P):
1464         Define.
1465         (ia64_print_operand_punct_valid_p): New function.
1466         (ia64_print_operand, ia64_print_operand_address): Make static.
1467
1468 2011-12-02  Michael Meissner  <meissner@the-meissners.org>
1469
1470         PR target/51390
1471         * config/rs6000/rs6000.c (def_builtin): Use the correct field to
1472         figure out the function's attributes.
1473         (struct builtin_description): Mark mask field as const since we no
1474         longer need to modify it for SPE and PAIRED builtins.
1475
1476 2011-12-02  Joseph Myers  <joseph@codesourcery.com>
1477
1478         Revert:
1479
1480         2008-09-18  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1481
1482         PR rtl-opt/37451
1483         * loop-doloop.c (doloop_modify): New argument zero_extend_p and
1484         zero extend count after the correction to it is done.
1485         (doloop_optimize): Update call to doloop_modify, don't zero extend
1486         count before call.
1487
1488         2008-11-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1489
1490         PR rtl-opt/37782
1491         * loop-doloop.c (doloop_modify): Add from_mode argument that says what
1492         mode count is in.
1493         (doloop_optimize): Update call to doloop_modify.
1494
1495 2011-12-02  Richard Guenther  <rguenther@suse.de>
1496
1497         PR lto/47259
1498         * ipa.c (varpool_externally_visible_p): Register variables
1499         are always externally visible.
1500
1501 2011-12-02  Sameera Deshpande  <sameera.deshpande@arm.com>
1502
1503         * gimple-pretty-print.c (dump_gimple_call): Dereference fn only if
1504           non-NULL.
1505
1506 2011-12-02  Martin Jambor  <mjambor@suse.cz>
1507
1508         PR tree-optimization/50622
1509         * tree-sra.c (load_assign_lhs_subreplacements): Force gimple operand
1510         if both lacc and racc are grp_partial_lhs.
1511
1512 2011-12-01  Kaz Kojima  <kkojima@gcc.gnu.org>
1513
1514         PR target/50814.
1515         * config/sh/sh.c (expand_ashiftrt): Handle TARGET_SH2A same as
1516         TARGET_SH3.
1517         (shl_sext_kind): Likewise.
1518         * config/sh/sh.h (SH_DYNAMIC_SHIFT_COST): Likewise.
1519         * config/sh/sh.md (ashlsi3_sh2a, ashrsi3_sh2a, lshrsi3_sh2a): Remove.
1520         (ashlsi3_std): Handle TARGET_SH2A same as TARGET_SH3.
1521         (ashlsi3): Likewise.
1522         (ashrsi3_d): Likewise.
1523         (lshrsi3_d): Likewise.
1524         (lshrsi3): Likewise.
1525
1526 2011-12-01  Diego Novillo  <dnovillo@google.com>
1527
1528         PR bootstrap/51346
1529         * ipa-inline.c (can_inline_edge_p): If the edge E has a statement,
1530         use the statement's inline indicator instead of E's.
1531         Remove consistency check.
1532
1533 2011-12-01  Diego Novillo  <dnovillo@google.com>
1534
1535         PR bootstrap/51346
1536         Revert
1537
1538         2011-11-29  Diego Novillo  <dnovillo@google.com>
1539
1540         * gimple.c (gimple_call_set_cannot_inline): Move from gimple.h.
1541         Update field call_stmt_cannot_inline_p from call
1542         graph edge, if needed.
1543         * gimple.h (gimple_call_set_cannot_inline): Move to gimple.c.
1544
1545 2011-12-01  Nathan Sidwell  <nathan@acm.org>
1546
1547         PR gcov-profile/51113
1548         * coverage.c (build_var): Keep coverage variables static.
1549
1550 2011-12-01  Jakub Jelinek  <jakub@redhat.com>
1551
1552         PR tree-optimization/51356
1553         * tree-vect-patterns.c (vect_recog_bool_pattern): Give up if
1554         vectype doesn't have VECTOR_MODE_P.
1555
1556         PR debug/50317
1557         * tree-ssa-dce.c (remove_dead_stmt): Add a debug stmt when removing
1558         as unnecessary a store to a variable with gimple reg type.
1559         * tree-ssa-live.c (remove_unused_locals): Clear TREE_ADDRESSABLE bit
1560         on local unreferenced variables.
1561         * cfgexpand.c (expand_gimple_basic_block): Don't emit DEBUG_INSNs
1562         for !target_for_debug_bind variables.
1563
1564 2011-12-01  Patrick Marlier  <patrick.marlier@gmail.com>
1565
1566         PR middle-end/51273
1567         * cgraph.h (cgraph_call_node_duplication_hooks): Declare.
1568         * cgraph.c (cgraph_call_node_duplication_hooks): Make global.
1569         * cgraphunit.c (cgraph_copy_node_for_versioning): Call it.
1570
1571 2011-12-01  Andrew Pinski  <apinski@cavium.com>
1572
1573         PR lto/51198
1574         * tree.c (free_lang_data_in_decl): Clear FIELD_DECL's
1575         DECL_INITIAL also.
1576
1577 2011-12-01  Jakub Jelinek  <jakub@redhat.com>
1578
1579         PR tree-optimization/51246
1580         * tree-predcom.c (replace_ref_with): Handle also clobber on the rhs.
1581
1582         PR rtl-optimization/51014
1583         * loop-unroll.c (apply_opt_in_copies): Ignore label DEBUG_INSNs
1584         both from bb and orig_bb.
1585
1586 2011-12-01  Joern Rennecke  <joern.rennecke@embecosm.com>
1587
1588         PR tree-optimization/50802
1589         * tree-vrp.c (simplify_conversion_using_ranges): Rewrite test
1590         considering what happens to ranges during sign changes and/or
1591         intermediate narrowing conversions.
1592
1593 2011-11-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1594
1595         PR middle-end/50283
1596         * config/pa/pa.md (in_branch_delay): Disallow frame related insns.
1597         (in_nullified_branch_delay): Likewise.
1598         (in_call_delay): Likewise.
1599
1600 2011-11-30  Richard Henderson  <rth@redhat.com>
1601
1602         * predict.c (expr_expected_value_1): Assume compare-and-swap builtin
1603         boolean return is true.
1604
1605 2011-11-30  Jakub Jelinek  <jakub@redhat.com>
1606
1607         PR rtl-optimization/51044
1608         * dse.c (emit_inc_dec_insn_before): Ensure new_insn is an instruction
1609         rather than just insn body.
1610
1611         PR target/50725
1612         * function.c (thread_prologue_and_epilogue_insns): If
1613         stack_realign_drap, add drap_reg to SET_UP_BY_PROLOGUE
1614         regset.
1615
1616         PR middle-end/51089
1617         * tree-eh.c (cleanup_empty_eh_merge_phis): Add check to
1618         avoid creating duplicate edges here.
1619         (cleanup_empty_eh_unsplit): And remove it in the caller.
1620
1621 2011-11-30  Andrew Pinski  <apinski@cavium.com>
1622
1623         PR c/51321
1624         * c-parser.c (c_parser_postfix_expression): Check groktypename results
1625         before looking at the main variant.
1626
1627 2011-11-30  Jakub Jelinek  <jakub@redhat.com>
1628
1629         PR rtl-optimization/48721
1630         * sched-deps.c (sched_analyze_insn): For SIBLING_CALL_P set
1631         reg_pending_barrier to TRUE_BARRIER.
1632
1633         PR rtl-optimization/48721
1634         * sched-ebb.c (begin_move_insn): Insert empty unreachable
1635         block after BARRIER if insn is followed by it.
1636
1637 2011-11-30  Richard Henderson  <rth@redhat.com>
1638
1639         * config/sparc/sparc-opts.h (enum sparc_memory_model_type): New.
1640         * config/sparc/sparc.opt (mmemory-model=): New option.
1641         * doc/invoke.texi (Sparc Options): Document it.
1642         * config/sparc/sparc.c (sparc_option_override): Provide default
1643         for sparc_memory_model.
1644         (sparc_emit_membar_for_model): Omit barrier combinations that are
1645         implied by the memory model.
1646
1647 2011-11-30  Richard Henderson  <rth@redhat.com>
1648
1649         * config/sparc/sync.md (I124MODE): New mode iterator.
1650         (memory_barrier): Remove.
1651         (atomic_exchangesi): New.
1652         (swapsi): Rename from *swapsi.
1653         (atomic_test_and_set<I124MODE>): New.
1654         (ldstubqi): Rename from *ldstubqi, merge with expander.
1655         (ldstub<I24MODE>): Rename from *ldstub<I24MODE>, merge with expander.
1656         (sync_lock_test_and_setsi): Remove.
1657         (sync_lock_test_and_set<I12MODE>): Remove.
1658
1659 2011-11-30  Richard Henderson  <rth@redhat.com>
1660
1661         * config/sparc/constraints.md ("w"): New.
1662         * config/sparc/predicates.md (mem_noofs_operand): New.
1663         * config/sparc/sparc.c (sparc_expand_compare_and_swap_12): Make static.
1664         Generate the boolean result of the atomic_compare_exchange.
1665         (sparc_expand_compare_and_swap): New.
1666         * config/sparc/sync.md (atomic_compare_and_swap<I>): New.
1667         (atomic_compare_and_swap<I48MODE>_1): Rename from
1668         *sync_compare_and_swap<I48MODE>, use mem_noofs_operand.
1669         (*atomic_compare_and_swapdi_v8plus): Rename from
1670         *sync_compare_and_swapdi_v8plus, use mem_noofs_operand.
1671         (sync_compare_and_swap<I12MODE>): Remove.
1672         (sync_compare_and_swap<I48MODE>): Remove.
1673
1674 2011-11-30  Richard Henderson  <rth@redhat.com>
1675
1676         * config/sparc/predicates.md (register_or_v9_zero_operand): New.
1677         * config/sparc/sparc.md (UNSPEC_ATOMIC): New.
1678         * config/sparc/sync.md (atomic_load<I>): New.
1679         (atomic_loaddi_1, atomic_store<I>, atomic_storedi_1): New.
1680
1681 2011-11-30  Richard Henderson  <rth@redhat.com>
1682
1683         * config/sparc/predicates.md (zero_or_v7_operand): New.
1684         * config/sparc/sparc.c (sparc_emit_membar_for_model): New.
1685         * config/sparc/sparc-protos.h: Update.
1686         * config/sparc/sync.md (mem_thread_fence): New.
1687         (memory_barrier): Use sparc_emit_membar_for_model.
1688         (membar, *membar_empty, *membar_storestore, *membar_storeload): New.
1689         (*membar_v8): Accept and ignore the membar mask.
1690         (*membar): Accept and print the membar mask.
1691
1692 2011-11-30  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
1693
1694         * config/arm/arm.c (arm_issue_rate): Cortex-A15 can triple issue.
1695         * config/arm/arm.md (mul64): New attribute.
1696         (generic_sched): Cortex-A15 is not scheduled generically.
1697         (cortex-a15.md): Include.
1698         * config/arm/cortex-a15.md: New machine description.
1699         * config/arm/t-arm (MD_INCLUDES): Add cortex-a15.md.
1700
1701 2011-11-30  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
1702
1703         * config/arm/t-arm (MD_INCLUDES): Ensure all md files are listed.
1704
1705 2011-11-30  Iain Sandoe  <iains@gcc.gnu.org>
1706
1707         * doc/tm.texi.in (NEXT_OBJC_RUNTIME): Update macro description.
1708         * doc/tm.texi: Regenerate.
1709         * flags.h (flag_next_runtime): Remove references.
1710         * toplev.c: Likewise.
1711         * defaults.h (NEXT_OBJC_RUNTIME): Provide default.
1712         * gccspec.c (lang_specific_driver): Adjust use of NEXT_OBJC_RUNTIME.
1713         * config/darwin.c (darwin_override_options): Provide default
1714         Objective-C abi settings and target conflict checks.
1715         * config/darwin.h (SUBTARGET_C_COMMON_OVERRIDE_OPTIONS): Remove unused
1716         code. Adjust indenting.
1717
1718 2011-11-29  Joseph Myers  <joseph@codesourcery.com>
1719
1720         * config/sh/sh.h (enum reg_class, REG_CLASS_NAMES)
1721         (REG_CLASS_CONTENTS): Add NON_SP_REGS.
1722         (REGCLASS_HAS_GENERAL_REG): Handle NON_SP_REGS.
1723         * config/sh/constraints.md (u): New constraint.
1724
1725 2011-11-29  Oleg Endo  <oleg.endo@t-online.de>
1726
1727         PR target/51337
1728         * config/sh/sh.c (sh_secondary_reload): Add case when FPUL
1729         register is being loaded from a pseudo in memory.
1730
1731 2011-11-29  DJ Delorie  <dj@redhat.com>
1732
1733         * config.gcc (rl78-*-elf): New case.
1734         * doc/extend.texi: Add RL78 documentation.
1735         * doc/invoke.texi: Likewise.
1736         * doc/md.texi: Likewise.
1737         * doc/contrib.texi: Add RL78.
1738         * doc/install.texi: Add rl78-*-elf.
1739         * config/rl78: New directory for the Renesas RL78.
1740
1741 2011-11-29  Jakub Jelinek  <jakub@redhat.com>
1742
1743         PR tree-optimization/51247
1744         * tree-vrp.c (extract_range_from_assert): For signed 1-bit precision
1745         types instead of adding 1 subtract -1 and instead of subtracting 1
1746         add -1 to avoid overflows.
1747
1748 2011-11-29  Andrew MacLeod  <amacleod@redhat.com>
1749
1750         PR target/50123
1751         * optabs.c (maybe_optimize_fetch_op): New.  Look for more optimal
1752         instructions for a FECTH_OP or OP_FECTH sequence.
1753         (expand_atomic_fetch_op): Call maybe_optimize_fetch_op.
1754
1755 2011-11-29  Uros Bizjak  <ubizjak@gmail.com>
1756
1757         * config/i386/sync.md (UNSPEC_LDA, UNSPEC_STA): New unspecs.
1758         (movdi_via_fpu): Remove.
1759         (loaddi_via_fpu): New insn pattern.
1760         (storedi_via_fpu): Ditto.
1761         (atomic_loaddi_fpu): Use loaddi_via_fpu and storedi_via_fpu.
1762         (atomic_storedi_fpu): Ditto.
1763         * reg-stack.c (get_true_reg): Handle UNSPEC_LDA.
1764         (subst_stack_regs_pat): Handle UNSPEC_STA.
1765
1766 2011-11-29  Uros Bizjak  <ubizjak@gmail.com>
1767
1768         * config/i386/i386.md (*floathi<mode>2_i387_with_temp): Do not
1769         allocate scratch memory for alternative 0.
1770
1771 2011-11-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
1772
1773         * config/rs6000/rs6000-builtins.def: Completely rewrite builtin
1774         handling to centralize more of the builtins in this file.  Change
1775         some builtin enumerations to be more consistant.  Use a new mask
1776         to hold the current builtins, including SPE and PAIRED builtins
1777         which no longer are set via target_flags masks.  Add
1778         -mdebug=builtin debug support.  For power machines, define all
1779         Altivec and VSX buitins when the compiler starts, but don't allow
1780         the use of a builtin unless the appropriate switch is used, or
1781         #pragma GCC target is used to change the options.  If the user
1782         uses #pragma GCC target, update the appropriate hardware macros.
1783         * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Ditto.
1784         * config/rs6000/rs6000.opt (rs6000_builtin_mask): Ditto.
1785         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Ditto.
1786         (rs6000_define_or_undefine_macro): Ditto.
1787         (rs6000_target_modify_macros): Ditto.
1788         (rs6000_cpu_cpp_builtins): Ditto.
1789         (altivec_overloaded_builtins): Ditto.
1790         (altivec_build_resolved_builtin): Ditto.
1791         * config/rs6000/rs6000.c (rs6000_target_modify_macros_ptr): Ditto.
1792         (rs6000_builtin_info): Ditto.
1793         (def_builtin): Ditto.
1794         (enable_mask_for_builtins): Ditto.
1795         (DEBUG_FMT_X): Ditto.
1796         (rs6000_debug_reg_global): Ditto.
1797         (rs6000_builtin_mask_calculate): Ditto.
1798         (rs6000_option_override_internal): Ditto.
1799         (rs6000_builtin_conversion): Ditto.
1800         (rs6000_builtin_vectorized_function): Ditto.
1801         (bdesc_3arg): Ditto.
1802         (bdesc_dst): Ditto.
1803         (bdesc_2arg): Ditto.
1804         (builtin_description_predicates): Ditto.
1805         (bdesc_altivec_preds): Ditto.
1806         (bdesc_spe_predicates): Ditto.
1807         (bdesc_spe_evsel): Ditto.
1808         (bdesc_paired_preds): Ditto.
1809         (bdesc_abs): Ditto.
1810         (bdesc_1arg): Ditto.
1811         (rs6000_overloaded_builtin_p): Ditto.
1812         (rs6000_expand_unop_builtin): Ditto.
1813         (bdesc_2arg_spe): Ditto.
1814         (spe_expand_builtin): Ditto.
1815         (rs6000_invalid_builtin): Ditto.
1816         (rs6000_expand_builtin): Ditto.
1817         (rs6000_init_builtins): Ditto.
1818         (spe_init_builtins): Ditto.
1819         (paired_init_builtins): Ditto.
1820         (altivec_init_builtins): Ditto.
1821         (builtin_function_type): Ditto.
1822         (rs6000_common_init_builtins): Ditto.
1823         (rs6000_builtin_reciprocal): Ditto.
1824         (rs6000_builtin_mask_names): Ditto.
1825         (rs6000_pragma_target_parse): Ditto.
1826         (rs6000_function_specific_print): Ditto.
1827         * config/rs6000/rs6000.h (MASK_DEBUG_BUILTIN): Ditto.
1828         (MASK_DEBUG_ALL): Ditto.
1829         (TARGET_DEBUG_BUILTIN): Ditto.
1830         (TARGET_EXTRA_BUILTINS): Ditto.
1831         (REGISTER_TARGET_PRAGMAS): Ditto.
1832         (enum rs6000_btc): Ditto.
1833         (RS6000_BTC_*): Ditto.
1834         (RS6000_BTM_*): Ditto.
1835         (enum rs6000_builtins): Ditto.
1836         * config/rs6000/rs6000-protos.h (rs6000_overloaded_builtin_p): Ditto.
1837         (rs6000_target_modify_macros): Ditto.
1838         (rs6000_target_modify_macros_ptr): Ditto.
1839
1840         * config/rs6000/vector.md (unsfloat<VEC_int><mode>2): Use the
1841         standard name for converting vector unsigned values to floating
1842         point.  Delete the TARGET_VECTORIZE_BUILTIN_CONVERSION hook, which
1843         is handled by machine independent code.
1844         * config/rs6000/rs6000.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Ditto.
1845         (rs6000_builtin_conversion): Ditto.
1846
1847 2011-11-29  Dodji Seketeli  <dodji@redhat.com>
1848
1849         * tree-diagnostic (struct loc_t): Rename into struct loc_map_pair.
1850         (maybe_unwind_expanded_macro_loc): Adjust.
1851
1852 2011-11-29  David Edelsohn  <dje.gcc@gmail.com>
1853             Aldy Hernandez  <aldyh@redhat.com>
1854
1855         * trans-mem.c (ipa_tm_create_version_alias): Mangle new_decl
1856         if DECL_ONE_ONLY.
1857         (ipa_tm_create_version): Same.
1858
1859 2011-11-29  Bernd Schmidt  <bernds@codesourcery.com>
1860
1861         * haifa-sched.c (recompute_todo_spec): Simplify and correct the
1862         code checking for a clobber of a condition register when deciding
1863         whether to predicate.
1864
1865 2011-11-29  Diego Novillo  <dnovillo@google.com>
1866
1867         * gimple.c (gimple_call_set_cannot_inline): Move from gimple.h.
1868         Update field call_stmt_cannot_inline_p from call graph edge, if needed.
1869         * gimple.h (gimple_call_set_cannot_inline): Move to gimple.c.
1870
1871 2011-11-29  Sameera Deshpande  <sameera.deshpande@arm.com>
1872
1873         * config/arm/arm.md (arm_movdi): Update NEG_POOL_RANGE.
1874         (movdf_soft_insn): Likewise.
1875         * config/arm/fpa.md (thumb2_movdf_fpa): Likewise.
1876         * config/arm/neon.md (neon_mov<mode>): Likewise.
1877         * config/arm/vfp.md (movdi_vfp): Likewise.
1878         (movdi_vfp_cortexa8): Likewise.
1879         (movdf_vfp): Likewise.
1880
1881 2011-11-29  Jakub Jelinek  <jakub@redhat.com>
1882
1883         PR middle-end/50074
1884         * expr.c (expand_expr_addr_expr_1): Don't call force_operand for
1885         EXPAND_SUM modifier.
1886
1887 2011-11-29  Ira Rosen  <ira.rosen@linaro.org>
1888
1889         PR tree-optimization/51301
1890         * tree-vect-patterns.c (vect_recog_over_widening_pattern): Check that
1891         the last statement doesn't convert to a bigger type than the original
1892         type of the computation.
1893
1894 2011-11-28  Richard Henderson  <rth@redhat.com>
1895
1896         * config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap):
1897         Handle overlap between retval and oldval.  Always compute boolval
1898         from CR0 EQ value.
1899
1900 2011-11-28  Jakub Jelinek  <jakub@redhat.com>
1901
1902         PR debug/50317
1903         * tree-ssa.c (execute_update_addresses_taken): Remove
1904         var ={v} {CLOBBER} stmts instead of rewriting them into
1905         var_N ={v} {CLOBBER}.
1906
1907         PR middle-end/50907
1908         * function.c (convert_jumps_to_returns): When redirecting an edge
1909         succ to EXIT_BLOCK_PTR, clear EDGE_CROSSING flag.
1910
1911         PR tree-optimization/50078
1912         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Copy over
1913         TREE_THIS_VOLATILE also from the old to new lhs resp. rhs.
1914
1915         PR tree-optimization/50682
1916         * tree-eh.c (maybe_remove_unreachable_handlers): New function.
1917         * tree-flow.h (maybe_remove_unreachable_handlers): New prototype.
1918         * tree-optimize.c (execute_cleanup_cfg_post_optimizing): Call it.
1919
1920 2011-11-28  Georg-Johann Lay  <avr@gjlay.de>
1921
1922         * doc/extend.texi (AVR Built-in Functions): Add documentation for
1923         __builtin_avr_map8 and __builtin_avr_map16.
1924
1925         * config/avr/avr.md: Document new %t and %T asm output codes.
1926         (define_c_enum "unspec"): Add UNSPEC_MAP_BITS.
1927         (adjust_len): Add map_bits.
1928         (map_bitsqi, map_bitshi): New insns.
1929         * config/avr/avr-protos.h (avr_out_map_bits): New.
1930         * config/avr/avr-protos.c (print_operand): Implement %t and %T.
1931         (adjust_insn_length): Handle ADJUST_LEN_MAP_BITS.
1932         (avr_double_int_push_digit): New function.
1933         (avr_map, avr_revert_map, avr_swap_map, avr_id_map): New functions.
1934         (avr_sig_map, avr_map_hamming_byte): New functions.
1935         (avr_out_swap_bits, avr_out_revert_bits, avr_move_bits,
1936         avr_out_map_bits): New functions.
1937         (enum avr_builtin_id): Add AVR_BUILTIN_MAP8, AVR_BUILTIN_MAP16.
1938         (avr_init_builtins): Populate __builtin_avr_map8, __builtin_avr_map16.
1939         (bdesc_2arg): Add __builtin_avr_map8, __builtin_avr_map16 ...
1940         (avr_expand_builtin): ...and expand them.
1941         * config/avr/avr-c.c (avr_cpu_cpp_builtins): New built-in defines:
1942         __BUILTIN_AVR_MAP8, __BUILTIN_AVR_MAP16.
1943
1944 2011-11-27  Richard Sandiford  <rdsandiford@googlemail.com>
1945
1946         PR target/51278
1947         * config/mips/mips.c (mips_rtx_costs): Handle baddu.
1948
1949 2011-11-27  Richard Sandiford  <rdsandiford@googlemail.com>
1950
1951         * config/mips/mips.c (mips16_unextended_reference_p): Test for BLKmode.
1952
1953 2011-11-27  Richard Sandiford  <rdsandiford@googlemail.com>
1954
1955         * config/mips/mips-protos.h (mips_emit_binary): Declare.
1956         * config/mips/mips.c (mips_emit_binary): Make global.
1957         (mips_set_mips16_mode): Turn off -mfix-r4000 in MIPS16 mode.
1958         (mips_conditional_register_usage): Don't treat LO and HI as
1959         register operands in MIPS16 mode.
1960         (mips_mulsidi3_gen_fn): Use {u,}mulsidi3_{32,64}bit_mips16
1961         for MIPS16 code.
1962         * config/mips/predicates.md (muldiv_target_operand): New predicate.
1963         (move_operand): Allow hilo_operand.
1964         * config/mips/mips.md (mul<mode>3): Explicitly specify LO as the
1965         target of MIPS16 multiplies, then move it into the target register.
1966         (mul<mode>3_internal, *macc2, *msac2): Use muldiv_target_operand.
1967         (<u>mulsidi3_32bit_mips16): New expander.
1968         (<u>mulsidi3_32bit): Use muldiv_target_operand.
1969         (<u>mulsidi3_32bit_r4000): Disable for ISA_HAS_DSP.
1970         (<u>mulsidi3_64bit): Require !TARGET_MIPS16.  Split into
1971         <u>mulsidi3_64bit_split.
1972         (<u>mulsidi3_64bit_mips16): New expander.
1973         (<u>mulsidi3_64bit_split): Likewise, using expansions from
1974         two previous define_splits.
1975         (<u>mulsidi3_64bit_hilo, *muls<u>_di, <u>msubsidi4): Use
1976         muldiv_target_operand.
1977         (<su>mulsi3_highpart): Use <su>mulsi3_highpart_split for MIPS16 code.
1978         (<su>mulsi3_highpart_internal): Require !TARGET_MIPS16.
1979         Split into <su>mulsi3_highpart_split.
1980         (<su>mulsi3_highpart_split): New expander.
1981         (<su>muldi3_highpart): Turn into a define_expand.
1982         Use <su>muldi3_highpart_split for MIPS16 code.
1983         (<su>muldi3_highpart_internal): Renamed from <su>muldi3_highpart.
1984         Require !TARGET_MIPS16.  Split into <su>muldi3_highpart_split.
1985         (<su>muldi3_highpart_split): New expander.
1986         (<u>mulditi3): Explicitly specify LO as the target of MIPS16
1987         multiplies, then move it into the target register.
1988         (<u>mulditi3_internal, <u>maddsidi4): Use muldiv_target_operand.
1989         (divmod<mode>4, udivmod<mode>4): Turn into define_expands.
1990         Use <u>divmod<mode>4_split for MIPS16 code, then explicitly
1991         move LO into operand 0.
1992         (divmod<mode>4_internal, udivmod<mode>4_internal): Renamed
1993         from <u>divmod<mode>4.  Use muldiv_target_operand.
1994         Require !TARGET_MIPS16.  Split into <u>divmod<mode>4_split.
1995         (<u>divmod<mode>4_split): New expander.
1996         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): Use muldiv_target_operand.
1997         (mfhi<GPR:mode>_<HILO:mode>): Use hilo_operand.
1998
1999 2011-11-27  Richard Sandiford  <rdsandiford@googlemail.com>
2000
2001         * hard-reg-set.h (target_hard_regs): Add x_accessible_reg_set
2002         and x_operand_reg_set.
2003         (accessible_reg_set, operand_reg_set): New macros.
2004         * reginfo.c (init_reg_sets): Initialize accessible_reg_set and
2005         operand_reg_set.
2006         (saved_accessible_reg_set, saved_operand_reg_set): New variables.
2007         (save_register_info): Save them.
2008         (restore_register_info): Restore them.
2009         (init_reg_sets_1): Limit operand_reg_set to accessible_reg_set.
2010         Remove NO_REGS registers from operand_reg_set.  Treat members
2011         of operand_reg_set as fixed.
2012         * recog.c (general_operand): Check operand_reg_set rather than NO_REGS.
2013         (register_operand, nonmemory_operand): Likewise.
2014         * varasm.c (make_decl_rtl): Always use DECL_MODE as the mode of
2015         register variables.  Check accessible_reg_set and operand_reg_set.
2016         * config/mips/mips.c (mips_conditional_register_usage): Remove
2017         inaccessible register from accessible_reg_set, rather than just
2018         making them fixed.
2019
2020 2011-11-27  Gerald Pfeifer  <gerald@pfeifer.com>
2021
2022         * config/pa/pa-linux.h (TARGET_GAS): Remove comment.
2023
2024 2011-11-26  Richard Henderson  <rth@redhat.com>
2025
2026         * config/arm/arm.c (arm_init_libfuncs): Call init_sync_libfuncs
2027         for Linux.
2028
2029 2011-11-26  Richard Henderson  <rth@redhat.com>
2030
2031         * optabs.c (expand_atomic_fetch_op): Always return result.
2032
2033         * optabs.c (init_sync_libfuncs_1): Include max in iteration.
2034
2035         * omp-low.c (expand_omp_atomic): Assume anything aligned to
2036         BIGGEST_ALIGNMENT is aligned.
2037
2038 2011-11-26  Richard Henderson  <rth@redhat.com>
2039
2040         * config/m68k/m68k.md (UNSPECV_CAS_1, UNSPECV_CAS_2): New.
2041         (UNSPECV_TAS_1, UNSPECV_TAS_2): New.
2042         (I): New mode iterator.
2043         (xz): New mode attribute.
2044         * config/m68k/sync.md: New file.
2045
2046         * config/m68k/linux.h (TARGET_INIT_LIBFUNCS): New.
2047         * config/m68k/m68k.c (m68k_init_sync_libfuncs): New.
2048
2049 2011-11-26  Nathan Sidwell  <nathan@acm.org>
2050
2051         PR gcov-profile/51297
2052         * gcov.c (main): Allocate initial names and sources arrays.
2053         (find_source): Don't check for null name or source arrays here.
2054
2055 2011-11-26  Jakub Jelinek  <jakub@redhat.com>
2056
2057         PR rtl-optimization/49912
2058         * cfgrtl.c (rtl_verify_flow_info_1): Ignore also EDGE_PRESERVE bit
2059         when counting n_branch.
2060
2061 2011-11-26  Uros Bizjak  <ubizjak@gmail.com>
2062
2063         * config/i386/sync.md (movdi_via_fpu): Add %Z insn suffixes.
2064
2065 2011-11-26  Joern Rennecke  <joern.rennecke@embecosm.com>
2066
2067         PR middle-end/50074
2068         * calls.c (mem_overlaps_already_clobbered_arg_p):
2069         Return false if no outgoing arguments have been stored so far.
2070
2071 2011-11-25  Georg-Johann Lay  <avr@gjlay.de>
2072
2073         * config/avr/avr.c (print_operand): Support code = 'i' for CONST_INT.
2074
2075 2011-11-24  Andrew MacLeod  <amacleod@redhat.com>
2076
2077         PR other/51011
2078         * tree.h (is_builtin_name): No longer external.
2079         * builtins.c (is_builtin_name): Make static.
2080         * varasm.c (incorporeal_function_p): __sync and __atomic external calls
2081         are not incorporeal and may need asm label processing.
2082
2083 2011-11-25  Georg-Johann Lay  <avr@gjlay.de>
2084
2085         PR target/50566
2086         * config/avr/avr-protos.h (avr_log_t): Add field .builtin.
2087         * config/avr/avr-log.c (avr_log_set_avr_log): Initialize it.
2088         Don't bypass TARGET_ALL_DEBUG.  Print self-info with ?.
2089         (avr_log_vadump): Support %D and %X to print double_int.
2090         (avr_double_int_pop_digit): New static function.
2091         (avr_dump_double_int_hex): New static function.
2092
2093 2011-11-24  Enkovich Ilya  <ilya.enkovich@intel.com>
2094
2095         PR target/51287
2096         * config/i386/i386.c (distance_non_agu_define_in_bb): Fix insn
2097         attr check.
2098
2099 2011-11-24  Andrew MacLeod  <amacleod@redhat.com>
2100
2101         * optab.c (maybe_emit_atomic_exchange): New.  Try to emit an
2102         atomic_exchange pattern.
2103         (maybe_emit_sync_lock_test_and_set): New.  Try to emit an exchange
2104         using __sync_lock_test_and_set.
2105         (maybe_emit_compare_and_swap_exchange_loop): New. Try to emit an
2106         exchange using a compare_and_swap loop.
2107         (expand_sync_lock_test_and_set): New.  Expand sync_lock_test_and_set.
2108         (expand_atomic_test_and_set): New.  Expand test_and_set operation.
2109         (expand_atomic_exchange): Use new maybe_emit_* functions.
2110         (expand_atomic_store): Use new maybe_emit_* functions.
2111         * builtins.c (expand_builtin_sync_lock_test_and_set): Call
2112         expand_sync_lock_test_and_set routine.
2113         (expand_builtin_atomic_exchange): Remove parameter from call.
2114         (expand_builtin_atomic_clear): Use atomic_clear pattern if present.
2115         (expand_builtin_atomic_test_and_set): Add target and simply call
2116         expand_atomic_test_and_set.
2117         (expand_builtin): Add target to expand_builtin_atomic_test_and_set.
2118         * expr.h (expand_atomic_exchange): Add parameter.
2119         (expand_sync_lock_test_and_set): New prototype.
2120         (expand_atomic_test_and_set, expand_atomic_clear): New prototypes.
2121
2122 2011-11-24  H.J. Lu  <hongjiu.lu@intel.com>
2123
2124         PR target/51134
2125         * config/i386/i386.h (processor_costs): Revert revision 181357.
2126         * config/i386/i386.c (cost models): Likewise.
2127         (core_cost): Likewise.
2128         (promote_duplicated_reg): Likewise.
2129         (promote_duplicated_reg_to_size): Likewise.
2130         (processor_target): Likewise.
2131         (expand_set_or_movmem_via_loop_with_iter): Likewise.
2132         (expand_set_or_movmem_via_loop): Likewise.
2133         (emit_strset): Likewise.
2134         (expand_movmem_epilogue): Likewise.
2135         (expand_setmem_epilogue): Likewise.
2136         (expand_movmem_prologue): Likewise.
2137         (expand_setmem_prologue): Likewise.
2138         (expand_constant_movmem_prologue): Likewise.
2139         (expand_constant_setmem_prologue): Likewise.
2140         (decide_alg): Likewise.
2141         (decide_alignment): Likewise.
2142         (ix86_expand_movmem): Likewise.
2143         (ix86_expand_setmem): Likewise.
2144         (ix86_slow_unaligned_access): Likewise.
2145         * config/i386/i386.md (strset): Likewise.
2146         * config/i386/sse.md (vec_dupv4si): Likewise.
2147         (vec_dupv2di): Likewise.
2148
2149 2011-11-24  Georg-Johann Lay  <avr@gjlay.de>
2150
2151         * config/avr/avr.md (*rotlhi2.15): Set length to 4.
2152
2153 2011-11-24  Razya Ladelsky  <razya@il.ibm.com>
2154
2155         * tree-data-ref.c (initialize_data_dependence_relation): Update
2156         comment for the self dependence case.
2157         (compute_self_dependence): Remove.
2158         * tree-vect-data-refs.c (vect_analyze_data_refs): Remove call to
2159         compute_self_dependenc.
2160
2161 2011-11-24  Alan Modra  <amodra@gmail.com>
2162
2163         * c-decl.c (warn_if_shadowing): Don't warn if shadowed
2164         identifier is from system header.
2165
2166 2011-11-23  Jakub Jelinek  <jakub@redhat.com>
2167
2168         PR target/51261
2169         * config/i386/i386.c (decide_alg): Initialize *dynamic_check
2170         even if !optimize.
2171
2172 2011-11-23  Vladimir Makarov  <vmakarov@redhat.com>
2173
2174         PR rtl-optimization/48455
2175         * doc/invoke.texi (-fira-region): Document default values.
2176
2177         * flags-types.h (enum ira_region): Add new value
2178         IRA_REGION_AUTODETECT.
2179
2180         * common.opt (fira-region): Set up initial value to
2181         IRA_REGION_AUTODETECT.
2182
2183         * toplev.c (process_options): Set up flag_ira_region depending on
2184         -O options.
2185
2186         * ira.c (ira.c): Remove optimize guard for ira_build.
2187
2188 2011-11-23  Chung-Lin Tang  <cltang@codesourcery.com>
2189
2190         PR rtl-optimization/50496
2191         * jump.c (redirect_jump): Assert fail on nlabel == NULL_RTX
2192         only after epilogue is created. Add comments.
2193
2194 2011-11-22  Richard Henderson  <rth@redhat.com>
2195
2196         * config/ia64/ia64.c (ia64_expand_atomic_op): Add model parameter.
2197         Generate the barrier required for the memory model.
2198         (rtx_needs_barrier): Handle UNSPEC_FETCHADD_REL, UNSPEC_CMPXCHG_REL.
2199         * config/ia64/ia64-protos.h: Update.
2200         * config/ia64/ia64.md (UNSPEC_FETCHADD_REL): New.
2201         (UNSPEC_CMPXCHG_REL): New.
2202         * config/ia64/sync.md (mem_thread_fence): New.
2203         (atomic_load<IMODE>, atomic_store<IMODE>): New.
2204         (atomic_compare_and_swap<IMODE>): New.
2205         (cmpxchg_acq_<I124MODE>, cmpxchg_acq_di): New.
2206         (atomic_exchange<IMODE>): New.
2207         (xchg_acq_<IMODE>): Rename from sync_lock_test_and_set<IMODE>.
2208         (atomic_<FETCHOP><IMODE>, atomic_nand<IMODE>): New.
2209         (atomic_fetch_<FETCHOP><IMODE>, atomic_fetch_nand<IMODE>): New.
2210         (atomic_<FETCHOP>_fetch<IMODE>, atomic_nand_fetch<IMODE>): New.
2211         (fetchadd_rel_<I48MODE>): New.
2212         (sync_<FETCHOP><IMODE>, sync_nand<IMODE>): Remove.
2213         (sync_old_<FETCHOP><IMODE>, sync_old_nand<IMODE>): Remove.
2214         (sync_new_<FETCHOP><IMODE>, sync_new_nand<IMODE>): Remove.
2215         (sync_compare_and_swap<IMODE>): Remove.
2216         (sync_lock_release<IMODE>): Remove.
2217
2218         * config/ia64/ia64.md: Use define_c_enum for UNSPEC_*
2219         and UNSPECV_* constants.
2220
2221 2011-11-22  Tom de Vries  <tom@codesourcery.com>
2222
2223         PR rtl-optimization/50764
2224         * sched-deps.c (sched_analyze_insn): Make sure frame-related insns are
2225         not moved past preceding jump.
2226
2227 2011-11-22  Jeff Law  <law@redhat.com>
2228
2229         * doc/contrib.texi: Add entry for David Binderman.
2230
2231 2011-11-22  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2232
2233         * postreload.c (reload_combine): Mark reg_state as invalid at
2234         volatile insns if there has been a use already.
2235
2236 2011-11-21  Aldy Hernandez  <aldyh@redhat.com>
2237
2238         * opts.c (finish_options): Do not fail for -fgnu-tm.
2239         * gimple-streamer-out.c (output_gimple_stmt): Handle
2240         GIMPLE_TRANSACTION.
2241         * gimple-streamer-in.c (input_gimple_stmt): Same.
2242         * lto-cgraph.c (input_overwrite_node): Read tm_clone bit.
2243         (lto_output_node): Write tm_clone bit.
2244
2245 2011-11-22  Ian Lance Taylor  <iant@google.com>
2246
2247         * doc/install.texi (Configuration): Correct doc of
2248         --enable-build-poststage1-with-cxx: it is not experimental.
2249
2250 2011-11-22  Jakub Jelinek  <jakub@redhat.com>
2251
2252         PR tree-optimization/51074
2253         * fold-const.c (fold_binary_loc): Fix up VEC_INTERLEAVE_*_EXPR
2254         handling for BYTES_BIG_ENDIAN.
2255         * optabs.c (can_vec_perm_for_code_p): Likewise.
2256
2257 2011-11-22  Michael Matz  <matz@suse.de>
2258
2259         PR other/51125
2260         * trans-mem.c (expand_block_tm): Ignore clobbers.
2261
2262 2011-11-22  Iain Sandoe  <iains@gcc.gnu.org>
2263
2264         *  config/darwin.h (ENDFILE_SPEC): New.
2265         (DARWIN_CRT1_SPEC): Add crttms.o.
2266         (STARTFILE_SPEC): Likewise for dynamic libs and bundles.
2267         * config/i386.h (ENDFILE_SPEC): Amend to include crttme.o.
2268
2269 2011-11-22  Michael Matz  <matz@suse.de>
2270
2271         PR c++/51264
2272         * tree.c (iterative_hash_expr): Remove break after return.
2273
2274 2011-11-22  Iain Sandoe  <iains@gcc.gnu.org>
2275
2276         * target.def (tm_clone_table_section): New hook.
2277         * doc/tm.texi.in (TARGET_ASM_TM_CLONE_TABLE_SECTION): Define.
2278         * doc/tm.texi: Regenerate.
2279         * varasm.c (dump_tm_clone_pairs): Use target tm_clone_table_section.
2280         * output.h (default_clone_table_section): New prototype.
2281         * config/darwin.h (TARGET_ASM_TM_CLONE_TABLE_SECTION): New.
2282         * config/darwin-protos.h (darwin_tm_clone_table_section): New prototype.
2283         * config/darwin.c (darwin_tm_clone_table_section): New.
2284
2285 2011-11-21  Torvald Riegel  <triegel@redhat.com>
2286
2287         * trans-mem.c (diagnose_tm_1): Print an expression instead of a
2288         declaration in error messages for indirect calls.
2289
2290 2011-11-21  David S. Miller  <davem@davemloft.net>
2291
2292         * config/sparc/sparc.c (sparc_regmode_natural_size): New function
2293         implementing REGMODE_NATURAL_SIZE taking into consideration vector
2294         modes.
2295         (sparc_modes_tieable_p): Similarly for MODES_TIEABLE_P.
2296         * config/sparc/sparc-protos.h (sparc_regmode_natural_size,
2297         sparc_modes_tieable_p): Declare.
2298         * gcc/config/sparc/sparc.h (REGMODE_NATURAL_SIZE,
2299         MODES_TIEABLE_P): Use new helper functions.
2300
2301         Revert
2302         2011-11-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2303
2304         PR middle-end/50325
2305         * expmed.c (store_bit_field_1): Use extract_bit_field on big
2306         endian targets if the source cannot be exactly covered by word
2307         mode chunks.
2308
2309 2011-11-21  Jakub Jelinek  <jakub@redhat.com>
2310
2311         PR debug/50827
2312         * var-tracking.c (loc_cmp): For ENTRY_VALUEs use ENTRY_VALUE_EXP
2313         macro instead of XEXP.
2314
2315 2011-11-21  Andreas Tobler  <andreast@fgznet.ch>
2316
2317         * configure: Regenerate.
2318
2319 2011-11-21  Georg-Johann Lay  <avr@gjlay.de>
2320
2321         * config/avr/avr.c (output_reload_in_const): Loading a byte with 0
2322         must not affect cc0.
2323         * config/avr/avr.md (*movhi, *movpsi, *movsi, *movsf): Zero to any
2324         register does not change cc0. Same for any constant to ld-register.
2325
2326 2011-11-21  Uros Bizjak  <ubizjak@gmail.com>
2327
2328         * config/i386/mmx.md (unspec) <UNSPEC_MOVNTQ, UNSPEC_PFRCP,
2329         UNSPEC_PFRCPIT1, UNSPEC_PFRCPIT2, UNSPEC_PFRSQRT, UNSPEC_PFRSQIT1>:
2330         Move from config/i386/i386.md
2331         (unspecv) <UNSPECV_EMMS, UNSPECV_FEMMS>: Ditto.
2332         * config/i386/sse.md (unspec) <UNSPEC_MOVNT,UNSPEC_MOVU, UNSPEC_LDDQU,
2333         UNSPEC_PSHUFB, UNSPEC_PSIGN, UNSPEC_PALIGNR, UNSPEC_EXTRQI,
2334         UNSPEC_EXTRQ, UNSPEC_INSERTQI, UNSPEC_INSERTQ, UNSPEC_BLENDV,
2335         UNSPEC_INSERTPS, UNSPEC_DP, UNSPEC_MOVNTDQA, UNSPEC_MPSADBW,
2336         UNSPEC_PHMINPOSUW, UNSPEC_PTEST, UNSPEC_PCMPESTR, UNSPEC_PCMPISTR,
2337         UNSPEC_FMADDSUB, UNSPEC_XOP_UNSIGNED_CMP, UNSPEC_XOP_TRUEFALSE,
2338         UNSPEC_XOP_PERMUTE, UNSPEC_FRCZ, UNSPEC_AESENC, UNSPEC_AESENCLAST,
2339         UNSPEC_AESDEC, UNSPEC_AESDECLAST, UNSPEC_AESIMC,
2340         UNSPEC_AESKEYGENASSIST, UNSPEC_PCLMUL, UNSPEC_PCMP, UNSPEC_VPERMIL,
2341         UNSPEC_VPERMIL2, UNSPEC_VPERMIL2F128, UNSPEC_CAST, UNSPEC_VTESTP,
2342         UNSPEC_VCVTPH2PS, UNSPEC_VCVTPS2PH, UNSPEC_VPERMSI, UNSPEC_VPERMDF,
2343         UNSPEC_VPERMSF, UNSPEC_VPERMTI, UNSPEC_GATHER, UNSPEC_VSIBADDR>: Ditto.
2344         (unspecv) <UNSPECV_LDMXCSR, UNSPECV_STMXCSR, UNSPECV_CLFLUSH,
2345         UNSPECV_MONITOR, UNSPECV_MWAIT, UNSPECV_VZEROALL, UNSPECV_VZEROUPPER>:
2346         Ditto.
2347         * config/i386/sync.md (unspec) <UNSPEC_LFENCE, UNSPEC_SFENCE,
2348         UNSPEC_MFENCE, UNSPEC_MOVA>: Ditto.
2349         (unspecv) <UNSPECV_CMPXCHG_1, UNSPECV_CMPXCHG_2, UNSPECV_CMPXCHG_3,
2350         UNSPECV_CMPXCHG_4, UNSPECV_XCHG, UNSPECV_LOCK>: Ditto.
2351         (sse2_lfence): Move from config/i386/sse.md.
2352         (*sse2_lfence): Ditto.
2353         (sse_sfence): Ditto.
2354         (*sse_sfence): Ditto.
2355         (sse2_mfence): Ditto.
2356         (mfence_sse2): Ditto.  Rename from *sse2_mfence.  Enable also
2357         for TARGET_64BIT.
2358         (mem_thread_fence): Use mfence_sse2.
2359
2360 2011-11-21  Georg-Johann Lay  <avr@gjlay.de>
2361
2362         * config/avr/avr.h (struct base_arch_s): Add field sfr_offset.
2363         * config/avr/avr-devices.c: Ditto. And initialize it.
2364         * config/avr/avr-c.c (avr_cpu_cpp_builtins): New built-in define
2365         __AVR_SFR_OFFSET__.
2366         * config/avr/avr-protos.h (out_movqi_r_mr, out_movqi_mr_r): Remove.
2367         (out_movhi_r_mr, out_movhi_mr_r): Remove.
2368         (out_movsi_r_mr, out_movsi_mr_r): Remove.
2369         * config/avr/avr.md (*cbi, *sbi): Use %i instead of %m-0x20.
2370         (*insv.io, *insv.not.io): Ditto.
2371         * config/avr/avr.c (out_movsi_r_mr, out_movsi_mr_r): Make static.
2372         (print_operand): Implement "%i" to print address as I/O address.
2373         (output_movqi): Clean up call of out_movqi_mr_r.
2374         (output_movhi): Clean up call of out_movhi_mr_r.
2375         (avr_file_start): Use avr_current_arch->sfr_offset instead of
2376         magic -0x20. Use TMP_REGNO, ZERO_REGNO instead of 0, 1.
2377         (avr_out_sbxx_branch): Use %i instead of %m-0x20.
2378         (out_movqi_r_mr, out_movqi_mr_r): Ditto. And make static.
2379         (out_movhi_r_mr, out_movhi_mr_r): Ditto. And use avr_asm_len.
2380         (out_shift_with_cnt): Clean up code: Use avr_asm_len.
2381         (output_movsisf): Use output_reload_insisf for all CONSTANT_P sources.
2382         (avr_out_movpsi): USE avr_out_reload_inpsi for all CONSTANT_P sources.
2383         Clean up call of avr_out_store_psi.
2384         (output_reload_in_const): Don't cut symbols longer than 2 bytes.
2385         (output_reload_insisf): Filter CONST_INT_P or CONST_DOUBLE_P to
2386         try if setting pre-cleared register is advantageous.
2387         (avr_out_plus_1): Use gen_int_mode instead of GEN_INT.
2388
2389 2011-11-20  Joey Ye  <joey.ye@arm.com>
2390
2391         * expr.c (expand_expr_real_1): Correctly handle strict volatile
2392         bitfield loads smaller than mode size.
2393
2394 2011-11-20  Richard Henderson  <rth@redhat.com>
2395
2396         * config/mips/mips.c (mips_init_libfuncs): Call init_sync_libfuncs.
2397
2398 2011-11-20  Uros Bizjak  <ubizjak@gmail.com>
2399
2400         PR target/51235
2401         * config/i386/i386.c (ix86_expand_vcond): Generate TARGET_XOP
2402         patterns for supported mode only.
2403
2404         PR target/51236
2405         * config/i386/i386.c (ix86_expand_builtin)
2406         <IX86_BUILTIN_GATHERALTSIV4DI>: Use CODE_FOR_avx2_gathersiv4di.
2407
2408 2011-11-20  Uros Bizjak  <ubizjak@gmail.com>
2409
2410         * config/i386/i386.md (UNSPEC_MOVNTI): Remove.
2411         (UNSPEC_MOVNTQ): New unspec.
2412         * config/i386/mmx.md (sse_movntq): Rename from sse_movntdi.
2413         Use UNSPEC_MOVNTQ instead of UNSPEC_MOVNT.
2414         * config/i386/sse.md (sse2_movnti<mode>): Use UNSPEC_MOVNT instead of
2415         UNSPEC_MOVNTI.
2416         (STORENT_MODE): Add DI and V4DI modes.
2417
2418 2011-11-20  Nathan Sidwell  <nathan@acm.org>
2419
2420         PR gcov-profile/51113
2421         * coverage.c (build_var): Propagate visibility for public
2422         decls.  Use make_decl_one_only for PIC correctness.
2423
2424         testsuite/
2425         * gcc.misc-tests/gcov-13.c: Check gcovpart-13b coverage
2426         * gcc.misc-tests/gcov-16.c: New.
2427         * gcc.misc-tests/gcov-17.c: New.
2428         * g++.dg/gcov/gcov-8.C: New.
2429         * g++.dg/gcov/gcov-9.C: New.
2430         * g++.dg/gcov/gcov-10.C: New.
2431
2432 2011-11-19  Eric Botcazou  <ebotcazou@adacore.com>
2433
2434         PR rtl-optimization/51187
2435         * reorg.c (relax_delay_slots): Do not consider a jump useless if there
2436         is a barrier between the jump and its target label.
2437
2438 2011-11-19  Patrick Marlier  <patrick.marlier@gmail.com>
2439
2440         PR middle-end/51211
2441         * tracer.c (ignore_bb_p): Don't copy GIMPLE_TRANSACTION.
2442
2443 2011-11-19  Eric Botcazou  <ebotcazou@adacore.com>
2444
2445         * expmed.c (store_bit_field_1): Revert bogus formatting change.
2446
2447 2011-11-19  Richard Earnshaw  <rearnsha@arm.com>
2448
2449         PR target/50493
2450         * config/arm/arm.c (neon_disambiguate_copy): Correctly handle partial
2451         overlap of src and dest operands.
2452
2453 2011-11-19  Iain Sandoe  <iains@gcc.gnu.org>
2454
2455         * config/darwin.h (ASM_DEBUG_SPEC): New.
2456         * config/darwin9.h (ASM_DEBUG_SPEC): New.
2457
2458 2011-11-18  Jan Hubicka  <jh@suse.cz>
2459
2460         * config/i386/i386.c (atom_cost): Disable SSE loop until alignment
2461         issues are fixed.
2462
2463 2011-11-18  Anatoly Sokolov  <aesok@post.ru>
2464
2465         * config/cris/cris.c (cris_function_value_regno_p): Make static.
2466         (TARGET_FUNCTION_VALUE_REGNO_P): Define.
2467         * config/cris/cris.h (FUNCTION_VALUE_REGNO_P): Remove.
2468         * config/cris/cris-protos.h (cris_function_value_regno_p): Remove.
2469
2470 2011-11-18  H.J. Lu  <hongjiu.lu@intel.com>
2471
2472         PR target/33944
2473         * doc/extend.texi: Document __builtin_ia32_movnti64.
2474
2475         * config/i386/emmintrin.h (_mm_stream_si64): New.
2476
2477         * config/i386/i386-builtin-types.def: Add VOID_FTYPE_PLONGLONG_LONGLONG.
2478
2479         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTI64.
2480         (bdesc_special_args): Update __builtin_ia32_movnti.  Add
2481         __builtin_ia32_movnti64.
2482         (ix86_expand_special_args_builtin): Handle
2483         VOID_FTYPE_PLONGLONG_LONGLONG.
2484
2485         * config/i386/i386.md (UNSPEC_MOVNTI): New.
2486
2487         * config/i386/sse.md (sse2_movntsi): Renamed to ...
2488         (sse2_movnti<mode>): This.
2489
2490 2011-11-18  Georg-Johann Lay  <avr@gjlay.de>
2491
2492         PR target/49868
2493         * config/avr/avr.h (base_arch_s): Add field n_segments.
2494         (ADDR_SPACE_PGM1, ADDR_SPACE_PGM2, ADDR_SPACE_PGM3,
2495         ADDR_SPACE_PGM4, ADDR_SPACE_PGM5, ADDR_SPACE_PGMX): New address spaces.
2496         (AVR_HAVE_ELPM, AVR_HAVE_ELPMX): New defines.
2497         (INIT_EXPANDERS): New define.
2498         * config/avr/avr-protos.h (avr_mem_pgmx_p): New.
2499         (avr_init_expanders): New.
2500         (avr_emit_movmemhi, avr_out_movmem): New.
2501         (avr_xload_libgcc_p): New.
2502         * config/avr/avr-c.c (avr_register_target_pragmas): Register
2503         address spaces __pgm1, __pgm2,  __pgm3,  __pgm4  __pgm5,  __pgmx.
2504         (avr_cpu_cpp_builtins): Add built-in defines __PGM1,
2505         __PGM2, __PGM3, __PGM4, __PGM5, __PGMX.
2506         * config/avr/avr-devices.c (avr_arch_types): Set field n_segments.
2507
2508         * config/avr/avr.c (AVR_SECTION_PROGMEM): Change define to cover
2509         3 bits instead of just 1.
2510         (xstring_empty, xstring_e, rampz_rtx): New static GTYed variables.
2511         (progmem_section): Change from section to array of sections.
2512         (progmem_section_prefix): New static variable.
2513         (avr_file_start): Print set for __RAMPZ__
2514         (avr_option_override): Move initialization of RTXes from here...
2515         (avr_init_expanders): ...to this new function.
2516         (avr_pgm_segment): New static function.
2517         (avr_decl_pgm_p): Handle error_mark_node.
2518         (avr_mem_pgmx_p, avr_decl_pgmx_p): New static functions.
2519         (avr_out_xload, avr_find_unused_d_reg): New static functions.
2520         (expand_prologue, expand_epilogue): Use rampz_rtx.
2521         (print_operand): Hande CONST_STRING.
2522         (avr_xload_libgcc_p): New static function.
2523         (avr_out_lpm_no_lpmx, avr_out_lpm): Handle ELPM.
2524         (avr_progmem_p): Return 2 for 24-bit flash address space.
2525         (avr_out_sbxx_branch): Clean-up code from ASn macros.
2526         (out_movqi_r_mr, out_movqi_mr_r): Ditto. And recognize RAMPZ's
2527         address and print symbolically.
2528         (avr_asm_named_section, avr_section_type_flags,
2529         avr_encode_section_info, avr_asm_select_section,
2530         avr_addr_space_address_mode, avr_addr_space_pointer_mode,
2531         avr_addr_space_legitimate_address_p, avr_addr_space_convert,
2532         avr_addr_space_legitimize_address): Handle new address spaces.
2533         (avr_output_progmem_section_asm_op): New static function.
2534         (avr_asm_init_sections): Initialize progmem_section[].
2535         (adjust_insn_length): Handle ADJUST_LEN_XLOAD, ADJUST_LEN_MOVMEM.
2536         (avr_const_address_lo16): New static function.
2537         (avr_assemble_integer): Use it to handle 3-byte integers.
2538         (avr_emit_movmemhi, avr_out_movmem): New functions.
2539
2540         * config/avr/predicates.md (nox_general_operand): Handle new
2541         address spaces.
2542         * config/avr/avr.md (unspec): Add UNSPEC_MOVMEM.
2543         (adjust_len): Add xload, movmem.
2544         (SP_ADDR): New define_constants.
2545         (isa): Add "lpm", "lpmx", "elpm", "elpmx".
2546         (enabled): Handle them.
2547         (load<mode>_libgcc): New expander.
2548         (*load.<mode>.libgcc): Rename to load_<mode>_libgcc.
2549         (xload8_A, xload<mode>_A): New insn-and-splits.
2550         (xload_8, xload_<mode>_libgcc, xload_<mode>, loadmem_elpm): New insns.
2551         (mov<mode>): Handle new address spaces.
2552         (movmemhi): Rewrite using avr_emit_movmemhi.
2553         (MOVMEM_r_d): New mode attribute.
2554         (movmem_<mode>, movmem_qi_elpm): New insns.
2555         (setmemhi, *clrmemqi, *clrmemhi, strlenhi, *strlenhi): Unquote
2556         C-code.  Use label instead of hard-coded instrunction lengths.
2557
2558 2011-11-18  Martin Jambor  <mjambor@suse.cz>
2559
2560         PR tree-optimization/50605
2561         * gimple.c (is_gimple_ip_invariant_address): Also handle MEM_REFs
2562         of IPA invariant decls.
2563
2564 2011-11-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2565
2566         * tree-outof-ssa.c (insert_back_edge_copies):  Add call to
2567         mark_dfs_back_edges.
2568
2569 2011-11-18  Iain Sandoe  <iains@gcc.gnu.org>
2570
2571         PR target/49992
2572         * configure.ac: Remove ranlib special-casing for Darwin.
2573         * configure: Regenerate.
2574
2575 2011-11-18  Uros Bizjak  <ubizjak@gmail.com>
2576
2577         PR tree-optimization/51118
2578         * fold-const.c (fold_checksum_tree): Check for TS_TYPED structure
2579         before using TREE_TYPE accessor on expr.
2580
2581 2011-11-17  Jan Hubicka  <jh@suse.cz>
2582
2583         PR bootstrap/51134
2584         * i386.c (atom_cost): Fix 32bit memset description.
2585         (expand_set_or_movmem_via_loop_with_iter): Output proper bounds check
2586         for epilogue loops.
2587         (expand_movmem_epilogue): Handle epilogues up to size 15 w/o producing
2588         byte loop.
2589         (decide_alg): sse_loop is not useable wthen SSE2 is disabled;
2590         when not optimizing always use rep movsb or lincall; do not produce
2591         word sized loops when optimizing memset for size (to avoid need
2592         for large constants).
2593         (ix86_expand_movmem): Get into sync with ix86_expand_setmem;
2594         choose unroll factors better; always do 128bit moves when producing
2595         SSE loops; do not produce loopy epilogue when size is too small.
2596         (promote_duplicated_reg_to_size): Do not look into desired alignments
2597         when doing vector expansion.
2598         (ix86_expand_setmem): Track better when promoted value is available;
2599         choose unroll factors more sanely. Output loopy epilogue only
2600         when needed.
2601
2602 2011-11-17  Steve Ellcey  <sje@cup.hp.com>
2603
2604         PR middle-end/51144
2605         * output.h (fprint_w): Remove.
2606         * final.c (fprint_w): Remove.
2607         (output_addr_const): Change fprint_w back to fprintf.
2608
2609 2011-11-17  Andrew Pinski  <apinski@cavium.com>
2610
2611         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for MIPS.
2612
2613 2011-11-17  Andrew MacLeod  <amacleod@redhat.com>
2614
2615         * builtins.c (expand_builtin): Remove 4th parameter representing
2616         weak/strong mode when __atomic_compare_exchange becomes a library call.
2617
2618 2011-11-17  Richard Henderson  <rth@redhat.com>
2619
2620         * config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap): Get
2621         new pseudo for target after convert_modes.
2622         (rs6000_expand_atomic_exchange, rs6000_expand_atomic_op): Likewise.
2623
2624 2011-11-17  Richard Henderson  <rth@redhat.com>
2625
2626         * config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap): Get
2627         new pseudo for target after convert_modes.
2628         (rs6000_expand_atomic_exchange, rs6000_expand_atomic_op): Likewise.
2629
2630 2011-11-17  Richard Henderson  <rth@redhat.com>
2631
2632         * builtins.c (expand_builtin_mem_thread_fence): Remove.
2633         (expand_builtin_mem_signal_fence): Remove.
2634         (expand_builtin_atomic_thread_fence): Use expand_mem_thread_fence.
2635         (expand_builtin_sync_synchronize): Likewise.
2636         (expand_builtin_atomic_signal_fence): Use expand_mem_signal_fence.
2637         * optabs.c (expand_asm_memory_barrier): Split out from
2638         expand_builtin_mem_signal_fence.
2639         (expand_mem_thread_fence): New, a combination of code from
2640         expand_builtin_mem_thread_fence and expand_builtin_sync_synchronize.
2641         (expand_mem_signal_fence): Moved and renamed from
2642         expand_builtin_mem_signal_fence.
2643         (expand_atomic_exchange): Use expand_mem_thread_fence.
2644         (expand_atomic_load, expand_atomic_store): Likewise.
2645         * expr.h, optabs.h: Update decls.
2646
2647 2011-11-17  Bin Cheng  <bin.cheng@arm.com>
2648
2649         PR rtl-optimization/50663
2650         * cprop.c (implicit_set_indexes): New global variable.
2651         (insert_set_in_table): Add additional parameter and record implicit
2652         set information.
2653         (hash_scan_set): Add additional parameter and pass it to above.
2654         (hash_scan_insn): Pass false to hash_scan_set.
2655         (compute_hash_table_work): Pass true to hash_scan_set.
2656         (compute_cprop_data): Add implicit set to AVIN of block which the
2657         implicit set is recorded for.
2658         (one_cprop_pass): Handle implicit_set_indexes array.
2659
2660 2011-11-17  Michael Matz  <matz@suse.de>
2661
2662         PR middle-end/50644
2663         PR middle-end/50741
2664         * tree-ssa-live.c (mark_all_vars_used_1): Recurse only for decls of
2665         current function.
2666         (remove_unused_locals): Ditto.
2667
2668 2011-11-16  Richard Henderson  <rth@redhat.com>
2669
2670         * config/alpha/alpha.c (alpha_split_compare_and_swap_12): Copy
2671         ALIAS_SET_MEMORY_BARRIER when creating a new memory.
2672         (alpha_split_atomic_exchange_12): Likewise.
2673         * config/rs6000/rs6000.c (rs6000_adjust_atomic_subword): Likewise.
2674
2675 2011-11-16  Joseph Myers  <joseph@codesourcery.com>
2676
2677         * config/i386/i386elf.h (PREFERRED_DEBUGGING_TYPE): Remove.
2678
2679 2011-11-16  David Edelsohn  <dje.gcc@gmail.com>
2680
2681         * config/rs6000/rs6000.c (rs6000_xcoff_section_type_flags):
2682         Default to minimum alignment if decl is NULL.
2683
2684 2011-11-16  Uros Bizjak  <ubizjak@gmail.com>
2685
2686         * config/i386/sse.md (round<mode>2_vec_pack_sfix): Optimize V2DFmode
2687         sequence for AVX.
2688         (<sse4_1>_round<ssemodesuffix>_vec_pack_sfix<avxsizesuffix>): Ditto.
2689
2690 2011-11-16  Venkataramanan Kumar  <venkataramanan.kumar@amd.com>
2691
2692         * doc/invoke.texi: Document AMD bdver1 and btver1.
2693
2694 2011-11-16  Richard Earnshaw  <rearnsha@arm.com>
2695             Bernd Schmidt <bernds@coudesourcery.com>
2696             Sebastian Huber <sebastian.huber@embedded-brains.de>
2697
2698         PR target/49641
2699         * config/arm/arm.c (store_multiple_sequence): Avoid cases where
2700         the base reg is stored iff compiling for Thumb1.
2701
2702 2011-11-16  Razya Ladelsky  <razya@il.ibm.com>
2703
2704         PR tree-optimization/49960
2705         * tree-data-ref.c (initialize_data_dependence_relation): Add
2706         initializations.
2707         Remove call to compute_self_dependence.
2708         (compute_affine_dependence): Remove the !DDR_SELF_REFERENCE condition.
2709         (compute_self_dependence): Remove old code. Add call to
2710         compute_affine_dependence.
2711         (compute_all_dependences): Remove call to compute_self_dependence.
2712         Add call to compute_affine_dependence.
2713
2714 2011-11-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2715
2716         PR middle-end/50325
2717         * expmed.c (store_bit_field_1): Use extract_bit_field on big
2718         endian targets if the source cannot be exactly covered by word
2719         mode chunks.
2720
2721 2011-11-15  Joseph Myers  <joseph@codesourcery.com>
2722
2723         * config/i386/i386elf.h (ASM_OUTPUT_ASCII): Change STRING_LIMIT to
2724         ELF_STRING_LIMIT.
2725
2726 2011-11-15  Richard Henderson  <rth@redhat.com>
2727
2728         * config/alpha/alpha.c (alpha_pre_atomic_barrier): New.
2729         (alpha_post_atomic_barrier): New.
2730         (alpha_split_atomic_op): New memmodel argument; honor it.
2731         (alpha_split_compare_and_swap): Take array of operands.  Honor
2732         memmodel; always set bool output
2733         (alpha_expand_compare_and_swap_12): Similarly.
2734         (alpha_split_compare_and_swap_12): Similarly.
2735         (alpha_split_atomic_exchange): Similarly.  Rename from
2736         alpha_split_lock_test_and_set.
2737         (alpha_expand_atomic_exchange_12): Similarly.  Rename from
2738         alpha_expand_lock_test_and_set_12.
2739         (alpha_split_atomic_exchange_12): Similarly.  Rename from
2740         alpha_split_lock_test_and_set_12.
2741         * config/alpha/alpha-protos.h: Update.
2742         * config/alpha/alpha.md (UNSPECV_CMPXCHG): New.
2743         * config/alpha/constraints.md ("w"): New.
2744         * config/alpha/predicates.md (mem_noofs_operand): New.
2745         * config/alpha/sync.md (atomic_compare_and_swap<mode>): Rename from
2746         sync_compare_and_swap<mode>; add the new parameters.
2747         (atomic_exchange<mode>): Update from sync_test_and_set<mode>.
2748         (atomic_fetch_<op><mode>): Update from sync_old_<op><mode>.
2749         (atomic_<op>_fetch<mode>): Update from sync_new_<op><mode>.
2750         (atomic_<op><mode>): Update from sync_<op><mode>.
2751
2752 2011-11-16  Tom de Vries  <tom@codesourcery.com>
2753
2754         * tree-ssa-tail-merge.c (replace_block_by): Add frequency of bb2 to bb1.
2755
2756 2011-11-16  Alan Modra  <amodra@gmail.com>
2757
2758         PR rtl-optimization/51051
2759         PR bootstrap/51086
2760         * function.c (thread_prologue_and_epilogue_insns): Guard
2761         emitting return with single_succ_p test.
2762
2763 2011-11-15  Joern Rennecke  <joern.rennecke@embecosm.com>
2764
2765         * config/epiphany/epiphany.md (mov<mode>cc): Fix code to
2766         get mode from CMP_OP1 if CMP_OP0 is VOIDmode.
2767
2768 2011-11-15  Uros Bizjak  <ubizjak@gmail.com>
2769
2770         * config/i386/sse.md (vec_pack_trunc_v2df): Optimize sequence for AVX.
2771         (vec_pack_sfix_trunc_v2df): Ditto.
2772         (vec_pack_sfix_v2df): Ditto.
2773         (vec_pack_sfix_trunc_v4df): Generate fix_truncv4dfv4si2 and
2774         avx_vec_concatv8si patterns.
2775         (vec_pack_sfix_v4df): Generate avx_cvtpd2dq256 and
2776         avx_vec_concatv8si patterns.
2777
2778 2011-11-15  Torvald Riegel  <triegel@redhat.com>
2779
2780         * c-parser.c (c_parser_transaction_expression): Require parentheses
2781         when parsing transaction expressions.
2782
2783 2011-11-15  Tristan Gingold  <gingold@adacore.com>
2784
2785         * incpath.c (get_added_cpp_dirs): New function.
2786         * incpath.h (get_added_cpp_dirs): Declare.
2787         * config/vms/vms-c.c (vms_c_register_includes): New function.
2788         (vms_std_modules): New variable.
2789         * config/vms/vms.h (TARGET_EXTRA_INCLUDES): Define.
2790         (vms_c_register_includes): Declare.
2791
2792 2011-11-15  Tristan Gingold  <gingold@adacore.com>
2793
2794         * c-family/c-pragma.h (pragma_extern_prefix): Declare.
2795         * c-family/c-pragma.c (pragma_extern_prefix): Make it public.
2796         * config/vms/vms-c.c (saved_extern_prefix): New variable.
2797         (vms_pragma_extern_prefix): New function.
2798         (vms_c_register_pragma): Register vms_pragma_extern_prefix.
2799
2800 2011-11-15  Georg-Johann Lay  <avr@gjlay.de>
2801
2802         PR target/49868
2803         * config/avr/avr.h (ADDR_SPACE_PGM): New address spaces.
2804         (REGISTER_TARGET_PRAGMAS): New define.
2805         * config/avr/avr-protos.h (avr_mem_pgm_p): New.
2806         (avr_load_libgcc_p): New.
2807         (avr_register_target_pragmas): New.
2808         (asm_output_external_libcall): Remove.
2809         (avr_log_t): Add field "progmem".  Order alphabetically.
2810         * config/avr/avr-log.c (avr_log_set_avr_log): Set avr_log.progmem.
2811         * config/avr/avr-c.c (langhooks.h): New include.
2812         (avr_register_target_pragmas): New function. Register address
2813         space __pgm.
2814         (avr_cpu_cpp_builtins): Add built-in define __PGM.
2815
2816         * config/avr/avr.c: Include "c-family/c-common.h".
2817         (TARGET_LEGITIMATE_ADDRESS_P): Remove define.
2818         (TARGET_LEGITIMIZE_ADDRESS): Remove define.
2819         (TARGET_ADDR_SPACE_SUBSET_P): Define to...
2820         (avr_addr_space_subset_p): ...this new static function.
2821         (TARGET_ADDR_SPACE_CONVERT): Define to...
2822         (avr_addr_space_convert): ...this new static function.
2823         (TARGET_ADDR_SPACE_ADDRESS_MODE): Define to...
2824         (avr_addr_space_address_mode): ...this new static function.
2825         (TARGET_ADDR_SPACE_POINTER_MODE): Define to...
2826         (avr_addr_space_pointer_mode): ...this new static function.
2827         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define to...
2828         (avr_addr_space_legitimate_address_p): ...this new static function.
2829         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Define to...
2830         (avr_addr_space_legitimize_address): ...this new static function.
2831         (avr_mode_code_base_reg_class): Handle address spaces.
2832         (avr_regno_mode_code_ok_for_base_p): Ditto.
2833         (lpm_addr_reg_rtx, lpm_reg_rtx, all_regs_rtx): New static variables.
2834         (avr_option_override): Initialize them.
2835         (output_reload_in_const): Use all_regs_rtx. Fix signedness of loop
2836         variables.
2837         (avr_pgm_segment): New static function.
2838         (avr_decl_pgm_p, avr_mem_pgm_p): New static functions.
2839         (avr_out_lpm, avr_out_lpm_no_lpmx): New static functions.
2840         (output_movqi, output_movhi, output_movsisf, avr_out_movpsi): Call
2841         avr_out_lpm to handle loads from progmem.
2842         (avr_load_libgcc_p): New static function.
2843         (avr_progmem_p): Test if decl is in flash.
2844         (avr_pgm_pointer_const_p): New static function.
2845         (avr_nonconst_pointer_addrspace): New static function.
2846         (avr_pgm_check_var_decl): New static function.
2847         (avr_insert_attributes): Use it.  Change error message to report
2848         cause (progmem or address space) when code wants to write to flash.
2849         (avr_section_type_flags): Unset section flag SECTION_BSS for
2850         data in progmem.
2851
2852         * config/avr/predicates.md (nop_general_operand): New predicate.
2853         (nox_general_operand): New predicate.
2854         * config/avr/avr.md (LPM_REGNO): New define_constant.
2855         (load<mode>_libgcc): New expander.
2856         (*load.<mode>.libgcc): New insn.
2857         (mov<mode>): Handle loads from non-generic AS.
2858         (movmemhi): Ditto.  Propagate address space information to newly
2859         created MEM.
2860         (movqi_insn, *movhi, *movpsi, *movsi, *movsf): Change predicate #1
2861         to nox_general_operand.
2862         (ashrqi3, ashrhi3, ashrsi3): Change predicate #1 to
2863         nop_general_operand.
2864         (ashlqi3, *ashlqi3, ashlhi3, ashlsi3): Ditto.
2865         (lshrqi3, *lshrqi3, lshrhi3, lshrsi3): Ditto.
2866         (split-lpmx): New split.
2867         (*ashlhi3_const, *ashlsi3_const, *ashrhi3_const, *ashrsi3_const,
2868         *lshrhi3_const, *lshrsi3_const): Indent, unquote C.
2869
2870 2011-11-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
2871
2872         * ipa-cp.c (ipa_value_from_jfunc): Make global.
2873         (ipa_cst_from_jfunc): Remove, use ipa_value_from_jfunc instead.
2874         (get_indirect_edge_target): Rename, make global.
2875         (devirtualization_time_bonus, estimate_local_effects,)
2876         (ipcp_discover_new_direct_edges): Update.
2877         * ipa-inline-analysis.c (evaluate_conditions_for_edge):
2878         Generalize to also handle types.  Rename to ...
2879         (evaluate_properties_for_edge): Use instead of
2880         evaluate_conditions_for_edge.
2881         (estimate_edge_devirt_benefit): New function.
2882         (estimate_calls_size_and_time): Use it.
2883         (estimate_node_size_and_time, estimate_ipcp_clone_size_and_time,)
2884         (inline_merge_summary): Update.
2885         (do_estimate_edge_time, do_estimate_edge_growth): Update.  Calculate
2886         parameter information at the call site and pass it on to subroutines.
2887         * tree-inline.c (estimate_num_insns): Distinguish between direct and
2888         indirect calls.
2889         (init_inline_once): Set size and time costs or indirect calls.
2890         * tree-inline.h (eni_weights): Add indirect_call_cost.
2891
2892 2011-11-15  Tom de Vries  <tom@codesourcery.com>
2893
2894         PR tree-optimization/51005
2895         * tree-ssa-tail-merge.c (delete_basic_block_same_succ): Rename to
2896         mark_basic_block_deleted.
2897         (update_worklist): Inline purge_bbs.
2898         (purge_bbs, unlink_virtual_phi, update_vuses, vop_at_entry)
2899         (delete_block_update_dominator_info): Remove.
2900         (replace_block_by): Remove update_vops parameter.  Partially evaluate
2901         for update_vops == false.
2902         (apply_clusters): Remove update_vops parameter.  Remove update_vops
2903         argument in replace_block_by call.
2904         (update_debug_stmts): Remove MAY_HAVE_DEBUG_STMTS test.
2905         (tail_merge_optimize): Remove update_vops argument to apply_clusters.
2906         Remove call to purge_bbs.  Add calls to calculate_dominance_info and
2907         free_dominance_info.  Add MAY_HAVE_DEBUG_STMTS  before calling
2908         update_debug_stmts.  Mark vop var for renaming, if necessary.
2909
2910 2011-11-15  Bernd Schmidt  <bernds@codesourcery.com>
2911
2912         PR rtl-optimization/51051
2913         * cfgrtl.c (cfg_layout_can_merge_blocks_p): Return FALSE if the
2914         move would cause fallthrough into the exit block.
2915
2916 2011-11-14  Richard Henderson  <rth@redhat.com>
2917
2918         * config/rs6000/rs6000.c (emit_load_locked): Assert the mode is
2919         handled.
2920         (emit_store_conditional): Likewise.
2921         (rs6000_pre_atomic_barrier, rs6000_post_atomic_barrier): New.
2922         (rs6000_adjust_atomic_subword): New.
2923         (rs6000_mask_atomic_subword, rs6000_finish_atomic_subword): New.
2924         (rs6000_expand_atomic_op): Rename from rs6000_emit_sync; rewrite
2925         for pre-reload expansion.
2926         (rs6000_split_compare_and_swap, rs6000_split_compare_and_swapqhi,
2927         rs6000_expand_compare_and_swapqhi): Merge into ...
2928         (rs6000_expand_atomic_compare_and_swap): ... here.  New function.
2929         rs6000_split_lock_test_and_set; expand immediately.  Handle
2930         QImode and HImode.
2931         * config/rs6000/rs6000.md (UNSPEC_LWSYNC): Move and rename
2932         from UNSPECV_LWSYNC.
2933         * config/rs6000/sync.md (fetchopsi_constr, fetchopdi_constr): Remove.
2934         (mem_thread_fence): New.
2935         (hwsync): Rename from memory_barrier.
2936         (*hwsync): Rename from *sync_internal.
2937         (lwsync, *lwsync): Mirror hwsync implementation.
2938         (isync): Don't reference memory.
2939         (loadsync): New.
2940         (atomic_load<INT>, atomic_store<INT>): New.
2941         (ATOMIC): New mode iterator.
2942         (load_locked<ATOMIC>): Rename from load_locked_<GPR>.
2943         (store_conditional<ATOMIC>): Rename from store_conditional_<GPR>.
2944         (sync_compare_and_swap<GPR>): Remove.
2945         (sync_compare_and_swaphi, sync_compare_and_swapqi): Remove.
2946         (sync_compare_and_swapqhi_internal): Remove.
2947         (sync_lock_test_and_set<GPR>): Remove.
2948         (sync_<FETCHOP><INT1>): Remove.
2949         (*sync_<FETCHOP>si_internal, *sync_<FETCHOP>di_internal): Remove.
2950         (sync_nand<INT1>, *sync_nand<GPR>_internal): Remove.
2951         (sync_old_<FETCHOP><GPR>): Remove.
2952         (*sync_old_<FETCHOP>si_internal): Remove.
2953         (*sync_old_<FETCHOP>di_internal): Remove.
2954         (sync_old_nand<INT1>): Remove.
2955         (*sync_old_nand<GPR>_internal): Remove.
2956         (sync_new_<FETCHOP><GPR>): Remove.
2957         (*sync_new_<FETCHOP>si_internal): Remove.
2958         (*sync_new_<FETCHOP>di_internal): Remove.
2959         (sync_new_nand<INT1>): Remove.
2960         (*sync_new_nand<GPR>_internal): Remove.
2961         (*atomic_andsi, *atomic_anddi): Remove.
2962         (*sync_addshort_internal, *sync_subshort_internal): Remove.
2963         (*sync_andsi_internal, *sync_boolsi_internal): Remove.
2964         (*sync_boolcshort_internal): Remove.
2965         (sync_lock_release<INT1>): Remove.
2966         (atomic_compare_and_swap<INT1>): New.
2967         (atomic_exchange<INT1>): New.
2968         (atomic_<FETCHOP><INT1>, atomic_nand<INT1>): New.
2969         (atomic_fetch_<FETCHOP><INT1>, atomic_fetch_nand<INT1>): New.
2970         (atomic_<FETCHOP>_fetch<INT1>, atomic_nand_fetch<INT1>): New.
2971
2972 2011-11-14  Uros Bizjak  <ubizjak@gmail.com>
2973
2974         * config/i386/sse.md (round<mode>2): Use register_operand for
2975         operand 1 predicate.
2976         (round<mode>2_sfix): Ditto.
2977         (round<mode>2_vec_pack_sfix): Ditto for operand 1 and operand 2.
2978
2979 2011-11-14  Nathan Sidwell  <nathan@acm.org>
2980
2981         * gcov.c (canonicalize_name): Protect use of S_ISLNK.
2982
2983 2011-11-14  Jan Hubicka  <jh@suse.cz>
2984
2985         PR target/51126
2986         * config/i386/i386.c (core cost model): Correct pasto.
2987
2988 2011-11-14  Uros Bizjak  <ubizjak@gmail.com>
2989
2990         * config/i386/sse.md (round<mode>2_sfix): New expander.
2991         (round<mode>2_vec_pack_sfix): Ditto.
2992         (<sse4_1>_round<ssemodesuffix>_sfix<avxsizesuffix>): Ditto.
2993         (<sse4_1>_round<ssemodesuffix>_vec_pack_sfix<avxsizesuffix>): Ditto.
2994         * config/i386/builtin-types.def (V4SI_FTYPE_V4SF_ROUND,
2995         V8SI_FTYPE_V8SF_ROUND, V4SI_FTYPE_V2DF_V2DF_ROUND,
2996         V8SI_FTYPE_V4DF_V4DF_ROUND): New builtin types.
2997         * config/i386/i386.c (ix86_builtins): Add
2998         IX86_BUILTIN_{FLOORPD,CEILPD,ROUNDPD_AZ}_VEC_PACK_SFIX{,256} and
2999         IX86_BUILTIN_{FLOORPS,CEILPS,ROUNDPS_AZ}_SFIX{,256} defines.
3000         (bdesc_args): Add __builtin_ia32_{floorpd,ceilpd}_vec_pack_sfix{,256},
3001         __builtin_ia32_roundpd_az_vec_pack_sfix{,256},
3002         __builtin_ia32_{floorps,ceilps}_sfix{,256}and
3003         __builtin_ia32_roundps_az_sfix{,256} descriptions.
3004         (ix86_expand_sse_round_vec_pack_sfix): New.
3005         (ix86_expand_args_builtin): Handle V4SI_FTYPE_V4SF_ROUND,
3006         V8SI_FTYPE_V8SF_ROUND, V4SI_FTYPE_V2DF_V2DF_ROUND and
3007         V8SI_FTYPE_V4DF_V4DF_ROUND types.  Check last argument of
3008         CODE_FOR_sse4_1_roundpd_vec_pack_sfix, CODE_FOR_sse4_1_roundps_sfix,
3009         CODE_FOR_avx_roundpd_vec_pack_sfix256 and CODE_FOR_avx_roundps_sfix256.
3010         (ix86_builtin_vectorized_function): Handle
3011         BUILT_IN_{I,L,LL}FLOOR{,F}, BUILT_IN_{I,L,LL}CEIL{,F} and
3012         BUILT_IN_{I,L,LL}ROUND{,F}
3013
3014 2011-11-14  Jan Hubicka  <jh@suse.cz>
3015
3016         PR middle-end/50598
3017         * cgraph.h (varpool_externally_visible_p): Declare.
3018         (varpool_add_new_variable): Declare.
3019         * tree-emultls.c (get_emutls_init_templ_addr,
3020         new_emutls_decl): Use varpool_add_new_variable.
3021         * ipa.c (varpool_externally_visible_p): Export.
3022         * varpool.c (varpool_add_new_variable): New function.
3023
3024 2011-11-14  Michael Zolotukhin  <michael.v.zolotukhin@gmail.com>
3025             Jan Hubicka  <jh@suse.cz>
3026
3027         * config/i386/i386.h (processor_costs): Add second dimension to
3028         stringop_algs array.
3029         * config/i386/i386.c (cost models): Initialize second dimension of
3030         stringop_algs arrays.
3031         (core_cost): New costs based on generic64 costs with updated stringop
3032         values.
3033         (promote_duplicated_reg): Add support for vector modes, add
3034         declaration.
3035         (promote_duplicated_reg_to_size): Likewise.
3036         (processor_target): Set core costs for core variants.
3037         (expand_set_or_movmem_via_loop_with_iter): New function.
3038         (expand_set_or_movmem_via_loop): Enable reuse of the same iters in
3039         different loops, produced by this function.
3040         (emit_strset): New function.
3041         (expand_movmem_epilogue): Add epilogue generation for bigger sizes,
3042         use SSE-moves where possible.
3043         (expand_setmem_epilogue): Likewise.
3044         (expand_movmem_prologue): Likewise for prologue.
3045         (expand_setmem_prologue): Likewise.
3046         (expand_constant_movmem_prologue): Likewise.
3047         (expand_constant_setmem_prologue): Likewise.
3048         (decide_alg): Add new argument align_unknown.  Fix algorithm of
3049         strategy selection if TARGET_INLINE_ALL_STRINGOPS is set; Skip sse_loop
3050         (decide_alignment): Update desired alignment according to chosen move
3051         mode.
3052         (ix86_expand_movmem): Change unrolled_loop strategy to use SSE-moves.
3053         (ix86_expand_setmem): Likewise.
3054         (ix86_slow_unaligned_access): Implementation of new hook
3055         slow_unaligned_access.
3056         * config/i386/i386.md (strset): Enable half-SSE moves.
3057         * config/i386/sse.md (vec_dupv4si): Add expand for vec_dupv4si.
3058         (vec_dupv2di): Add expand for vec_dupv2di.
3059
3060 2011-11-14  Dimitrios Apostolou  <jimis@gmx.net>
3061
3062         PR bootstrap/51094
3063         PR middle-end/51116
3064         * config/elfos.h (TARGET_ASM_INTERNAL_LABEL): Remove.
3065         * varasm.c (default_elf_internal_label): Remove.
3066
3067 2011-11-14  Kai Tietz  <ktietz@redhat.com>
3068
3069         * gcov.c (generate_results): Add missing semicolon and correct indent.
3070
3071 2011-11-14  Ira Rosen  <ira.rosen@linaro.org>
3072
3073         PR bootstrap/51112
3074         * tree-vect-stmts.c (vectorizable_condition): Initialize comp_vectype.
3075
3076 2011-11-14  Mingjie Xing  <mingjie.xing@gmail.com>
3077
3078         * doc/invoke.texi (Wunused-result): Change @pxref{Variable Attributes}
3079         to @pxref{Function Attributes}.
3080
3081 2011-11-13  Oleg Endo  <oleg.endo@t-online.de>
3082
3083         PR target/50694
3084         * config/sh/sh.h (IS_LITTLE_ENDIAN_OPTION, UNSUPPORTED_SH2A):
3085         New macros.
3086         (DRIVER_SELF_SPECS): Use new macros to filter out unsupported options
3087         taking the default configuration into account.
3088
3089 2011-11-13  Jonathan Wakely  <jwakely.gcc@gmail.com>
3090
3091         * doc/install.texi (Specific): Fix anchor for
3092         x86_64-*-solaris2.1[0-9]*.
3093
3094 2011-11-13  Nathan Sidwell  <nathan@acm.org>
3095
3096         * gcov.c (source_prefix, source_length): New globals.
3097         (flag_relative_only): Likewise.
3098         (print_usage, options, process_args): Update.
3099         (generate_results): Use coverage.name, check
3100         flag_relative_only. Adjust messages.
3101         (find_source): Check source_prefix.
3102         (output_lines): Use coverage.name, adjust messages.
3103         * doc/gcov.texi (Invoking Gcov): Document new options.
3104
3105 2011-11-12  Jason Merrill  <jason@redhat.com>
3106
3107         PR c++/51060
3108         * gimplify.c (gimplify_target_expr): Add a clobber to the cleanup.
3109         (gimplify_modify_expr): Don't try to simplify it.
3110
3111 2011-11-12  Dimitrios Apostolou  <jimis@gmx.net>
3112
3113         PR bootstrap/51094
3114         * config/elfos.h (STRING_ASM_OP): Define.
3115         * varasm.c (default_elf_asm_output_limited_string): Use it.
3116
3117         PR bootstrap/51094
3118         * gcc/configure.ac: Check for stpcpy declaration.
3119         * system.h: Declare it if not.
3120         * config.in, configure: Regenerate.
3121
3122 2011-11-12  Richard Henderson  <rth@redhat.com>
3123
3124         * config/rs6000/rs6000.md (fix_trunc<SFDF>si2_stfiwx): Use
3125         nonimmediate_operand for the destination.
3126         (fixuns_trunc<SFDF>si2_stfiwx): Likewise.
3127
3128         * builtins.c (expand_builtin_compare_and_swap): If target is const0,
3129         don't pass the target to expand_atomic_compare_and_swap.
3130         (expand_builtin_atomic_compare_exchange): Likewise.
3131
3132         * config/sh/linux.h (TARGET_INIT_LIBFUNCS): New.
3133         * config/sh/sh.c (sh_init_sync_libfuncs): New.
3134
3135         * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): New.
3136         * config/pa/pa.h (TARGET_SYNC_LIBCALL): New default.
3137         * config/pa/pa.c (pa_init_libfuncs): Use init_sync_libfuncs.
3138
3139 2011-11-12  Iain Sandoe  <iains@gcc.gnu.org>
3140
3141         PR target/45233
3142         * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
3143         Only expand a symbol ref. into an access when the entity is defined
3144         in the TU.
3145
3146 2011-11-12  Jan Hubicka  <jh@suse.cz>
3147
3148         PR bootstrap/50822
3149         * cgraphunit.c (output_weakrefs): Output really only weakrefs.
3150
3151 2011-11-12  Nathan Sidwell  <nathan@acm.org>
3152
3153         * gcov.c (struct name_map): New.
3154         (names, n_names, a_names): New global vars.
3155         (print_usage): Adjust usage.
3156         (generate_results): Canonicalize main file name.
3157         (release_structures): Adjust.
3158         (name_search, name_sort): New callbacks.
3159         (find_source): Look for and create a canonical name.
3160         (canonicalize_name): New.
3161         (make_gcov_file_name): Reimplement and fix mangling.
3162         (mangle_name): New.
3163         * doc/gcov.texi: Update documentation about path preservation.
3164
3165 2011-11-11  David S. Miller  <davem@davemloft.net>
3166
3167         * config/sparc/linux.h (ASM_GENERATE_INTERNAL_LABEL): Delete.
3168         * config/sparc/linux64.h (ASM_GENERATE_INTERNAL_LABEL): Delete.
3169
3170 2011-11-11  Jakub Jelinek  <jakub@redhat.com>
3171
3172         * config/i386/i386-protos.h (ix86_maybe_emit_epilogue_vzeroupper):
3173         New prototype.
3174         * config/i386/i386.c (ix86_maybe_emit_epilogue_vzeroupper): New
3175         function.
3176         (ix86_expand_epilogue): Use it.
3177         * config/i386/i386.md (return, simple_return): Call it in the
3178         expanders.
3179
3180         PR tree-optimization/51091
3181         * tree-stdarg.c (execute_optimize_stdarg): Ignore TREE_CLOBBER_P
3182         rhs also in the va_list_simple_ptr case.
3183
3184         PR tree-optimization/51058
3185         * tree-vect-slp.c (vect_remove_slp_scalar_calls): New function.
3186         (vect_schedule_slp): Call it.
3187         * tree-vect-stmts.c (vectorizable_call): If slp_node != NULL,
3188         don't replace scalar calls with setting of their lhs to zero here.
3189
3190         PR tree-optimization/51074
3191         * fold-const.c (vec_cst_ctor_to_array, fold_vec_perm): New functions.
3192         (fold_binary_loc): Handle VEC_EXTRACT_EVEN_EXPR,
3193         VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR and
3194         VEC_INTERLEAVE_LOW_EXPR with VECTOR_CST or CONSTRUCTOR operands.
3195         (fold_ternary_loc): Handle VEC_PERM_EXPR with VECTOR_CST or
3196         CONSTRUCTOR operands.
3197         * tree-ssa-propagate.c (valid_gimple_rhs_p): Handle ternary
3198         expressions.
3199         * tree-vect-generic.c (lower_vec_perm): Mask sel_int elements
3200         to 0 .. 2 * elements - 1.
3201
3202 2011-11-11  Richard Henderson  <rth@redhat.com>
3203
3204         * gimple-pretty-print.c (dump_gimple_omp_atomic_load): Dump needed.
3205         (dump_gimple_omp_atomic_store): Likewise.
3206         * optabs.c (can_atomic_exchange_p): New.
3207         * optabs.h (can_atomic_exchange_p): Declare.
3208         * omp-low.c (expand_omp_atomic_load): Implement.
3209         (expand_omp_atomic_store): Likewise.
3210         (expand_omp_atomic): Update for new arguments to load/store.
3211
3212 2011-11-11  Eric Botcazou  <ebotcazou@adacore.com>
3213
3214         * cprop.c: Adjust outdated comments throughout.
3215         (hash_scan_set): Rename PAT parameter into SET.
3216         (cprop_pavloc): Rename into...
3217         (cprop_avloc): ...this.
3218         (cprop_absaltered): Rename into...
3219         (cprop_kill): ...this.
3220         (alloc_cprop_mem): Adjust for above renaming.
3221         (free_cprop_mem): Likewise.
3222         (compute_cprop_data): Likewise.
3223         (compute_local_properties): Rename TRANSP parameter into KILL and
3224         adjust throughout.  Rework comments.
3225         (try_replace_reg): Fix long line.
3226         (cprop_jump): Likewise.
3227         (constprop_register): Fix prototype and take INSN last.
3228         (cprop_insn): Adjust calls to above function.  Fix long lines.
3229         (bypass_block): Likewise.
3230         (one_cprop_pass): Likewise.
3231
3232 2011-11-11  Uros Bizjak  <ubizjak@gmail.com>
3233
3234         * config/alpha/elf.h (ELF_ASCII_ESCAPES): Rename from ESCAPES.
3235         (ELF_STRING_LIMIT): Rename from STRING_LIMIT.
3236
3237 2011-11-11  Jason Merrill  <jason@redhat.com>
3238
3239         * varasm.c (default_elf_asm_output_limited_string): #ifdef
3240         ELF_ASCII_ESCAPES.
3241         (default_elf_asm_output_ascii): Likewise.
3242
3243 2011-11-11  Uros Bizjak  <ubizjak@gmail.com>
3244
3245         PR target/50762
3246         * config/i386/constraints.md (j): New address constraint.
3247         * config/i386/predicates.md (lea_address_operand): Redefine as
3248         special predicate.
3249         * config/i386/i386.md (*lea_3_zext): Use "j" constraint for operand 1.
3250         (*lea_4_zext): Ditto.
3251
3252 2011-11-11  David S. Miller  <davem@davemloft.net>
3253
3254         Revert
3255         2011-11-05  David S. Miller  <davem@davemloft.net>
3256
3257         * config/sparc/sparc.md (UNSPEC_SHORT_LOAD): New unspec.
3258         (zero-extend_v8qi_vis, zero_extend_v4hi_vis): New expanders.
3259         (*zero_extend_v8qi_<P:mode>_insn,
3260         *zero_extend_v4hi_<P:mode>_insn): New insns.
3261         * config/sparc/sparc.c (vector_init_move_words,
3262         vector_init_prepare_elts, sparc_expand_vector_init_vis2,
3263         sparc_expand_vector_init_vis1): New functions.
3264         (vector_init_bshuffle): Rewrite to handle more cases and make use
3265         of locs[] array prepared by vector_init_prepare_elts.
3266         (vector_init_fpmerge, vector_init_faligndata): Delete.
3267         (sparc_expand_vector_init): Rewrite using new infrastructure.
3268
3269 2011-11-11  Jakub Jelinek  <jakub@redhat.com>
3270
3271         * opts-common.c (generate_canonical_option): Free opt_text
3272         it it has been allocated here and not stored anywhere.
3273
3274         * tree-vect-slp.c (vect_free_slp_tree): Also free SLP_TREE_CHILDREN
3275         vector.
3276         (vect_create_new_slp_node): Don't allocate node before checking stmt
3277         type.
3278         (vect_free_oprnd_info): Remove FREE_DEF_STMTS argument, always
3279         free def_stmts vectors and additionally free oprnd_info.
3280         (vect_build_slp_tree): Adjust callers.  Call it even if
3281         stop_recursion.  If vect_create_new_slp_node or
3282         vect_build_slp_tree fails, properly handle freeing memory.
3283         If it succeeded, clear def_stmts in oprnd_info.
3284
3285 2011-11-11  Dimitrios Apostolou  <jimis@gmx.net>
3286
3287         * defaults.h (ASM_OUTPUT_LABEL, ASM_OUTPUT_INTERNAL_LABEL): Expand on
3288         multiple lines for readability.
3289         * output.h (fprint_whex, fprint_w, fprint_ul, sprint_ul): Declare.
3290         (ASM_OUTPUT_LABELREF): Call fputs instead of asm_fprintf.
3291         * dwarf2asm.c (dw2_assemble_integer, dw2_asm_output_data,
3292         dw2_asm_data_uleb128, dw2_asm_delta_uleb128,
3293         dw2_asm_delta_sleb128): Convert fprintf calls to the new functions.
3294         * dwarf2out.c (dwarf2out_source_line): Call fprint_ul instead of
3295         fprintf.
3296         * final.c (fprint_whex, fprint_w, fprint_ul, sprint_ul): New functions
3297         serving as fast replacements for fprintf integer to string conversions.
3298         (sprint_ul_rev): Internal helper for the above.
3299         (output_addr_const) <CONST_INT>: Don't use fprintf.
3300         * varasm.c: Fix some whitespace inconsistencies.
3301         (default_elf_asm_output_limited_string): New.
3302         (default_elf_asm_output_ascii): Likewise.
3303         (default_elf_internal_label): Likewise.
3304         * config/elfos.h (ASM_GENERATE_INTERNAL_LABEL): Use sprint_ul and
3305         stpcpy instead of sprintf.
3306         (TARGET_ASM_INTERNAL_LABEL): Define as default_elf_internal_label.
3307         (ELF_ASCII_ESCAPES, ELF_STRING_LIMIT): Rename from old ESCAPES and
3308         STRING_LIMIT macros.
3309         (ASM_OUTPUT_LIMITED_STRING, ASM_OUTPUT_ASCII): Call functions that
3310         provide the same functionality.
3311         * config/i386/i386.c (print_reg): Call fprint_ul instead of fprintf.
3312
3313 2011-11-10  Andrew MacLeod  <amacleod@redhat.com>
3314
3315         * doc/extend.texi: Document __atomic_test_and_set and __atomic_clear.
3316
3317 2011-11-10  Andrew MacLeod  <amacleod@redhat.com>
3318
3319         PR middle-end/51038
3320         * builtins.c (expand_builtin_atomic_clear): New.  Expand atomic_clear.
3321         (expand_builtin_atomic_test_and_set): New.  Expand atomic test_and_set.
3322         (expand_builtin): Add cases for test_and_set and clear.
3323         * sync-builtins.def (BUILT_IN_ATOMIC_TEST_AND_SET): New.
3324         (BUILT_IN_ATOMIC_CLEAR): New.
3325
3326 2011-11-10  Roberto Agostino Vitillo  <ravitillo@lbl.gov>
3327
3328         PR debug/50983
3329         * dwarf2out.c (set_cur_line_info_table): Restore the last is_stmt
3330         value in the current line table.
3331
3332 2011-11-10  Nathan Sidwell  <nathan@acm.org>
3333
3334         * gcov.c (struct function_info): Make src an index, not a pointer.
3335         (struct source_info): Remove index and next source fields.
3336         (fn_end): New static var.
3337         (sources_index): Remove.
3338         (sources): Now a pointer to an array, not a list.
3339         (n_sources, a_sources): New.
3340         (process_file): Adjust for changes to read_graph_file. Insert
3341         functions into source lists and check line numbers here.
3342         (generate_results): Only allocate lines for sources with
3343         contents.  Adjust for source array.
3344         (release_structures): Likewise.
3345         (find_source): Return source index, adjust for source array.
3346         (read_graph_file): Return function list.  Don't insert into source
3347         lists here.
3348         (read_count_file): Take list of functions.
3349         (solve_flow_graph): Reverse the arc lists here.
3350         (add_line_counts): Adjust for source array.
3351
3352 2011-11-10  Jakub Jelinek  <jakub@redhat.com>
3353
3354         PR middle-end/51077
3355         * tree-object-size.c (addr_object_size): Check TREE_CODE of
3356         MEM_REF's operand rather than code of the MEM_REF itself.
3357
3358 2011-11-10  Andrew MacLeod  <amacleod@redhat.com>
3359
3360         PR rtl-optimization/51040
3361         * optabs.c (expand_atomic_fetch_op): Patchup code for NAND should
3362         be AND followed by NOT.
3363         * builtins.c (expand_builtin_atomic_fetch_op): Patchup code for NAND
3364         should be AND followed by NOT.
3365
3366 2011-11-10  Jakub Jelinek  <jakub@redhat.com>
3367
3368         * vec.h (VEC_BASE): If base is at offset 0 in the structure,
3369         use &(P)->base even if P is NULL.
3370
3371         PR rtl-optimization/51023
3372         * combine.c (simplify_comparison) <case SIGN_EXTEND>: Don't use
3373         val_signbit_known_clear_p for signed comparison narrowing
3374         optimization.  Don't check for non-VOIDmode, use
3375         HWI_COMPUTABLE_MODE_P macro.
3376         <case ZERO_EXTEND>: Don't check for non-VOIDmode.
3377         Optimize even when const_op is equal to GET_MODE_MASK (mode),
3378         don't optimize if const_op is negative.
3379
3380 2011-11-10  Richard Guenther  <rguenther@suse.de>
3381
3382         PR tree-optimization/51042
3383         * tree-ssa-pre.c (phi_translate_1): Avoid recursing on
3384         self-referential expressions.  Refactor code to avoid duplication.
3385
3386 2011-11-10  Richard Guenther  <rguenther@suse.de>
3387
3388         PR tree-optimization/51070
3389         * tree-loop-distribution.c (generate_builtin): Do not replace
3390         the loop with a builtin if the partition contains statements which
3391         results are used outside of the loop.
3392         (pass_loop_distribution): Verify and collect.
3393
3394 2011-11-10  Richard Guenther  <rguenther@suse.de>
3395
3396         PR tree-optimization/51030
3397         * tree-ssa-phiopt.c (jump_function_from_stmt): New function.
3398         (value_replacement): Use it to handle trivial non-empty
3399         intermediate blocks.
3400
3401 2011-11-10  Richard Guenther  <rguenther@suse.de>
3402
3403         PR middle-end/51071
3404         * gimple.c (gimple_has_side_effects): Remove checking code
3405         that doesn't belong here.
3406
3407 2011-11-10  Ira Rosen  <ira.rosen@linaro.org>
3408
3409         PR tree-optimization/51058
3410         * tree-vect-slp.c (vect_get_constant_vectors): Handle CALL_EXPR.
3411
3412 2011-11-10  Jakub Jelinek  <jakub@redhat.com>
3413
3414         PR tree-optimization/51000
3415         * tree-vect-patterns.c (vect_recog_bool_pattern): If adding
3416         a pattern stmt for a bool store, adjust DR_STMT too.
3417         Don't handle bool conversions to single bit precision lhs.
3418         * tree-vect-stmts.c (vect_remove_stores): If next is a pattern
3419         stmt, remove its related stmt and free its stmt_vinfo.
3420         (free_stmt_vec_info): Free also pattern stmt's vinfo and
3421         pattern def stmt's vinfo.
3422         * tree-vect-loop.c (destroy_loop_vec_info): Don't try to
3423         free pattern stmt's vinfo here.
3424         (vect_transform_loop): When calling vect_remove_stores,
3425         do gsi_next first and don't call gsi_remove.  If not strided
3426         store, free stmt vinfo for gsi_stmt (si) rather than stmt.
3427
3428 2011-11-09  Jakub Jelinek  <jakub@redhat.com>
3429
3430         PR target/50911
3431         * config/i386/i386.c (expand_vec_perm_interleave2): If d->vmode is
3432         V4SImode, !TARGET_SSE2 and punpck[lh]* is needed, change dremap.vmode
3433         to V4SFmode.
3434
3435         * function.h (requires_stack_frame_p): New prototype.
3436         * function.c (requires_stack_frame_p): No longer static.
3437         * config/i386/i386.c (ix86_finalize_stack_realign_flags): If
3438         stack_realign_fp was just a conservative guess for a function
3439         which doesn't use sp/fp/argp at all, clear frame_pointer_needed
3440         and stack realignment.
3441
3442 2011-11-09  Paolo Carlini  <paolo.carlini@oracle.com>
3443
3444         PR preprocessor/51061
3445         * incpath.c (merge_include_chains): Make sure to not pass null
3446         pointers to free_path.