OSDN Git Service

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