OSDN Git Service

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