OSDN Git Service

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