2014-05-06 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / ChangeLog
blobe9c0b4f57d2b9f0a75666a7b5e28b6ed81099c3e
1 2014-05-06  Richard Biener  <rguenther@suse.de>
3         Backport from mainline
4         2014-04-14  Richard Biener  <rguenther@suse.de>
6         PR middle-end/55022
7         * fold-const.c (negate_expr_p): Don't negate directional rounding
8         division.
9         (fold_negate_expr): Likewise.
11 2014-05-06  Richard Biener  <rguenther@suse.de>
13         Backport from mainline
14         2014-04-17  Richard Biener  <rguenther@suse.de>
16         PR middle-end/60849
17         * tree-ssa-propagate.c (valid_gimple_rhs_p): Only allow effective
18         boolean results for comparisons.
20         2014-04-07  Richard Biener  <rguenther@suse.de>
22         PR tree-optimization/60766
23         * tree-ssa-loop-ivopts.c (cand_value_at): Compute in an
24         unsigned type.
25         (may_eliminate_iv): Convert cand_value_at result to desired
26         type.
28         2014-04-23  Richard Biener  <rguenther@suse.de>
30         PR tree-optimization/60903
31         * tree-ssa-loop-im.c (execute_sm_if_changed): Properly apply
32         IRREDUCIBLE_LOOP loop flags to newly created BBs and edges.
34 2014-05-05  Richard Biener  <rguenther@suse.de>
36         Backport from mainline
37         2014-04-23  Richard Biener  <rguenther@suse.de>
39         PR middle-end/60895
40         * tree-inline.c (declare_return_variable): Use mark_addressable.
42         2014-04-07  Richard Biener  <rguenther@suse.de>
44         PR middle-end/60750
45         * tree-ssa-operands.c (maybe_add_call_vops): Also add VDEFs
46         for noreturn calls.
47         * tree-cfgcleanup.c (fixup_noreturn_call): Do not remove VDEFs.
49         2014-04-14  Richard Biener  <rguenther@suse.de>
51         PR tree-optimization/59817
52         PR tree-optimization/60453
53         * graphite-scop-detection.c (graphite_can_represent_scev): Complete
54         recursion to catch all CHRECs in the scalar evolution and restrict
55         the predicate for the remains appropriately.
57         2014-04-17  Richard Biener  <rguenther@suse.de>
59         PR tree-optimization/60836
60         * tree-vect-loop.c (vect_create_epilog_for_reduction): Force
61         initial PHI args to be gimple values.
63 2014-05-05  Jakub Jelinek  <jakub@redhat.com>
65         Backported from mainline
66         2014-04-25  Jakub Jelinek  <jakub@redhat.com>
68         PR tree-optimization/60960
69         * tree-vect-generic.c (expand_vector_operation): Only call
70         expand_vector_divmod if type's mode satisfies VECTOR_MODE_P.
72 2014-05-04  Peter Bergner  <bergner@vnet.ibm.com>
74         * config/rs6000/rs6000.h (RS6000_BTM_HARD_FLOAT): New define.
75         (RS6000_BTM_COMMON): Add RS6000_BTM_HARD_FLOAT.
76         (TARGET_EXTRA_BUILTINS): Add TARGET_HARD_FLOAT.
77         * config/rs6000/rs6000-builtin.def (BU_MISC_1):
78         Use RS6000_BTM_HARD_FLOAT.
79         (BU_MISC_2): Likewise.
80         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Handle
81         RS6000_BTM_HARD_FLOAT.
82         (rs6000_option_override_internal): Enforce -mhard-float if -mhard-dfp
83         is explicitly used.
84         (rs6000_invalid_builtin): Add hard floating builtin support.
85         (rs6000_expand_builtin): Relax the gcc_assert to allow the new
86         hard float builtins.
87         (rs6000_builtin_mask_names): Add RS6000_BTM_HARD_FLOAT.
89 2014-05-03  Joey Ye  <joey.ye@arm.com>
91         Backport from mainline r209463
92         2014-04-17  Joey Ye  <joey.ye@arm.com>
94         * opts.c (OPT_fif_conversion, OPT_fif_conversion2): Disable for Og.
96 2014-05-03  Oleg Endo  <olegendo@gcc.gnu.org>
98         Back port from mainline
99         PR target/61026
100         * config/sh/sh.c: Include stdlib headers before everything else.
102 2014-05-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
104         PR tree-optimization/60930
105         * gimple-ssa-strength-reduction.c (create_mul_imm_cand):  Reject
106         creating a multiply candidate by folding two constant
107         multiplicands when the result overflows.
109 2014-05-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
111         * config/aarch64/aarch64.h (TARGET_SIMD): Take AARCH64_ISA_SIMD
112         into account.
113         (TARGET_FLOAT): Take AARCH64_ISA_FP into account.
115 2014-04-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
117         Back port from mainline
118         2014-04-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
120         * doc/extend.texi (PowerPC Built-in Functions): Document new
121         powerpc extended divide, bcd, pack/unpack 128-bit, builtin
122         functions.
123         (PowerPC AltiVec/VSX Built-in Functions): Likewise.
125         * config/rs6000/predicates.md (const_0_to_3_operand): New
126         predicate to match 0..3 integer constants.
128         * config/rs6000/rs6000-builtin.def (BU_DFP_MISC_1): Add new macros
129         to support adding miscellaneous builtin functions.
130         (BU_DFP_MISC_2): Likewise.
131         (BU_P7_MISC_1): Likewise.
132         (BU_P7_MISC_2): Likewise.
133         (BU_P8V_MISC_3): Likewise.
134         (BU_MISC_1): Likewise.
135         (BU_MISC_2): Likewise.
136         (DIVWE): Add extended divide builtin functions.
137         (DIVWEO): Likewise.
138         (DIVWEU): Likewise.
139         (DIVWEUO): Likewise.
140         (DIVDE): Likewise.
141         (DIVDEO): Likewise.
142         (DIVDEU): Likewise.
143         (DIVDEUO): Likewise.
144         (DXEX): Add decimal floating-point builtin functions.
145         (DXEXQ): Likewise.
146         (DDEDPD): Likewise.
147         (DDEDPDQ): Likewise.
148         (DENBCD): Likewise.
149         (DENBCDQ): Likewise.
150         (DIEX): Likewise.
151         (DIEXQ): Likewise.
152         (DSCLI): Likewise.
153         (DSCLIQ): Likewise.
154         (DSCRI): Likewise.
155         (DSCRIQ): Likewise.
156         (CDTBCD): Add new BCD builtin functions.
157         (CBCDTD): Likewise.
158         (ADDG6S): Likewise.
159         (BCDADD): Likewise.
160         (BCDADD_LT): Likewise.
161         (BCDADD_EQ): Likewise.
162         (BCDADD_GT): Likewise.
163         (BCDADD_OV): Likewise.
164         (BCDSUB): Likewise.
165         (BCDSUB_LT): Likewise.
166         (BCDSUB_EQ): Likewise.
167         (BCDSUB_GT): Likewise.
168         (BCDSUB_OV): Likewise.
169         (PACK_TD): Add new pack/unpack 128-bit type builtin functions.
170         (UNPACK_TD): Likewise.
171         (PACK_TF): Likewise.
172         (UNPACK_TF): Likewise.
173         (UNPACK_TF_0): Likewise.
174         (UNPACK_TF_1): Likewise.
175         (PACK_V1TI): Likewise.
176         (UNPACK_V1TI): Likewise.
178         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
179         support for decimal floating point builtin functions.
180         (rs6000_expand_ternop_builtin): Add checks for the new builtin
181         functions that take constant arguments.
182         (rs6000_invalid_builtin): Add decimal floating point builtin
183         support.
184         (rs6000_init_builtins): Setup long double, _Decimal64, and
185         _Decimal128 types for new builtin functions.
186         (builtin_function_type): Set the unsigned flags appropriately for
187         the new builtin functions.
188         (rs6000_opt_masks): Add support for decimal floating point builtin
189         functions.
191         * config/rs6000/rs6000.h (RS6000_BTM_DFP): Add support for decimal
192         floating point builtin functions.
193         (RS6000_BTM_COMMON): Likewise.
194         (RS6000_BTI_long_double): Likewise.
195         (RS6000_BTI_dfloat64): Likewise.
196         (RS6000_BTI_dfloat128): Likewise.
197         (long_double_type_internal_node): Likewise.
198         (dfloat64_type_internal_node): Likewise.
199         (dfloat128_type_internal_node): Likewise.
201         * config/rs6000/altivec.h (UNSPEC_BCDADD): Add support for ISA
202         2.07 bcd arithmetic instructions.
203         (UNSPEC_BCDSUB): Likewise.
204         (UNSPEC_BCD_OVERFLOW): Likewise.
205         (UNSPEC_BCD_ADD_SUB): Likewise.
206         (bcd_add_sub): Likewise.
207         (BCD_TEST): Likewise.
208         (bcd<bcd_add_sub>): Likewise.
209         (bcd<bcd_add_sub>_test): Likewise.
210         (bcd<bcd_add_sub>_test2): Likewise.
211         (bcd<bcd_add_sub>_<code>): Likewise.
212         (peephole2 for combined bcd ops): Likewise.
214         * config/rs6000/dfp.md (UNSPEC_DDEDPD): Add support for new
215         decimal floating point builtin functions.
216         (UNSPEC_DENBCD): Likewise.
217         (UNSPEC_DXEX): Likewise.
218         (UNSPEC_DIEX): Likewise.
219         (UNSPEC_DSCLI): Likewise.
220         (UNSPEC_DSCRI): Likewise.
221         (D64_D128): Likewise.
222         (dfp_suffix): Likewise.
223         (dfp_ddedpd_<mode>): Likewise.
224         (dfp_denbcd_<mode>): Likewise.
225         (dfp_dxex_<mode>): Likewise.
226         (dfp_diex_<mode>): Likewise.
227         (dfp_dscli_<mode>): Likewise.
228         (dfp_dscri_<mode>): Likewise.
230         * config/rs6000/rs6000.md (UNSPEC_ADDG6S): Add support for new BCD
231         builtin functions.
232         (UNSPEC_CDTBCD): Likewise.
233         (UNSPEC_CBCDTD): Likewise.
234         (UNSPEC_DIVE): Add support for new extended divide builtin
235         functions.
236         (UNSPEC_DIVEO): Likewise.
237         (UNSPEC_DIVEU): Likewise.
238         (UNSPEC_DIVEUO): Likewise.
239         (UNSPEC_UNPACK_128BIT): Add support for new builtin functions to
240         pack/unpack 128-bit types.
241         (UNSPEC_PACK_128BIT): Likewise.
242         (idiv_ldiv): New mode attribute to set the 32/64-bit divide type.
243         (udiv<mode>3): Use idiv_ldiv mode attribute.
244         (div<mode>3): Likewise.
245         (addg6s): Add new BCD builtin functions.
246         (cdtbcd): Likewise.
247         (cbcdtd): Likewise.
248         (UNSPEC_DIV_EXTEND): Add support for new extended divide
249         instructions.
250         (div_extend): Likewise.
251         (div<div_extend>_<mode>"): Likewise.
252         (FP128_64): Add support for new builtin functions to pack/unpack
253         128-bit types.
254         (unpack<mode>): Likewise.
255         (unpacktf_0): Likewise.
256         (unpacktf_1): Likewise.
257         (unpack<mode>_dm): Likewise.
258         (unpack<mode>_nodm): Likewise.
259         (pack<mode>): Likewise.
260         (unpackv1ti): Likewise.
261         (packv1ti): Likewise.
263 2014-04-29  Pat Haugen  <pthaugen@us.ibm.com>
265         Backport from mainline
266         2014-04-17  Pat Haugen  <pthaugen@us.ibm.com>
268         * config/rs6000/rs6000.md (addti3, subti3): New.
270 2014-04-28  Pat Haugen  <pthaugen@us.ibm.com>
272         Backport from mainline
273         2014-04-28  Pat Haugen  <pthaugen@us.ibm.com>
275         * config/rs6000/sync.md (AINT mode_iterator): Move definition.
276         (loadsync_<mode>): Change mode.
277         (load_quadpti, store_quadpti): New.
278         (atomic_load<mode>, atomic_store<mode>): Add support for TI mode.
279         * config/rs6000/rs6000.md (unspec enum): Add UNSPEC_LSQ.
281 2014-04-28  Eric Botcazou  <ebotcazou@adacore.com>
283         * configure.ac: Tweak GAS check for LEON instructions on SPARC.
284         * configure: Regenerate.
285         * config/sparc/sparc.opt (muser-mode): New option.
286         * config/sparc/sync.md (atomic_compare_and_swap<mode>_1): Do not enable
287         for LEON3.
288         (atomic_compare_and_swap_leon3_1): New instruction for LEON3.
289         * doc/invoke.texi (SPARC options): Document -muser-mode.
291 2014-04-25  Eric Botcazou  <ebotcazou@adacore.com>
293         PR target/60941
294         * config/sparc/sparc.md (ashlsi3_extend): Delete.
296 2014-04-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
298         Back port from main line:
299         2014-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
301         * config/rs6000/rs6000-builtins.def (VBPERMQ): Add vbpermq builtin
302         for ISA 2.07.
304         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
305         vbpermq builtins.
307         * config/rs6000/altivec.md (UNSPEC_VBPERMQ): Add support for the
308         vbpermq instruction.
309         (altivec_vbpermq): Likewise.
311         PR target/60672
312         * config/rs6000/altivec.h (vec_xxsldwi): Add missing define to
313         enable use of xxsldwi and xxpermdi builtin functions.
314         (vec_xxpermdi): Likewise.
316         * doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions):
317         Document use of vec_xxsldwi and vec_xxpermdi builtins.
319 2014-04-23  Uros Bizjak  <ubizjak@gmail.com>
321         Backport from mainline
322         2014-04-21  Uros Bizjak  <ubizjak@gmail.com>
324         PR target/60909
325         * config/i386/i386.c (ix86_expand_builtin)
326         <case IX86_BUILTIN_RDRAND{16,32,64}_STEP>: Use temporary
327         register for target RTX.
328         <case IX86_BUILTIN_RDSEED{16,32,64}_STEP>: Ditto.
330 2014-04-23  Richard Biener  <rguenther@suse.de>
332         Backport from mainline
333         2014-04-02  Richard Biener  <rguenther@suse.de>
335         PR middle-end/60729
336         * optabs.c (expand_abs_nojump): Honor flag_trapv only for
337         MODE_INTs.  Properly use negv_optab.
338         (expand_abs): Likewise.
340         2014-04-03  Richard Biener  <rguenther@suse.de>
342         PR tree-optimization/60740
343         * graphite-scop-detection.c (stmt_simple_for_scop_p): Iterate
344         over all GIMPLE_COND operands.
346 2014-04-23  Richard Biener  <rguenther@suse.de>
348         PR middle-end/60635
349         * gimplify.c (gimple_regimplify_operands): Update the
350         re-gimplifed stmt.
352 2014-04-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
354         Back port from the trunk, subversion id 209546.
356         2014-04-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
358         PR target/60735
359         * config/rs6000/rs6000.md (mov<mode>_softfloat32, FMOVE64 case):
360         If mode is DDmode and TARGET_E500_DOUBLE allow move.
362         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Print some
363         more debug information for E500 if -mdebug=reg.
365 2014-04-18  Richard Henderson  <rth@redhat.com>
367         * config/aarch64/aarch64.c (aarch64_register_move_cost): Pass a mode
368         to GET_MODE_SIZE, not a reg_class_t.
370 2014-04-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
372         * config/rs6000/vsx.md (vsx_xxmrghw_<mode>): Adjust for
373         little-endian.
374         (vsx_xxmrglw_<mode>): Likewise.
376 2014-04-15  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
378         PR target/60839
379         Revert the following patch
381         2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
383         Back port mainline subversion id 209025.
384         2014-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
386         PR target/60735
387         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): If we have
388         software floating point or no floating point registers, do not
389         allow any type in the FPRs.  Eliminate a test for SPE SIMD types
390         in GPRs that occurs after we tested for GPRs that would never be
391         true.
393         * config/rs6000/rs6000.md (mov<mode>_softfloat32, FMOVE64):
394         Rewrite tests to use TARGET_DOUBLE_FLOAT and TARGET_E500_DOUBLE,
395         since the FMOVE64 type is DFmode/DDmode.  If TARGET_E500_DOUBLE,
396         specifically allow DDmode, since that does not use the SPE SIMD
397         instructions.
399 2014-04-10  Vladimir Makarov  <vmakarov@redhat.com>
401         PR rtl-optimization/60769
402         * lra-constraints.c (simplify_operand_subreg): Force reload of
403         paradoxical subreg if it is not in the class contents.
405 2014-04-10  Jakub Jelinek  <jakub@redhat.com>
407         Backport from mainline
408         2014-03-12  Jakub Jelinek  <jakub@redhat.com>
409                     Marc Glisse  <marc.glisse@inria.fr>
411         PR tree-optimization/60502
412         * tree-ssa-reassoc.c (eliminate_not_pairs): Use build_all_ones_cst
413         instead of build_low_bits_mask.
415         2013-06-13  Marc Glisse  <marc.glisse@inria.fr>
417         * tree.c (build_all_ones_cst): New function.
418         * tree.h (build_all_ones_cst): Declare it.
420         2013-05-10  Marc Glisse  <marc.glisse@inria.fr>
422         * tree.c (build_minus_one_cst): New function.
423         * tree.h (build_minus_one_cst): Declare new function.
425 2014-04-10  Jakub Jelinek  <jakub@redhat.com>
427         Backport from mainline
428         2014-03-28  Jakub Jelinek  <jakub@redhat.com>
430         PR target/60693
431         * config/i386/i386.c (ix86_copy_addr_to_reg): Call copy_addr_to_reg
432         also if addr has VOIDmode.
434         2014-03-17  Jakub Jelinek  <jakub@redhat.com>
436         PR target/60516
437         * config/i386/i386.c (ix86_expand_epilogue): Adjust REG_CFA_ADJUST_CFA
438         note creation for the 2010-08-31 changes.
440         2014-03-06  Jakub Jelinek  <jakub@redhat.com>
441                     Meador Inge  <meadori@codesourcery.com>
443         PR target/58595
444         * config/arm/arm.c (arm_tls_symbol_p): Remove.
445         (arm_legitimize_address): Call legitimize_tls_address for any
446         arm_tls_referenced_p expression, handle constant addend.  Call it
447         before testing for !TARGET_ARM.
448         (thumb_legitimize_address): Don't handle arm_tls_symbol_p here.
450 2014-04-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
452         Backport from mainline r208750
453         2014-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
455         * config/rs6000/rs6000.c (rs6000_expand_vector_set):  Generate a
456         pattern for vector nor instead of subtract from splat(-1).
457         (altivec_expand_vec_perm_const_le): Likewise.
459         Backport from mainline r209235
460         2014-04-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
462         * config/rs6000/rs6000.c (rs6000_expand_vector_set): Use vnand
463         instead of vnor to exploit possible fusion opportunity in the
464         future.
465         (altivec_expand_vec_perm_const_le): Likewise.
467 2014-04-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
469         Revert following patch
470         2014-04-08  Pat Haugen  <pthaugen@us.ibm.com>
472         Backport from mainline
473         2014-04-08  Pat Haugen  <pthaugen@us.ibm.com>
475         * config/rs6000/sync.md (AINT mode_iterator): Move definition.
476         (loadsync_<mode>): Change mode.
477         (load_quadpti, store_quadpti): New.
478         (atomic_load<mode>, atomic_store<mode>): Add support for TI mode.
479         * config/rs6000/rs6000.md (unspec enum): Add UNSPEC_LSQ.
481 2014-04-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
483         Backport from mainline r202642
484         2013-09-17  Alan Modra  <amodra@gmail.com>
486         PR target/57589
487         * config/rs6000/driver-rs6000.c (elf_platform): Revert 2013-06-11
488         patch (r199972).
490 2014-04-08  Pat Haugen  <pthaugen@us.ibm.com>
492         Backport from mainline
493         2014-04-08  Pat Haugen  <pthaugen@us.ibm.com>
495         * config/rs6000/sync.md (AINT mode_iterator): Move definition.
496         (loadsync_<mode>): Change mode.
497         (load_quadpti, store_quadpti): New.
498         (atomic_load<mode>, atomic_store<mode>): Add support for TI mode.
499         * config/rs6000/rs6000.md (unspec enum): Add UNSPEC_LSQ.
501 2014-04-07  Martin Jambor  <mjambor@suse.cz>
503         PR ipa/60640
504         * ipa-cp.c (propagate_constants_accross_call): Do not propagate
505         accross thunks.
507 2014-04-07  Dominique d'Humieres <dominiq@lps.ens.fr>
509         Backport from mainline
510         2013-09-14  Iain Sandoe <iains@gcc.gnu.org>
512         PR target/48094
513         * config/darwin.c (darwin_objc2_section): Note if ObjC Metadata
514         is seen.
515         (darwin_objc1_section): Likewise.
516         (darwin_file_end): Emit Image Info section when required.
518 2014-04-05  Alan Modra  <amodra@gmail.com>
520         Apply from mainline
521         2014-01-28  Alan Modra  <amodra@gmail.com>
522         * Makefile.in (BUILD_CPPFLAGS): Do not use ALL_CPPFLAGS.
523         * configure.ac <recursive call for build != host>: Define
524         GENERATOR_FILE.  Comment.  Use CXX_FOR_BUILD, CXXFLAGS_FOR_BUILD
525         and LD_FOR_BUILD too.
526         * configure: Regenerate.
528 2014-04-04  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
530         Backport from mainline r208895:
531         2014-03-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
533         * config/rs6000/rs6000.c (fusion_gpr_load_p): Refuse optimization
534         if it would clobber the stack pointer, even temporarily.
536 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
538         Back port from main line:
539         2014-04-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
541         * doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions):
542         Document vec_vgbbd.
544 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
546         Back port mainline subversion id 209025.
547         2014-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
549         PR target/60735
550         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): If we have
551         software floating point or no floating point registers, do not
552         allow any type in the FPRs.  Eliminate a test for SPE SIMD types
553         in GPRs that occurs after we tested for GPRs that would never be
554         true.
556         * config/rs6000/rs6000.md (mov<mode>_softfloat32, FMOVE64):
557         Rewrite tests to use TARGET_DOUBLE_FLOAT and TARGET_E500_DOUBLE,
558         since the FMOVE64 type is DFmode/DDmode.  If TARGET_E500_DOUBLE,
559         specifically allow DDmode, since that does not use the SPE SIMD
560         instructions.
562 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
564         Backport from mainline r205308
565         2013-11-23  David Edelsohn  <dje.gcc@gmail.com>
567         * config/rs6000/rs6000.c (IN_NAMED_SECTION): New macro.
568         (rs6000_xcoff_select_section): Place decls with stricter alignment
569         into named sections.
570         (rs6000_xcoff_unique_section): Allow unique sections for
571         uninitialized data with strict alignment.
573 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
575         Backport from mainline
576         2013-11-15  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
578         * gcc/configure: Regenerate.
580 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
582         Back port from trunk
583         2013-04-25  Alan Modra  <amodra@gmail.com>
585         PR target/57052
586         * config/rs6000/rs6000.md (rotlsi3_internal7): Rename to
587         rotlsi3_internal7le and condition on !BYTES_BIG_ENDIAN.
588         (rotlsi3_internal8be): New BYTES_BIG_ENDIAN insn.
589         Repeat for many other rotate/shift and mask patterns using subregs.
590         Name lshiftrt insns.
591         (ashrdisi3_noppc64): Rename to ashrdisi3_noppc64be and condition
592         on WORDS_BIG_ENDIAN.
594         2013-06-07  Alan Modra  <amodra@gmail.com>
596         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
597         override user -mfp-in-toc.
598         (offsettable_ok_by_alignment): Consider just the current access
599         rather than the whole object, unless BLKmode.  Handle
600         CONSTANT_POOL_ADDRESS_P constants that lack a decl too.
601         (use_toc_relative_ref): Allow CONSTANT_POOL_ADDRESS_P constants
602         for -mcmodel=medium.
603         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Don't
604         override user -mfp-in-toc or -msum-in-toc.  Default to
605         -mno-fp-in-toc for -mcmodel=medium.
607         2013-06-18  Alan Modra  <amodra@gmail.com>
609         * config/rs6000/rs6000.h (enum data_align): New.
610         (LOCAL_ALIGNMENT, DATA_ALIGNMENT): Use rs6000_data_alignment.
611         (DATA_ABI_ALIGNMENT): Define.
612         (CONSTANT_ALIGNMENT): Correct comment.
613         * config/rs6000/rs6000-protos.h (rs6000_data_alignment): Declare.
614         * config/rs6000/rs6000.c (rs6000_data_alignment): New function.
616         2013-07-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
618         * config/rs6000/rs6000.md (""*tls_gd_low<TLSmode:tls_abi_suffix>"):
619         Require GOT register as additional operand in UNSPEC.
620         ("*tls_ld_low<TLSmode:tls_abi_suffix>"): Likewise.
621         ("*tls_got_dtprel_low<TLSmode:tls_abi_suffix>"): Likewise.
622         ("*tls_got_tprel_low<TLSmode:tls_abi_suffix>"): Likewise.
623         ("*tls_gd<TLSmode:tls_abi_suffix>"): Update splitter.
624         ("*tls_ld<TLSmode:tls_abi_suffix>"): Likewise.
625         ("tls_got_dtprel_<TLSmode:tls_abi_suffix>"): Likewise.
626         ("tls_got_tprel_<TLSmode:tls_abi_suffix>"): Likewise.
628         2014-01-23  Pat Haugen  <pthaugen@us.ibm.com>
630         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
631         force flag_ira_loop_pressure if set via command line.
633         2014-02-06  Alan Modra  <amodra@gmail.com>
635         PR target/60032
636         * config/rs6000/rs6000.c (rs6000_secondary_memory_needed_mode): Only
637         change SDmode to DDmode when lra_in_progress.
639 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
641         V1TImode Support
642         Back port from trunk
643         2014-03-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
645         * config/rs6000/vector.md (VEC_L): Add V1TI mode to vector types.
646         (VEC_M): Likewise.
647         (VEC_N): Likewise.
648         (VEC_R): Likewise.
649         (VEC_base): Likewise.
650         (mov<MODE>, VEC_M modes): If we are loading TImode into VSX
651         registers, we need to swap double words in little endian mode.
653         * config/rs6000/rs6000-modes.def (V1TImode): Add new vector mode
654         to be a container mode for 128-bit integer operations added in ISA
655         2.07.  Unlike TImode and PTImode, the preferred register set is
656         the Altivec/VMX registers for the 128-bit operations.
658         * config/rs6000/rs6000-protos.h (rs6000_move_128bit_ok_p): Add
659         declarations.
660         (rs6000_split_128bit_ok_p): Likewise.
662         * config/rs6000/rs6000-builtin.def (BU_P8V_AV_3): Add new support
663         macros for creating ISA 2.07 normal and overloaded builtin
664         functions with 3 arguments.
665         (BU_P8V_OVERLOAD_3): Likewise.
666         (VPERM_1T): Add support for V1TImode in 128-bit vector operations
667         for use as overloaded functions.
668         (VPERM_1TI_UNS): Likewise.
669         (VSEL_1TI): Likewise.
670         (VSEL_1TI_UNS): Likewise.
671         (ST_INTERNAL_1ti): Likewise.
672         (LD_INTERNAL_1ti): Likewise.
673         (XXSEL_1TI): Likewise.
674         (XXSEL_1TI_UNS): Likewise.
675         (VPERM_1TI): Likewise.
676         (VPERM_1TI_UNS): Likewise.
677         (XXPERMDI_1TI): Likewise.
678         (SET_1TI): Likewise.
679         (LXVD2X_V1TI): Likewise.
680         (STXVD2X_V1TI): Likewise.
681         (VEC_INIT_V1TI): Likewise.
682         (VEC_SET_V1TI): Likewise.
683         (VEC_EXT_V1TI): Likewise.
684         (EQV_V1TI): Likewise.
685         (NAND_V1TI): Likewise.
686         (ORC_V1TI): Likewise.
687         (VADDCUQ): Add support for 128-bit integer arithmetic instructions
688         added in ISA 2.07.  Add both normal 'altivec' builtins, and the
689         overloaded builtin.
690         (VADDUQM): Likewise.
691         (VSUBCUQ): Likewise.
692         (VADDEUQM): Likewise.
693         (VADDECUQ): Likewise.
694         (VSUBEUQM): Likewise.
695         (VSUBECUQ): Likewise.
697         * config/rs6000/rs6000-c.c (__int128_type): New static to hold
698         __int128_t and __uint128_t types.
699         (__uint128_type): Likewise.
700         (altivec_categorize_keyword): Add support for vector __int128_t,
701         vector __uint128_t, vector __int128, and vector unsigned __int128
702         as a container type for TImode operations that need to be done in
703         VSX/Altivec registers.
704         (rs6000_macro_to_expand): Likewise.
705         (altivec_overloaded_builtins): Add ISA 2.07 overloaded functions
706         to support 128-bit integer instructions vaddcuq, vadduqm,
707         vaddecuq, vaddeuqm, vsubcuq, vsubuqm, vsubecuq, vsubeuqm.
708         (altivec_resolve_overloaded_builtin): Add support for V1TImode.
710         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Add support
711         for V1TImode, and set up preferences to use VSX/Altivec
712         registers.  Setup VSX reload handlers.
713         (rs6000_debug_reg_global): Likewise.
714         (rs6000_init_hard_regno_mode_ok): Likewise.
715         (rs6000_preferred_simd_mode): Likewise.
716         (vspltis_constant): Do not allow V1TImode as easy altivec
717         constants.
718         (easy_altivec_constant): Likewise.
719         (output_vec_const_move): Likewise.
720         (rs6000_expand_vector_set): Convert V1TImode set and extract to
721         simple move.
722         (rs6000_expand_vector_extract): Likewise.
723         (reg_offset_addressing_ok_p): Setup V1TImode to use VSX reg+reg
724         addressing.
725         (rs6000_const_vec): Add support for V1TImode.
726         (rs6000_emit_le_vsx_load): Swap double words when loading or
727         storing TImode/V1TImode.
728         (rs6000_emit_le_vsx_store): Likewise.
729         (rs6000_emit_le_vsx_move): Likewise.
730         (rs6000_emit_move): Add support for V1TImode.
731         (altivec_expand_ld_builtin): Likewise.
732         (altivec_expand_st_builtin): Likewise.
733         (altivec_expand_vec_init_builtin): Likewise.
734         (altivec_expand_builtin): Likewise.
735         (rs6000_init_builtins): Add support for V1TImode type.  Add
736         support for ISA 2.07 128-bit integer builtins.  Define type names
737         for the VSX/Altivec vector types.
738         (altivec_init_builtins): Add support for overloaded vector
739         functions with V1TImode type.
740         (rs6000_preferred_reload_class): Prefer Altivec registers for
741         V1TImode.
742         (rs6000_move_128bit_ok_p): Move 128-bit move/split validation to
743         external function.
744         (rs6000_split_128bit_ok_p): Likewise.
745         (rs6000_handle_altivec_attribute): Create V1TImode from vector
746         __int128_t and vector __uint128_t.
748         * config/rs6000/vsx.md (VSX_L): Add V1TImode to vector iterators
749         and mode attributes.
750         (VSX_M): Likewise.
751         (VSX_M2): Likewise.
752         (VSm): Likewise.
753         (VSs): Likewise.
754         (VSr): Likewise.
755         (VSv): Likewise.
756         (VS_scalar): Likewise.
757         (VS_double): Likewise.
758         (vsx_set_v1ti): New builtin function to create V1TImode from
759         TImode.
761         * config/rs6000/rs6000.h (TARGET_VADDUQM): New macro to say
762         whether we support the ISA 2.07 128-bit integer arithmetic
763         instructions.
764         (ALTIVEC_OR_VSX_VECTOR_MODE): Add V1TImode.
765         (enum rs6000_builtin_type_index): Add fields to hold V1TImode
766         and TImode types for use with the builtin functions.
767         (V1TI_type_node): Likewise.
768         (unsigned_V1TI_type_node): Likewise.
769         (intTI_type_internal_node): Likewise.
770         (uintTI_type_internal_node): Likewise.
772         * config/rs6000/altivec.md (UNSPEC_VADDCUQ): New unspecs for ISA
773         2.07 128-bit builtin functions.
774         (UNSPEC_VADDEUQM): Likewise.
775         (UNSPEC_VADDECUQ): Likewise.
776         (UNSPEC_VSUBCUQ): Likewise.
777         (UNSPEC_VSUBEUQM): Likewise.
778         (UNSPEC_VSUBECUQ): Likewise.
779         (VM): Add V1TImode to vector mode iterators.
780         (VM2): Likewise.
781         (VI_unit): Likewise.
782         (altivec_vadduqm): Add ISA 2.07 128-bit binary builtins.
783         (altivec_vaddcuq): Likewise.
784         (altivec_vsubuqm): Likewise.
785         (altivec_vsubcuq): Likewise.
786         (altivec_vaddeuqm): Likewise.
787         (altivec_vaddecuq): Likewise.
788         (altivec_vsubeuqm): Likewise.
789         (altivec_vsubecuq): Likewise.
791         * config/rs6000/rs6000.md (FMOVE128_GPR): Add V1TImode to vector
792         mode iterators.
793         (BOOL_128): Likewise.
794         (BOOL_REGS_OUTPUT): Likewise.
795         (BOOL_REGS_OP1): Likewise.
796         (BOOL_REGS_OP2): Likewise.
797         (BOOL_REGS_UNARY): Likewise.
798         (BOOL_REGS_AND_CR0): Likewise.
800         * config/rs6000/altivec.h (vec_vaddcuq): Add support for ISA 2.07
801         128-bit integer builtin support.
802         (vec_vadduqm): Likewise.
803         (vec_vaddecuq): Likewise.
804         (vec_vaddeuqm): Likewise.
805         (vec_vsubecuq): Likewise.
806         (vec_vsubeuqm): Likewise.
807         (vec_vsubcuq): Likewise.
808         (vec_vsubuqm): Likewise.
810         * doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions):
811         Document vec_vaddcuq, vec_vadduqm, vec_vaddecuq, vec_vaddeuqm,
812         vec_subecuq, vec_subeuqm, vec_vsubcuq, vec_vsubeqm builtins adding
813         128-bit integer add/subtract to ISA 2.07.
815 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
817         Apply mainline r207798
818         2014-02-26  Alan Modra  <amodra@gmail.com>
819         PR target/58675
820         PR target/57935
821         * config/rs6000/rs6000.c (rs6000_secondary_reload_inner): Use
822         find_replacement on parts of insn rtl that might be reloaded.
824         Backport from mainline r208287
825         2014-03-03  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
827         * config/rs6000/rs6000.c (rs6000_preferred_reload_class): Disallow
828         reload of PLUS rtx's outside of GENERAL_REGS or BASE_REGS; relax
829         constraint on constants to permit them being loaded into
830         GENERAL_REGS or BASE_REGS.
832 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
834         Backport from mainline r207699.
835         2014-02-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
837         PR target/60137
838         * config/rs6000/rs6000.md (128-bit GPR splitter): Add a splitter
839         for VSX/Altivec vectors that land in GPR registers.
841         Backport from mainline r207808.
842         2014-02-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
844         PR target/60203
845         * config/rs6000/rs6000.md (rreg): Add TFmode, TDmode constraints.
846         (mov<mode>_internal, TFmode/TDmode): Split TFmode/TDmode moves
847         into 64-bit and 32-bit moves.  On 64-bit moves, add support for
848         using direct move instructions on ISA 2.07.  Also adjust
849         instruction length for 64-bit.
850         (mov<mode>_64bit, TFmode/TDmode): Likewise.
851         (mov<mode>_32bit, TFmode/TDmode): Likewise.
853         Backport from mainline r207868.
854         2014-02-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
856         PR target/60203
857         * config/rs6000/rs6000.md (mov<mode>_64bit, TF/TDmode moves):
858         Split 64-bit moves into 2 patterns.  Do not allow the use of
859         direct move for TDmode in little endian, since the decimal value
860         has little endian bytes within a word, but the 64-bit pieces are
861         ordered in a big endian fashion, and normal subreg's of TDmode are
862         not allowed.
863         (mov<mode>_64bit_dm): Likewise.
864         (movtd_64bit_nodm): Likewise.
866 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
868         Backport from mainline r207658
869         2014-02-06  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
871         * config/rs6000/sysv4.h (ENDIAN_SELECT): Do not attempt to enforce
872         big-endian mode for -mcall-aixdesc, -mcall-freebsd, -mcall-netbsd,
873         -mcall-openbsd, or -mcall-linux.
874         (CC1_ENDIAN_BIG_SPEC): Remove.
875         (CC1_ENDIAN_LITTLE_SPEC): Remove.
876         (CC1_ENDIAN_DEFAULT_SPEC): Remove.
877         (CC1_SPEC): Remove (always empty) %cc1_endian_... spec.
878         (SUBTARGET_EXTRA_SPECS): Remove %cc1_endian_big, %cc1_endian_little,
879         and %cc1_endian_default.
880         * config/rs6000/sysv4le.h (CC1_ENDIAN_DEFAULT_SPEC): Remove.
882 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
884         Little Endian Vector API Support
885         Backport from mainline r206443
886         2014-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
888         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
889         two duplicate entries.
891         Backport from mainline r206494
892         2014-01-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
894         * doc/invoke.texi: Add -maltivec={be,le} options, and document
895         default element-order behavior for -maltivec.
896         * config/rs6000/rs6000.opt: Add -maltivec={be,le} options.
897         * config/rs6000/rs6000.c (rs6000_option_override_internal): Ensure
898         that -maltivec={le,be} implies -maltivec; disallow -maltivec=le
899         when targeting big endian, at least for now.
900         * config/rs6000/rs6000.h: Add #define of VECTOR_ELT_ORDER_BIG.
902         Backport from mainline r206541
903         2014-01-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
905         * config/rs6000/rs6000-builtin.def: Fix pasto for VPKSDUS.
907         Backport from mainline r206590
908         2014-01-13  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
910         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
911         Implement -maltivec=be for vec_insert and vec_extract.
913         Backport from mainline r206641
914         2014-01-15  Bill Schmidt  <wschmidt@vnet.linux.ibm.com>
916         * config/rs6000/altivec.md (mulv8hi3): Explicitly generate vmulesh
917         and vmulosh rather than call gen_vec_widen_smult_*.
918         (vec_widen_umult_even_v16qi): Test VECTOR_ELT_ORDER_BIG rather
919         than BYTES_BIG_ENDIAN to determine use of even or odd instruction.
920         (vec_widen_smult_even_v16qi): Likewise.
921         (vec_widen_umult_even_v8hi): Likewise.
922         (vec_widen_smult_even_v8hi): Likewise.
923         (vec_widen_umult_odd_v16qi): Likewise.
924         (vec_widen_smult_odd_v16qi): Likewise.
925         (vec_widen_umult_odd_v8hi): Likewise.
926         (vec_widen_smult_odd_v8hi): Likewise.
927         (vec_widen_umult_hi_v16qi): Explicitly generate vmuleub and
928         vmuloub rather than call gen_vec_widen_umult_*.
929         (vec_widen_umult_lo_v16qi): Likewise.
930         (vec_widen_smult_hi_v16qi): Explicitly generate vmulesb and
931         vmulosb rather than call gen_vec_widen_smult_*.
932         (vec_widen_smult_lo_v16qi): Likewise.
933         (vec_widen_umult_hi_v8hi): Explicitly generate vmuleuh and vmulouh
934         rather than call gen_vec_widen_umult_*.
935         (vec_widen_umult_lo_v8hi): Likewise.
936         (vec_widen_smult_hi_v8hi): Explicitly gnerate vmulesh and vmulosh
937         rather than call gen_vec_widen_smult_*.
938         (vec_widen_smult_lo_v8hi): Likewise.
940         Backport from mainline r207062
941         2014-01-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
943         * config/rs6000/rs6000.c (rs6000_expand_vec_perm_const_1): Remove
944         correction for little endian...
945         * config/rs6000/vsx.md (vsx_xxpermdi2_<mode>_1): ...and move it to
946         here.
948         Backport from mainline r207262
949         2014-01-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
951         * config/rs6000/rs6000.c (altivec_expand_vec_perm_const):  Use
952         CODE_FOR_altivec_vmrg*_direct rather than CODE_FOR_altivec_vmrg*.
953         * config/rs6000/vsx.md (vsx_mergel_<mode>): Adjust for
954         -maltivec=be with LE targets.
955         (vsx_mergeh_<mode>): Likewise.
956         * config/rs6000/altivec.md (UNSPEC_VMRG[HL]_DIRECT): New
957         unspecs.
958         (mulv8hi3): Use gen_altivec_vmrg[hl]w_direct.
959         (altivec_vmrghb): Replace with define_expand and new
960         *altivec_vmrghb_internal insn; adjust for -maltivec=be with LE
961         targets.
962         (altivec_vmrghb_direct): New define_insn.
963         (altivec_vmrghh): Replace with define_expand and new
964         *altivec_vmrghh_internal insn; adjust for -maltivec=be with LE
965         targets.
966         (altivec_vmrghh_direct): New define_insn.
967         (altivec_vmrghw): Replace with define_expand and new
968         *altivec_vmrghw_internal insn; adjust for -maltivec=be with LE
969         targets.
970         (altivec_vmrghw_direct): New define_insn.
971         (*altivec_vmrghsf): Adjust for endianness.
972         (altivec_vmrglb): Replace with define_expand and new
973         *altivec_vmrglb_internal insn; adjust for -maltivec=be with LE
974         targets.
975         (altivec_vmrglb_direct): New define_insn.
976         (altivec_vmrglh): Replace with define_expand and new
977         *altivec_vmrglh_internal insn; adjust for -maltivec=be with LE
978         targets.
979         (altivec_vmrglh_direct): New define_insn.
980         (altivec_vmrglw): Replace with define_expand and new
981         *altivec_vmrglw_internal insn; adjust for -maltivec=be with LE
982         targets.
983         (altivec_vmrglw_direct): New define_insn.
984         (*altivec_vmrglsf): Adjust for endianness.
985         (vec_widen_umult_hi_v16qi): Use gen_altivec_vmrghh_direct.
986         (vec_widen_umult_lo_v16qi): Use gen_altivec_vmrglh_direct.
987         (vec_widen_smult_hi_v16qi): Use gen_altivec_vmrghh_direct.
988         (vec_widen_smult_lo_v16qi): Use gen_altivec_vmrglh_direct.
989         (vec_widen_umult_hi_v8hi): Use gen_altivec_vmrghw_direct.
990         (vec_widen_umult_lo_v8hi): Use gen_altivec_vmrglw_direct.
991         (vec_widen_smult_hi_v8hi): Use gen_altivec_vmrghw_direct.
992         (vec_widen_smult_lo_v8hi): Use gen_altivec_vmrglw_direct.
994         Backport from mainline r207318
995         2014-01-30  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
997         * gcc/config/rs6000/rs6000.c (rs6000_expand_vector_init): Use
998         gen_vsx_xxspltw_v4sf_direct instead of gen_vsx_xxspltw_v4sf;
999         remove element index adjustment for endian (now handled in vsx.md
1000         and altivec.md).
1001         (altivec_expand_vec_perm_const): Use
1002         gen_altivec_vsplt[bhw]_direct instead of gen_altivec_vsplt[bhw].
1003         * gcc/config/rs6000/vsx.md (UNSPEC_VSX_XXSPLTW): New unspec.
1004         (vsx_xxspltw_<mode>): Adjust element index for little endian.
1005         * gcc/config/rs6000/altivec.md (altivec_vspltb): Divide into a
1006         define_expand and a new define_insn *altivec_vspltb_internal;
1007         adjust for -maltivec=be on a little endian target.
1008         (altivec_vspltb_direct): New.
1009         (altivec_vsplth): Divide into a define_expand and a new
1010         define_insn *altivec_vsplth_internal; adjust for -maltivec=be on a
1011         little endian target.
1012         (altivec_vsplth_direct): New.
1013         (altivec_vspltw): Divide into a define_expand and a new
1014         define_insn *altivec_vspltw_internal; adjust for -maltivec=be on a
1015         little endian target.
1016         (altivec_vspltw_direct): New.
1017         (altivec_vspltsf): Divide into a define_expand and a new
1018         define_insn *altivec_vspltsf_internal; adjust for -maltivec=be on
1019         a little endian target.
1021         Backport from mainline r207326
1022         2014-01-30  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1024         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Remove
1025         unused variable "field".
1026         * config/rs6000/vsx.md (vsx_mergel_<mode>): Add missing DONE.
1027         (vsx_mergeh_<mode>): Likewise.
1028         * config/rs6000/altivec.md (altivec_vmrghb): Likewise.
1029         (altivec_vmrghh): Likewise.
1030         (altivec_vmrghw): Likewise.
1031         (altivec_vmrglb): Likewise.
1032         (altivec_vmrglh): Likewise.
1033         (altivec_vmrglw): Likewise.
1034         (altivec_vspltb): Add missing uses.
1035         (altivec_vsplth): Likewise.
1036         (altivec_vspltw): Likewise.
1037         (altivec_vspltsf): Likewise.
1039         Backport from mainline r207414
1040         2014-02-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1042         * config/rs6000/altivec.md (UNSPEC_VSUMSWS_DIRECT): New unspec.
1043         (altivec_vsumsws): Add handling for -maltivec=be with a little
1044         endian target.
1045         (altivec_vsumsws_direct): New.
1046         (reduc_splus_<mode>): Call gen_altivec_vsumsws_direct instead of
1047         gen_altivec_vsumsws.
1049         Backport from mainline r207415
1050         2014-02-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1052         * config/rs6000/rs6000.c (altivec_expand_vec_perm_le): Generalize
1053         for vector types other than V16QImode.
1054         * config/rs6000/altivec.md (altivec_vperm_<mode>): Change to a
1055         define_expand, and call altivec_expand_vec_perm_le when producing
1056         code with little endian element order.
1057         (*altivec_vperm_<mode>_internal): New insn having previous
1058         behavior of altivec_vperm_<mode>.
1059         (altivec_vperm_<mode>_uns): Change to a define_expand, and call
1060         altivec_expand_vec_perm_le when producing code with little endian
1061         element order.
1062         (*altivec_vperm_<mode>_uns_internal): New insn having previous
1063         behavior of altivec_vperm_<mode>_uns.
1065         Backport from mainline r207520
1066         2014-02-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1068         * altivec.md (UNSPEC_VPACK_UNS_UNS_MOD_DIRECT): New unspec.
1069         (UNSPEC_VUNPACK_HI_SIGN_DIRECT): Likewise.
1070         (UNSPEC_VUNPACK_LO_SIGN_DIRECT): Likewise.
1071         (mulv8hi3): Use gen_altivec_vpkuwum_direct instead of
1072         gen_altivec_vpkuwum.
1073         (altivec_vpkpx): Test for VECTOR_ELT_ORDER_BIG instead of for
1074         BYTES_BIG_ENDIAN.
1075         (altivec_vpks<VI_char>ss): Likewise.
1076         (altivec_vpks<VI_char>us): Likewise.
1077         (altivec_vpku<VI_char>us): Likewise.
1078         (altivec_vpku<VI_char>um): Likewise.
1079         (altivec_vpku<VI_char>um_direct): New (copy of
1080         altivec_vpku<VI_char>um that still relies on BYTES_BIG_ENDIAN, for
1081         internal use).
1082         (altivec_vupkhs<VU_char>): Emit vupkls* instead of vupkhs* when
1083         target is little endian and -maltivec=be is not specified.
1084         (*altivec_vupkhs<VU_char>_direct): New (copy of
1085         altivec_vupkhs<VU_char> that always emits vupkhs*, for internal
1086         use).
1087         (altivec_vupkls<VU_char>): Emit vupkhs* instead of vupkls* when
1088         target is little endian and -maltivec=be is not specified.
1089         (*altivec_vupkls<VU_char>_direct): New (copy of
1090         altivec_vupkls<VU_char> that always emits vupkls*, for internal
1091         use).
1092         (altivec_vupkhpx): Emit vupklpx instead of vupkhpx when target is
1093         little endian and -maltivec=be is not specified.
1094         (altivec_vupklpx): Emit vupkhpx instead of vupklpx when target is
1095         little endian and -maltivec=be is not specified.
1097         Backport from mainline r207521
1098         2014-02-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1100         * config/rs6000/altivec.md (altivec_vsum2sws): Adjust code
1101         generation for -maltivec=be.
1102         (altivec_vsumsws): Simplify redundant test.
1104         Backport from mainline r207525
1105         2014-02-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1107         * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Change
1108         CODE_FOR_altivec_vpku[hw]um to
1109         CODE_FOR_altivec_vpku[hw]um_direct.
1110         * config/rs6000/altivec.md (vec_unpacks_hi_<VP_small_lc>): Change
1111         UNSPEC_VUNPACK_HI_SIGN to UNSPEC_VUNPACK_HI_SIGN_DIRECT.
1112         (vec_unpacks_lo_<VP_small_lc>): Change UNSPEC_VUNPACK_LO_SIGN to
1113         UNSPEC_VUNPACK_LO_SIGN_DIRECT.
1115         Backport from mainline r207814.
1116         2014-02-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1118         * config/rs6000/vsx.md (vsx_xxpermdi_<mode>): Handle little
1119         endian targets.
1121         Backport from mainline r207815.
1122         2014-02-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1124         * config/rs6000/altivec.md (p8_vmrgew): Handle little endian
1125         targets.
1126         (p8_vmrgow): Likewise.
1128         Backport from mainline r207919.
1129         2014-02-19  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1131         * config/rs6000/rs6000.c (vspltis_constant): Fix most significant
1132         bit of zero.
1134         Backport from mainline 208019
1135         2014-02-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1137         * config/rs6000/altivec.md (altivec_lvxl): Rename as
1138         *altivec_lvxl_<mode>_internal and use VM2 iterator instead of
1139         V4SI.
1140         (altivec_lvxl_<mode>): New define_expand incorporating
1141         -maltivec=be semantics where needed.
1142         (altivec_lvx): Rename as *altivec_lvx_<mode>_internal.
1143         (altivec_lvx_<mode>): New define_expand incorporating -maltivec=be
1144         semantics where needed.
1145         (altivec_stvx): Rename as *altivec_stvx_<mode>_internal.
1146         (altivec_stvx_<mode>): New define_expand incorporating
1147         -maltivec=be semantics where needed.
1148         (altivec_stvxl): Rename as *altivec_stvxl_<mode>_internal and use
1149         VM2 iterator instead of V4SI.
1150         (altivec_stvxl_<mode>): New define_expand incorporating
1151         -maltivec=be semantics where needed.
1152         * config/rs6000/rs6000-builtin.def: Add new built-in definitions
1153         LVXL_V2DF, LVXL_V2DI, LVXL_V4SF, LVXL_V4SI, LVXL_V8HI, LVXL_V16QI,
1154         LVX_V2DF, LVX_V2DI, LVX_V4SF, LVX_V4SI, LVX_V8HI, LVX_V16QI,
1155         STVX_V2DF, STVX_V2DI, STVX_V4SF, STVX_V4SI, STVX_V8HI, STVX_V16QI,
1156         STVXL_V2DF, STVXL_V2DI, STVXL_V4SF, STVXL_V4SI, STVXL_V8HI,
1157         STVXL_V16QI.
1158         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Replace
1159         ALTIVEC_BUILTIN_LVX with ALTIVEC_BUILTIN_LVX_<MODE> throughout;
1160         similarly for ALTIVEC_BUILTIN_LVXL, ALTIVEC_BUILTIN_STVX, and
1161         ALTIVEC_BUILTIN_STVXL.
1162         * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be): New
1163         prototype.
1164         (altivec_expand_stvx_be): Likewise.
1165         * config/rs6000/rs6000.c (swap_selector_for_mode): New function.
1166         (altivec_expand_lvx_be): Likewise.
1167         (altivec_expand_stvx_be): Likewise.
1168         (altivec_expand_builtin): Add cases for
1169         ALTIVEC_BUILTIN_STVX_<MODE>, ALTIVEC_BUILTIN_STVXL_<MODE>,
1170         ALTIVEC_BUILTIN_LVXL_<MODE>, and ALTIVEC_BUILTIN_LVX_<MODE>.
1171         (altivec_init_builtins): Add definitions for
1172         __builtin_altivec_lvxl_<mode>, __builtin_altivec_lvx_<mode>,
1173         __builtin_altivec_stvx_<mode>, and
1174         __builtin_altivec_stvxl_<mode>.
1176         Backport from mainline 208021
1177         2014-02-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1179         * config/rs6000/altivec.md (altivec_vsumsws): Replace second
1180         vspltw with vsldoi.
1181         (reduc_uplus_v16qi): Use gen_altivec_vsumsws_direct instead of
1182         gen_altivec_vsumsws.
1184         Backport from mainline 208049
1185         2014-02-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1187         * config/rs6000/altivec.md (altivec_lve<VI_char>x): Replace
1188         define_insn with define_expand and new define_insn
1189         *altivec_lve<VI_char>x_internal.
1190         (altivec_stve<VI_char>x): Replace define_insn with define_expand
1191         and new define_insn *altivec_stve<VI_char>x_internal.
1192         * config/rs6000/rs6000-protos.h (altivec_expand_stvex_be): New
1193         prototype.
1194         * config/rs6000/rs6000.c (altivec_expand_lvx_be): Document use by
1195         lve*x built-ins.
1196         (altivec_expand_stvex_be): New function.
1198         Backport from mainline
1199         2014-02-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1200         * config/rs6000/rs6000.c (rs6000_emit_le_vsx_move): Relax assert
1201         to permit subregs.
1203         Backport from mainline
1204         2014-02-25  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1205         * config/rs6000/vector.md (*vector_unordered<mode>): Change split
1206         to use canonical form for nor<mode>3.
1208 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1210         Backport from mainline
1211         2014-02-04  Michael Meissner  <meissner@linux.vnet.ibm.com>
1213         * config/rs6000/rs6000.opt (-mlra): Add switch to enable the LRA
1214         register allocator.
1216         * config/rs6000/rs6000.c (TARGET_LRA_P): Add support for -mlra to
1217         enable the LRA register allocator.  Back port the changes from the
1218         trunk to enable LRA.
1219         (rs6000_legitimate_offset_address_p): Likewise.
1220         (legitimate_lo_sum_address_p): Likewise.
1221         (use_toc_relative_ref): Likewise.
1222         (rs6000_legitimate_address_p): Likewise.
1223         (rs6000_emit_move): Likewise.
1224         (rs6000_secondary_memory_needed_mode): Likewise.
1225         (rs6000_alloc_sdmode_stack_slot): Likewise.
1226         (rs6000_lra_p): Likewise.
1228         * config/rs6000/sync.md (load_lockedti): Copy TI/PTI variables by
1229         64-bit parts to force the register allocator to allocate even/odd
1230         register pairs for the quad word atomic instructions.
1231         (store_conditionalti): Likewise.
1233 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1235         Back port from mainline
1236         2014-01-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
1238         PR target/59909
1239         * doc/invoke.texi (RS/6000 and PowerPC Options): Document
1240         -mquad-memory-atomic.  Update -mquad-memory documentation to say
1241         it is only used for non-atomic loads/stores.
1243         * config/rs6000/predicates.md (quad_int_reg_operand): Allow either
1244         -mquad-memory or -mquad-memory-atomic switches.
1246         * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Add
1247         -mquad-memory-atomic to ISA 2.07 support.
1249         * config/rs6000/rs6000.opt (-mquad-memory-atomic): Add new switch
1250         to separate support of normal quad word memory operations (ldq,
1251         stq) from the atomic quad word memory operations.
1253         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
1254         support to separate non-atomic quad word operations from atomic
1255         quad word operations.  Disable non-atomic quad word operations in
1256         little endian mode so that we don't have to swap words after the
1257         load and before the store.
1258         (quad_load_store_p): Add comment about atomic quad word support.
1259         (rs6000_opt_masks): Add -mquad-memory-atomic to the list of
1260         options printed with -mdebug=reg.
1262         * config/rs6000/rs6000.h (TARGET_SYNC_TI): Use
1263         -mquad-memory-atomic as the test for whether we have quad word
1264         atomic instructions.
1265         (TARGET_SYNC_HI_QI): If either -mquad-memory-atomic,
1266         -mquad-memory, or -mp8-vector are used, allow byte/half-word
1267         atomic operations.
1269         * config/rs6000/sync.md (load_lockedti): Insure that the address
1270         is a proper indexed or indirect address for the lqarx instruction.
1271         On little endian systems, swap the hi/lo registers after the lqarx
1272         instruction.
1273         (load_lockedpti): Use indexed_or_indirect_operand predicate to
1274         insure the address is valid for the lqarx instruction.
1275         (store_conditionalti): Insure that the address is a proper indexed
1276         or indirect address for the stqcrx. instruction.  On little endian
1277         systems, swap the hi/lo registers before doing the stqcrx.
1278         instruction.
1279         (store_conditionalpti): Use indexed_or_indirect_operand predicate to
1280         insure the address is valid for the stqcrx. instruction.
1282         * gcc/config/rs6000/rs6000-c.c (rs6000_target_modify_macros):
1283         Define __QUAD_MEMORY__ and __QUAD_MEMORY_ATOMIC__ based on what
1284         type of quad memory support is available.
1286 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1288         Apply mainline r202190, powerpc64le multilibs and multiarch dir
1289         2013-09-03  Alan Modra  <amodra@gmail.com>
1291         * config.gcc (powerpc*-*-linux*): Add support for little-endian
1292         multilibs to big-endian target and vice versa.
1293         * config/rs6000/t-linux64: Use := assignment on all vars.
1294         (MULTILIB_EXTRA_OPTS): Remove fPIC.
1295         (MULTILIB_OSDIRNAMES): Specify using mapping from multilib_options.
1296         * config/rs6000/t-linux64le: New file.
1297         * config/rs6000/t-linux64bele: New file.
1298         * config/rs6000/t-linux64lebe: New file.
1300 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1302         Back port from mainline
1303         2014-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
1305         PR target/59844
1306         * config/rs6000/rs6000.md (reload_vsx_from_gprsf): Add little
1307         endian support, remove tests for WORDS_BIG_ENDIAN.
1308         (p8_mfvsrd_3_<mode>): Likewise.
1309         (reload_gpr_from_vsx<mode>): Likewise.
1310         (reload_gpr_from_vsxsf): Likewise.
1311         (p8_mfvsrd_4_disf): Likewise.
1313 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1315         Backport from mainline
1316         2013-04-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1318         PR target/56843
1319         * config/rs6000/rs6000.c (rs6000_emit_swdiv_high_precision): Remove.
1320         (rs6000_emit_swdiv_low_precision): Remove.
1321         (rs6000_emit_swdiv): Rewrite to handle between one and four
1322         iterations of Newton-Raphson generally; modify required number of
1323         iterations for some cases.
1324         * config/rs6000/rs6000.h (RS6000_RECIP_HIGH_PRECISION_P): Remove.
1326 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1328         Backport from mainline
1329         2013-08-19  Peter Bergner  <bergner@vnet.ibm.com>
1330                     Jakub Jelinek  <jakub@redhat.com>
1332         * builtins.def (BUILT_IN_FABSD32): New DFP ABS builtin.
1333         (BUILT_IN_FABSD64): Likewise.
1334         (BUILT_IN_FABSD128): Likewise.
1335         * builtins.c (expand_builtin): Add support for
1336         new DFP ABS builtins.
1337         (fold_builtin_1): Likewise.
1338         * config/rs6000/dfp.md
1339         (*abstd2_fpr): Handle non-overlapping destination
1340         and source operands.
1341         (*nabstd2_fpr): Likewise.
1343 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1345         Apply mainline r205060.
1346         2013-11-20  Alan Modra  <amodra@gmail.com>
1347         * config/rs6000/sysv4.h (CC1_ENDIAN_LITTLE_SPEC): Define as empty.
1348         * config/rs6000/rs6000.c (rs6000_option_override_internal): Default
1349         to strict alignment on older processors when little-endian.
1350         * config/rs6000/linux64.h (PROCESSOR_DEFAULT64): Default to power8
1351         for ELFv2.
1353 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1355         POWER ELFv2 ABI Support
1356         Backport from mainline r204842:
1358         2013-11-15  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1360         * doc/invoke.texi (-mabi=elfv1, -mabi=elfv2): Document.
1362         Backport from mainline r204809:
1364         2013-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1366         * config/rs6000/sysv4le.h (LINUX64_DEFAULT_ABI_ELFv2): Define.
1368         Backport from mainline r204808:
1370         2013-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1371                     Alan Modra  <amodra@gmail.com>
1373         * config/rs6000/rs6000.h (RS6000_SAVE_AREA): Handle ABI_ELFv2.
1374         (RS6000_SAVE_TOC): Remove.
1375         (RS6000_TOC_SAVE_SLOT): New macro.
1376         * config/rs6000/rs6000.c (rs6000_parm_offset): New function.
1377         (rs6000_parm_start): Use it.
1378         (rs6000_function_arg_advance_1): Likewise.
1379         (rs6000_emit_prologue): Use RS6000_TOC_SAVE_SLOT.
1380         (rs6000_emit_epilogue): Likewise.
1381         (rs6000_call_aix): Likewise.
1382         (rs6000_output_function_prologue): Do not save/restore r11
1383         around calling _mcount for ABI_ELFv2.
1385         2013-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1386                     Alan Modra  <amodra@gmail.com>
1388         * config/rs6000/rs6000-protos.h (rs6000_reg_parm_stack_space):
1389         Add prototype.
1390         * config/rs6000/rs6000.h (RS6000_REG_SAVE): Remove.
1391         (REG_PARM_STACK_SPACE): Call rs6000_reg_parm_stack_space.
1392         * config/rs6000/rs6000.c (rs6000_parm_needs_stack): New function.
1393         (rs6000_function_parms_need_stack): Likewise.
1394         (rs6000_reg_parm_stack_space): Likewise.
1395         (rs6000_function_arg): Do not replace BLKmode by Pmode when
1396         returning a register argument.
1398         2013-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1399                     Michael Gschwind  <mkg@us.ibm.com>
1401         * config/rs6000/rs6000.h (FP_ARG_MAX_RETURN): New macro.
1402         (ALTIVEC_ARG_MAX_RETURN): Likewise.
1403         (FUNCTION_VALUE_REGNO_P): Use them.
1404         * config/rs6000/rs6000.c (TARGET_RETURN_IN_MSB): Define.
1405         (rs6000_return_in_msb): New function.
1406         (rs6000_return_in_memory): Handle ELFv2 homogeneous aggregates.
1407         Handle aggregates of up to 16 bytes for ELFv2.
1408         (rs6000_function_value): Handle ELFv2 homogeneous aggregates.
1410         2013-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1411                     Michael Gschwind  <mkg@us.ibm.com>
1413         * config/rs6000/rs6000.h (AGGR_ARG_NUM_REG): Define.
1414         * config/rs6000/rs6000.c (rs6000_aggregate_candidate): New function.
1415         (rs6000_discover_homogeneous_aggregate): Likewise.
1416         (rs6000_function_arg_boundary): Handle homogeneous aggregates.
1417         (rs6000_function_arg_advance_1): Likewise.
1418         (rs6000_function_arg): Likewise.
1419         (rs6000_arg_partial_bytes): Likewise.
1420         (rs6000_psave_function_arg): Handle BLKmode arguments.
1422         2013-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1423                     Michael Gschwind  <mkg@us.ibm.com>
1425         * config/rs6000/rs6000.h (AGGR_ARG_NUM_REG): Define.
1426         * config/rs6000/rs6000.c (rs6000_aggregate_candidate): New function.
1427         (rs6000_discover_homogeneous_aggregate): Likewise.
1428         (rs6000_function_arg_boundary): Handle homogeneous aggregates.
1429         (rs6000_function_arg_advance_1): Likewise.
1430         (rs6000_function_arg): Likewise.
1431         (rs6000_arg_partial_bytes): Likewise.
1432         (rs6000_psave_function_arg): Handle BLKmode arguments.
1434         2013-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1436         * config/rs6000/rs6000.c (machine_function): New member
1437         r2_setup_needed.
1438         (rs6000_emit_prologue): Set r2_setup_needed if necessary.
1439         (rs6000_output_mi_thunk): Set r2_setup_needed.
1440         (rs6000_output_function_prologue): Output global entry point
1441         prologue and local entry point marker if needed for ABI_ELFv2.
1442         Output -mprofile-kernel code here.
1443         (output_function_profiler): Do not output -mprofile-kernel
1444         code here; moved to rs6000_output_function_prologue.
1445         (rs6000_file_start): Output ".abiversion 2" for ABI_ELFv2.
1447         (rs6000_emit_move): Do not handle dot symbols for ABI_ELFv2.
1448         (rs6000_output_function_entry): Likewise.
1449         (rs6000_assemble_integer): Likewise.
1450         (rs6000_elf_encode_section_info): Likewise.
1451         (rs6000_elf_declare_function_name): Do not create dot symbols
1452         or .opd section for ABI_ELFv2.
1454         (rs6000_trampoline_size): Update for ABI_ELFv2 trampolines.
1455         (rs6000_trampoline_init): Likewise.
1456         (rs6000_elf_file_end): Call file_end_indicate_exec_stack
1457         for ABI_ELFv2.
1459         (rs6000_call_aix): Handle ELFv2 indirect calls.  Do not check
1460         for function descriptors in ABI_ELFv2.
1462         * config/rs6000/rs6000.md ("*call_indirect_aix<mode>"): Support
1463         on ABI_AIX only, not ABI_ELFv2.
1464         ("*call_value_indirect_aix<mode>"): Likewise.
1465         ("*call_indirect_elfv2<mode>"): New pattern.
1466         ("*call_value_indirect_elfv2<mode>"): Likewise.
1468         * config/rs6000/predicates.md ("symbol_ref_operand"): Do not
1469         check for function descriptors in ABI_ELFv2.
1470         ("current_file_function_operand"): Likewise.
1472         * config/rs6000/ppc-asm.h [__powerpc64__ && _CALL_ELF == 2]:
1473         (toc): Undefine.
1474         (FUNC_NAME): Define ELFv2 variant.
1475         (JUMP_TARGET): Likewise.
1476         (FUNC_START): Likewise.
1477         (HIDDEN_FUNC): Likewise.
1478         (FUNC_END): Likeiwse.
1480         2013-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1482         * config.gcc [powerpc*-*-* | rs6000-*-*]: Support --with-abi=elfv1
1483         and --with-abi=elfv2.
1484         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Add "abi".
1485         * config/rs6000/rs6000.opt (mabi=elfv1): New option.
1486         (mabi=elfv2): Likewise.
1487         * config/rs6000/rs6000-opts.h (enum rs6000_abi): Add ABI_ELFv2.
1488         * config/rs6000/linux64.h (DEFAULT_ABI): Do not hard-code to AIX_ABI
1489         if !RS6000_BI_ARCH.
1490         (ELFv2_ABI_CHECK): New macro.
1491         (SUBSUBTARGET_OVERRIDE_OPTIONS): Use it to decide whether to set
1492         rs6000_current_abi to ABI_AIX or ABI_ELFv2.
1493         (GLIBC_DYNAMIC_LINKER64): Support ELFv2 ld.so version.
1494         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
1495         _CALL_ELF and __STRUCT_PARM_ALIGN__ if appropriate.
1497         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Handle ABI_ELFv2.
1498         (debug_stack_info): Likewise.
1499         (rs6000_file_start): Treat ABI_ELFv2 the same as ABI_AIX.
1500         (rs6000_legitimize_tls_address): Likewise.
1501         (rs6000_conditional_register_usage): Likewise.
1502         (rs6000_emit_move): Likewise.
1503         (init_cumulative_args): Likewise.
1504         (rs6000_function_arg_advance_1): Likewise.
1505         (rs6000_function_arg): Likewise.
1506         (rs6000_arg_partial_bytes): Likewise.
1507         (rs6000_output_function_entry): Likewise.
1508         (rs6000_assemble_integer): Likewise.
1509         (rs6000_savres_strategy): Likewise.
1510         (rs6000_stack_info): Likewise.
1511         (rs6000_function_ok_for_sibcall): Likewise.
1512         (rs6000_emit_load_toc_table): Likewise.
1513         (rs6000_savres_routine_name): Likewise.
1514         (ptr_regno_for_savres): Likewise.
1515         (rs6000_emit_prologue): Likewise.
1516         (rs6000_emit_epilogue): Likewise.
1517         (rs6000_output_function_epilogue): Likewise.
1518         (output_profile_hook): Likewise.
1519         (output_function_profiler): Likewise.
1520         (rs6000_trampoline_size): Likewise.
1521         (rs6000_trampoline_init): Likewise.
1522         (rs6000_elf_output_toc_section_asm_op): Likewise.
1523         (rs6000_elf_encode_section_info): Likewise.
1524         (rs6000_elf_reloc_rw_mask): Likewise.
1525         (rs6000_elf_declare_function_name): Likewise.
1526         (rs6000_function_arg_boundary): Treat ABI_ELFv2 the same as ABI_AIX,
1527         except that rs6000_compat_align_parm is always assumed false.
1528         (rs6000_gimplify_va_arg): Likewise.
1529         (rs6000_call_aix): Update comment.
1530         (rs6000_sibcall_aix): Likewise.
1531         * config/rs6000/rs6000.md ("tls_gd_aix<TLSmode:tls_abi_suffix>"):
1532         Treat ABI_ELFv2 the same as ABI_AIX.
1533         ("*tls_gd_call_aix<TLSmode:tls_abi_suffix>"): Likewise.
1534         ("tls_ld_aix<TLSmode:tls_abi_suffix>"): Likewise.
1535         ("*tls_ld_call_aix<TLSmode:tls_abi_suffix>"): Likewise.
1536         ("load_toc_aix_si"): Likewise.
1537         ("load_toc_aix_di"): Likewise.
1538         ("call"): Likewise.
1539         ("call_value"): Likewise.
1540         ("*call_local_aix<mode>"): Likewise.
1541         ("*call_value_local_aix<mode>"): Likewise.
1542         ("*call_nonlocal_aix<mode>"): Likewise.
1543         ("*call_value_nonlocal_aix<mode>"): Likewise.
1544         ("*call_indirect_aix<mode>"): Likewise.
1545         ("*call_value_indirect_aix<mode>"): Likewise.
1546         ("sibcall"): Likewise.
1547         ("sibcall_value"): Likewise.
1548         ("*sibcall_aix<mode>"): Likewise.
1549         ("*sibcall_value_aix<mode>"): Likewise.
1550         * config/rs6000/predicates.md ("symbol_ref_operand"): Likewise.
1551         ("current_file_function_operand"): Likewise.
1553         Backport from mainline r204807:
1555         2013-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1557         * config/rs6000/rs6000.c (rs6000_arg_partial_bytes): Simplify logic
1558         by making use of the fact that for vector / floating point arguments
1559         passed both in VRs/FPRs and in the fixed parameter area, the partial
1560         bytes mechanism is in fact not used.
1562         Backport from mainline r204806:
1564         2013-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1566         * config/rs6000/rs6000.c (rs6000_psave_function_arg): New function.
1567         (rs6000_finish_function_arg): Likewise.
1568         (rs6000_function_arg): Use rs6000_psave_function_arg and
1569         rs6000_finish_function_arg to handle both vector and floating
1570         point arguments that are also passed in GPRs / the stack.
1572         Backport from mainline r204805:
1574         2013-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1576         * config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Remove TYPE argument.
1577         (USE_ALTIVEC_FOR_ARG_P): Likewise.
1578         (rs6000_darwin64_record_arg_advance_recurse): Update uses.
1579         (rs6000_function_arg_advance_1):Likewise.
1580         (rs6000_darwin64_record_arg_recurse): Likewise.
1581         (rs6000_function_arg): Likewise.
1582         (rs6000_arg_partial_bytes): Likewise.
1584         Backport from mainline r204804:
1586         2013-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1588         * config/rs6000/rs6000.c (rs6000_option_override_internal): Replace
1589         "DEFAULT_ABI != ABI_AIX" test by testing for ABI_V4 or ABI_DARWIN.
1590         (rs6000_savres_strategy): Likewise.
1591         (rs6000_return_addr): Likewise.
1592         (rs6000_emit_load_toc_table): Replace "DEFAULT_ABI != ABI_AIX" by
1593         testing for ABI_V4 (since ABI_DARWIN is impossible here).
1594         (rs6000_emit_prologue): Likewise.
1595         (legitimate_lo_sum_address_p): Simplify DEFAULT_ABI test.
1596         (rs6000_elf_declare_function_name): Remove duplicated test.
1597         * config/rs6000/rs6000.md ("load_toc_v4_PIC_1"): Explicitly test
1598         for ABI_V4 (instead of "DEFAULT_ABI != ABI_AIX" test).
1599         ("load_toc_v4_PIC_1_normal"): Likewise.
1600         ("load_toc_v4_PIC_1_476"): Likewise.
1601         ("load_toc_v4_PIC_1b"): Likewise.
1602         ("load_toc_v4_PIC_1b_normal"): Likewise.
1603         ("load_toc_v4_PIC_1b_476"): Likewise.
1604         ("load_toc_v4_PIC_2"): Likewise.
1605         ("load_toc_v4_PIC_3b"): Likewise.
1606         ("load_toc_v4_PIC_3c"): Likewise.
1607         * config/rs6000/rs6000.h (RS6000_REG_SAVE): Simplify DEFAULT_ABI test.
1608         (RS6000_SAVE_AREA): Likewise.
1609         (FP_ARG_MAX_REG): Likewise.
1610         (RETURN_ADDRESS_OFFSET): Likewise.
1611         * config/rs6000/sysv.h (TARGET_TOC): Test for ABI_V4 instead
1612         of ABI_AIX.
1613         (SUBTARGET_OVERRIDE_OPTIONS): Likewise.
1614         (MINIMAL_TOC_SECTION_ASM_OP): Likewise.
1616         Backport from mainline r204803:
1618         2013-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1620         * config/rs6000/rs6000.c (rs6000_call_indirect_aix): Rename to ...
1621         (rs6000_call_aix): ... this.  Handle both direct and indirect calls.
1622         Create call insn directly instead of via various gen_... routines.
1623         Mention special registers used by the call in CALL_INSN_FUNCTION_USAGE.
1624         (rs6000_sibcall_aix): New function.
1625         * config/rs6000/rs6000.md (TOC_SAVE_OFFSET_32BIT): Remove.
1626         (TOC_SAVE_OFFSET_64BIT): Likewise.
1627         (AIX_FUNC_DESC_TOC_32BIT): Likewise.
1628         (AIX_FUNC_DESC_TOC_64BIT): Likewise.
1629         (AIX_FUNC_DESC_SC_32BIT): Likewise.
1630         (AIX_FUNC_DESC_SC_64BIT): Likewise.
1631         ("call" expander): Call rs6000_call_aix.
1632         ("call_value" expander): Likewise.
1633         ("call_indirect_aix<ptrsize>"): Replace this pattern ...
1634         ("call_indirect_aix<ptrsize>_nor11"): ... and this pattern ...
1635         ("*call_indirect_aix<mode>"): ... by this insn pattern.
1636         ("call_value_indirect_aix<ptrsize>"): Replace this pattern ...
1637         ("call_value_indirect_aix<ptrsize>_nor11"): ... and this pattern ...
1638         ("*call_value_indirect_aix<mode>"): ... by this insn pattern.
1639         ("*call_nonlocal_aix32", "*call_nonlocal_aix64"): Replace by ...
1640         ("*call_nonlocal_aix<mode>"): ... this pattern.
1641         ("*call_value_nonlocal_aix32", "*call_value_nonlocal_aix64"): Replace
1642         ("*call_value_nonlocal_aix<mode>"): ... by this pattern.
1643         ("*call_local_aix<mode>"): New insn pattern.
1644         ("*call_value_local_aix<mode>"): Likewise.
1645         ("sibcall" expander): Call rs6000_sibcall_aix.
1646         ("sibcall_value" expander): Likewise.  Move earlier in file.
1647         ("*sibcall_nonlocal_aix<mode>"): Replace by ...
1648         ("*sibcall_aix<mode>"): ... this pattern.
1649         ("*sibcall_value_nonlocal_aix<mode>"): Replace by ...
1650         ("*sibcall_value_aix<mode>"): ... this pattern.
1651         * config/rs6000/rs6000-protos.h (rs6000_call_indirect_aix): Remove.
1652         (rs6000_call_aix): Add prototype.
1653         (rs6000_sibcall_aix): Likewise.
1655         Backport from mainline r204799:
1657         2013-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1659         * config/rs6000/rs6000.c (rs6000_emit_prologue): Do not place a
1660         RTX_FRAME_RELATED_P marker on the UNSPEC_MOVESI_FROM_CR insn.
1661         Instead, add USEs of all modified call-saved CR fields to the
1662         insn storing the result to the stack slot, and provide an
1663         appropriate REG_FRAME_RELATED_EXPR for that insn.
1664         * config/rs6000/rs6000.md ("*crsave"): New insn pattern.
1665         * config/rs6000/predicates.md ("crsave_operation"): New predicate.
1667 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1669         ELFv2 ABI Call Support
1670         Backport from mainline r204798:
1672         2013-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1673                     Alan Modra  <amodra@gmail.com>
1675         * function.c (assign_parms): Use all.reg_parm_stack_space instead
1676         of re-evaluating REG_PARM_STACK_SPACE target macro.
1677         (locate_and_pad_parm): New parameter REG_PARM_STACK_SPACE.  Use it
1678         instead of evaluating target macro REG_PARM_STACK_SPACE every time.
1679         (assign_parm_find_entry_rtl): Update call.
1680         * calls.c (initialize_argument_information): Update call.
1681         (emit_library_call_value_1): Likewise.
1682         * expr.h (locate_and_pad_parm): Update prototype.
1684         Backport from mainline r204797:
1686         2013-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1688         * calls.c (store_unaligned_arguments_into_pseudos): Skip PARALLEL
1689         arguments.
1691         Backport from mainline r197003:
1693         2013-03-23  Eric Botcazou  <ebotcazou@adacore.com>
1695         * calls.c (expand_call): Add missing guard to code handling return
1696         of non-BLKmode structures in MSB.
1697         * function.c (expand_function_end): Likewise.
1699 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1701         Backport from mainline r201750.
1702         Note: Default setting of -mcompat-align-parm inverted!
1704         2013-08-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1706         PR target/57949
1707         * doc/invoke.texi: Add documentation of mcompat-align-parm
1708         option.
1709         * config/rs6000/rs6000.opt: Add mcompat-align-parm option.
1710         * config/rs6000/rs6000.c (rs6000_function_arg_boundary): For AIX
1711         and Linux, correct BLKmode alignment when 128-bit alignment is
1712         required and compatibility flag is not set.
1713         (rs6000_gimplify_va_arg): For AIX and Linux, honor specified
1714         alignment for zero-size arguments when compatibility flag is not
1715         set.
1717 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1719         Little Endian Vector Support
1720         Backport from mainline r205333
1721         2013-11-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1723         * config/rs6000/rs6000.c (rs6000_expand_vec_perm_const_1): Correct
1724         for little endian.
1726         Backport from mainline r205241
1727         2013-11-21  Bill Schmidt  <wschmidt@vnet.ibm.com>
1729         * config/rs6000/vector.md (vec_pack_trunc_v2df): Revert previous
1730         little endian change.
1731         (vec_pack_sfix_trunc_v2df): Likewise.
1732         (vec_pack_ufix_trunc_v2df): Likewise.
1733         * config/rs6000/rs6000.c (rs6000_expand_interleave): Correct
1734         double checking of endianness.
1736         Backport from mainline r205146
1737         2013-11-20  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1739         * config/rs6000/vsx.md (vsx_set_<mode>): Adjust for little endian.
1740         (vsx_extract_<mode>): Likewise.
1741         (*vsx_extract_<mode>_one_le): New LE variant on
1742         *vsx_extract_<mode>_zero.
1743         (vsx_extract_v4sf): Adjust for little endian.
1745         Backport from mainline r205080
1746         2013-11-19  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1748         * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Adjust
1749         V16QI vector splat case for little endian.
1751         Backport from mainline r205045:
1753         2013-11-19  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1755         * config/rs6000/vector.md ("mov<mode>"): Do not call
1756         rs6000_emit_le_vsx_move to move into or out of GPRs.
1757         * config/rs6000/rs6000.c (rs6000_emit_le_vsx_move): Assert
1758         source and destination are not GPR hard regs.
1760         Backport from mainline r204920
1761         2011-11-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1763         * config/rs6000/rs6000.c (rs6000_frame_related): Add split_reg
1764         parameter and use it in REG_FRAME_RELATED_EXPR note.
1765         (emit_frame_save): Call rs6000_frame_related with extra NULL_RTX
1766         parameter.
1767         (rs6000_emit_prologue): Likewise, but for little endian VSX
1768         stores, pass the source register of the store instead.
1770         Backport from mainline r204862
1771         2013-11-15  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1773         * config/rs6000/altivec.md (UNSPEC_VPERM_X, UNSPEC_VPERM_UNS_X):
1774         Remove.
1775         (altivec_vperm_<mode>): Revert earlier little endian change.
1776         (*altivec_vperm_<mode>_internal): Remove.
1777         (altivec_vperm_<mode>_uns): Revert earlier little endian change.
1778         (*altivec_vperm_<mode>_uns_internal): Remove.
1779         * config/rs6000/vector.md (vec_realign_load_<mode>): Revise
1780         commentary.
1782         Backport from mainline r204441
1783         2013-11-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1785         * config/rs6000/rs6000.c (rs6000_option_override_internal):
1786         Remove restriction against use of VSX instructions when generating
1787         code for little endian mode.
1789         Backport from mainline r204440
1790         2013-11-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1792         * config/rs6000/altivec.md (mulv4si3): Ensure we generate vmulouh
1793         for both big and little endian.
1794         (mulv8hi3): Swap input operands for merge high and merge low
1795         instructions for little endian.
1797         Backport from mainline r204439
1798         2013-11-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1800         * config/rs6000/altivec.md (vec_widen_umult_even_v16qi): Change
1801         define_insn to define_expand that uses even patterns for big
1802         endian and odd patterns for little endian.
1803         (vec_widen_smult_even_v16qi): Likewise.
1804         (vec_widen_umult_even_v8hi): Likewise.
1805         (vec_widen_smult_even_v8hi): Likewise.
1806         (vec_widen_umult_odd_v16qi): Likewise.
1807         (vec_widen_smult_odd_v16qi): Likewise.
1808         (vec_widen_umult_odd_v8hi): Likewise.
1809         (vec_widen_smult_odd_v8hi): Likewise.
1810         (altivec_vmuleub): New define_insn.
1811         (altivec_vmuloub): Likewise.
1812         (altivec_vmulesb): Likewise.
1813         (altivec_vmulosb): Likewise.
1814         (altivec_vmuleuh): Likewise.
1815         (altivec_vmulouh): Likewise.
1816         (altivec_vmulesh): Likewise.
1817         (altivec_vmulosh): Likewise.
1819         Backport from mainline r204395
1820         2013-11-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1822         * config/rs6000/vector.md (vec_pack_sfix_trunc_v2df): Adjust for
1823         little endian.
1824         (vec_pack_ufix_trunc_v2df): Likewise.
1826         Backport from mainline r204363
1827         2013-11-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1829         * config/rs6000/altivec.md (vec_widen_umult_hi_v16qi): Swap
1830         arguments to merge instruction for little endian.
1831         (vec_widen_umult_lo_v16qi): Likewise.
1832         (vec_widen_smult_hi_v16qi): Likewise.
1833         (vec_widen_smult_lo_v16qi): Likewise.
1834         (vec_widen_umult_hi_v8hi): Likewise.
1835         (vec_widen_umult_lo_v8hi): Likewise.
1836         (vec_widen_smult_hi_v8hi): Likewise.
1837         (vec_widen_smult_lo_v8hi): Likewise.
1839         Backport from mainline r204350
1840         2013-11-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1842         * config/rs6000/vsx.md (*vsx_le_perm_store_<mode> for VSX_D):
1843         Replace the define_insn_and_split with a define_insn and two
1844         define_splits, with the split after reload re-permuting the source
1845         register to its original value.
1846         (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
1847         (*vsx_le_perm_store_v8hi): Likewise.
1848         (*vsx_le_perm_store_v16qi): Likewise.
1850         Backport from mainline r204321
1851         2013-11-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1853         * config/rs6000/vector.md (vec_pack_trunc_v2df):  Adjust for
1854         little endian.
1856         Backport from mainline r204321
1857         2013-11-02  Bill Schmidt  <wschmidt@vnet.linux.ibm.com>
1859         * config/rs6000/rs6000.c (rs6000_expand_vector_set): Adjust for
1860         little endian.
1862         Backport from mainline r203980
1863         2013-10-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1865         * config/rs6000/altivec.md (mulv8hi3): Adjust for little endian.
1867         Backport from mainline r203930
1868         2013-10-22  Bill Schmidt  <wschmidt@vnet.ibm.com>
1870         * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Reverse
1871         meaning of merge-high and merge-low masks for little endian; avoid
1872         use of vector-pack masks for little endian for mismatched modes.
1874         Backport from mainline r203877
1875         2013-10-20  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1877         * config/rs6000/altivec.md (vec_unpacku_hi_v16qi): Adjust for
1878         little endian.
1879         (vec_unpacku_hi_v8hi): Likewise.
1880         (vec_unpacku_lo_v16qi): Likewise.
1881         (vec_unpacku_lo_v8hi): Likewise.
1883         Backport from mainline r203863
1884         2013-10-19  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1886         * config/rs6000/rs6000.c (vspltis_constant): Make sure we check
1887         all elements for both endian flavors.
1889         Backport from mainline r203714
1890         2013-10-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1892         * gcc/config/rs6000/vector.md (vec_unpacks_hi_v4sf): Correct for
1893         endianness.
1894         (vec_unpacks_lo_v4sf): Likewise.
1895         (vec_unpacks_float_hi_v4si): Likewise.
1896         (vec_unpacks_float_lo_v4si): Likewise.
1897         (vec_unpacku_float_hi_v4si): Likewise.
1898         (vec_unpacku_float_lo_v4si): Likewise.
1900         Backport from mainline r203713
1901         2013-10-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1903         * config/rs6000/vsx.md (vsx_concat_<mode>): Adjust output for LE.
1904         (vsx_concat_v2sf): Likewise.
1906         Backport from mainline r203458
1907         2013-10-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1909         * config/rs6000/vsx.md (*vsx_le_perm_load_v2di): Generalize to
1910         handle vector float as well.
1911         (*vsx_le_perm_load_v4si): Likewise.
1912         (*vsx_le_perm_store_v2di): Likewise.
1913         (*vsx_le_perm_store_v4si): Likewise.
1915         Backport from mainline r203457
1916         2013-10-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1918         * config/rs6000/vector.md (vec_realign_load<mode>): Generate vperm
1919         directly to circumvent subtract from splat{31} workaround.
1920         * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_le): New
1921         prototype.
1922         * config/rs6000/rs6000.c (altivec_expand_vec_perm_le): New.
1923         * config/rs6000/altivec.md (define_c_enum "unspec"): Add
1924         UNSPEC_VPERM_X and UNSPEC_VPERM_UNS_X.
1925         (altivec_vperm_<mode>): Convert to define_insn_and_split to
1926         separate big and little endian logic.
1927         (*altivec_vperm_<mode>_internal): New define_insn.
1928         (altivec_vperm_<mode>_uns): Convert to define_insn_and_split to
1929         separate big and little endian logic.
1930         (*altivec_vperm_<mode>_uns_internal): New define_insn.
1931         (vec_permv16qi): Add little endian logic.
1933         Backport from mainline r203247
1934         2013-10-07  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1936         * config/rs6000/rs6000.c (altivec_expand_vec_perm_const_le): New.
1937         (altivec_expand_vec_perm_const): Call it.
1939         Backport from mainline r203246
1940         2013-10-07  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1942         * config/rs6000/vector.md (mov<mode>): Emit permuted move
1943         sequences for LE VSX loads and stores at expand time.
1944         * config/rs6000/rs6000-protos.h (rs6000_emit_le_vsx_move): New
1945         prototype.
1946         * config/rs6000/rs6000.c (rs6000_const_vec): New.
1947         (rs6000_gen_le_vsx_permute): New.
1948         (rs6000_gen_le_vsx_load): New.
1949         (rs6000_gen_le_vsx_store): New.
1950         (rs6000_gen_le_vsx_move): New.
1951         * config/rs6000/vsx.md (*vsx_le_perm_load_v2di): New.
1952         (*vsx_le_perm_load_v4si): New.
1953         (*vsx_le_perm_load_v8hi): New.
1954         (*vsx_le_perm_load_v16qi): New.
1955         (*vsx_le_perm_store_v2di): New.
1956         (*vsx_le_perm_store_v4si): New.
1957         (*vsx_le_perm_store_v8hi): New.
1958         (*vsx_le_perm_store_v16qi): New.
1959         (*vsx_xxpermdi2_le_<mode>): New.
1960         (*vsx_xxpermdi4_le_<mode>): New.
1961         (*vsx_xxpermdi8_le_V8HI): New.
1962         (*vsx_xxpermdi16_le_V16QI): New.
1963         (*vsx_lxvd2x2_le_<mode>): New.
1964         (*vsx_lxvd2x4_le_<mode>): New.
1965         (*vsx_lxvd2x8_le_V8HI): New.
1966         (*vsx_lxvd2x16_le_V16QI): New.
1967         (*vsx_stxvd2x2_le_<mode>): New.
1968         (*vsx_stxvd2x4_le_<mode>): New.
1969         (*vsx_stxvd2x8_le_V8HI): New.
1970         (*vsx_stxvd2x16_le_V16QI): New.
1972         Backport from mainline r201235
1973         2013-07-24  Bill Schmidt  <wschmidt@linux.ibm.com>
1974                     Anton Blanchard <anton@au1.ibm.com>
1976         * config/rs6000/altivec.md (altivec_vpkpx): Handle little endian.
1977         (altivec_vpks<VI_char>ss): Likewise.
1978         (altivec_vpks<VI_char>us): Likewise.
1979         (altivec_vpku<VI_char>us): Likewise.
1980         (altivec_vpku<VI_char>um): Likewise.
1982         Backport from mainline r201208
1983         2013-07-24  Bill Schmidt  <wschmidt@vnet.linux.ibm.com>
1984                     Anton Blanchard <anton@au1.ibm.com>
1986         * config/rs6000/vector.md (vec_realign_load_<mode>): Reorder input
1987         operands to vperm for little endian.
1988         * config/rs6000/rs6000.c (rs6000_expand_builtin): Use lvsr instead
1989         of lvsl to create the control mask for a vperm for little endian.
1991         Backport from mainline r201195
1992         2013-07-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1993                     Anton Blanchard <anton@au1.ibm.com>
1995         * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Reverse
1996         two operands for little-endian.
1998         Backport from mainline r201193
1999         2013-07-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2000                     Anton Blanchard <anton@au1.ibm.com>
2002         * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Correct
2003         selection of field for vector splat in little endian mode.
2005         Backport from mainline r201149
2006         2013-07-22  Bill Schmidt  <wschmidt@vnet.linux.ibm.com>
2007                     Anton Blanchard <anton@au1.ibm.com>
2009         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Fix
2010         endianness when selecting field to splat.
2012 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2014         Backport from mainline r205123:
2016         2013-11-20  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2018         * config/rs6000/rs6000.c (rs6000_cannot_change_mode_class): Do not
2019         allow subregs of TDmode in FPRs of smaller size in little-endian.
2020         (rs6000_split_multireg_move): When splitting an access to TDmode
2021         in FPRs, do not use simplify_gen_subreg.
2023         Backport from mainline r204927:
2025         2013-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2027         * config/rs6000/rs6000.c (rs6000_emit_move): Use low word of
2028         sdmode_stack_slot also in little-endian mode.
2030 2014-04-04  Bill Schmidt <wschmidt@linux.vnet.ibm.com>
2032         Power8 HTM Support
2033         Backport from mainline
2034         2013-12-03  Peter Bergner  <bergner@vnet.ibm.com>
2036         * config/rs6000/htmintrin.h (_TEXASR_INSTRUCTION_FETCH_CONFLICT): Fix
2037         typo in macro name.
2038         (_TEXASRU_INSTRUCTION_FETCH_CONFLICT): Likewise.
2040         Backport from mainline r205233.
2041         2013-11-21  Peter Bergner  <bergner@vnet.ibm.com>
2043         * doc/extend.texi: Document htm builtins.
2045         Backport from mainline
2046         2013-07-17  Iain Sandoe  <iain@codesourcery.com>
2048         * config/rs6000/darwin.h (REGISTER_NAMES): Add HTM registers.
2050         Backport from mainline
2051         2013-07-16  Peter Bergner <bergner@vnet.ibm.com>
2053         * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
2054         enable extra ISA flags with TARGET_HTM.
2056         2013-07-16  Jakub Jelinek  <jakub@redhat.com>
2057                     Peter Bergner  <bergner@vnet.ibm.com>
2059         * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTERS): Mention HTM
2060         registers in the comment.
2061         (DWARF_FRAME_REGISTERS): Subtract also the 3 HTM registers.
2062         (DWARF_REG_TO_UNWIND_COLUMN): Use DWARF_FRAME_REGISTERS
2063         rather than FIRST_PSEUDO_REGISTERS.
2065         * config.gcc (powerpc*-*-*): Install htmintrin.h and htmxlintrin.h.
2066         * config/rs6000/t-rs6000 (MD_INCLUDES): Add htm.md.
2067         * config/rs6000/rs6000.opt: Add -mhtm option.
2068         * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Add OPTION_MASK_HTM.
2069         (ISA_2_7_MASKS_SERVER): Add OPTION_MASK_HTM.
2070         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
2071         __HTM__ if the HTM instructions are available.
2072         * config/rs6000/predicates.md (u3bit_cint_operand, u10bit_cint_operand)
2073         (htm_spr_reg_operand): New define_predicates.
2074         * config/rs6000/rs6000.md (define_attr "type"): Add htm.
2075         (TFHAR_REGNO, TFIAR_REGNO, TEXASR_REGNO): New define_constants.
2076         Include htm.md.
2077         * config/rs6000/rs6000-builtin.def (BU_HTM_0, BU_HTM_1, BU_HTM_2)
2078         (BU_HTM_3, BU_HTM_SPR0, BU_HTM_SPR1): Add support macros for defining
2079         HTM builtin functions.
2080         * config/rs6000/rs6000.c (RS6000_BUILTIN_H): New macro.
2081         (rs6000_reg_names, alt_reg_names): Add HTM SPR register names.
2082         (rs6000_init_hard_regno_mode_ok): Add support for HTM instructions.
2083         (rs6000_builtin_mask_calculate): Likewise.
2084         (rs6000_option_override_internal): Likewise.
2085         (bdesc_htm): Add new HTM builtin support.
2086         (htm_spr_num): New function.
2087         (htm_spr_regno): Likewise.
2088         (rs6000_htm_spr_icode): Likewise.
2089         (htm_expand_builtin): Likewise.
2090         (htm_init_builtins): Likewise.
2091         (rs6000_expand_builtin): Add support for HTM builtin functions.
2092         (rs6000_init_builtins): Likewise.
2093         (rs6000_invalid_builtin, rs6000_opt_mask): Add support for -mhtm option.
2094         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mhtm.
2095         (TARGET_HTM, MASK_HTM): Define macros.
2096         (FIRST_PSEUDO_REGISTER): Adjust for new HTM SPR registers.
2097         (FIXED_REGISTERS): Likewise.
2098         (CALL_USED_REGISTERS): Likewise.
2099         (CALL_REALLY_USED_REGISTERS): Likewise.
2100         (REG_ALLOC_ORDER): Likewise.
2101         (enum reg_class): Likewise.
2102         (REG_CLASS_NAMES): Likewise.
2103         (REG_CLASS_CONTENTS): Likewise.
2104         (REGISTER_NAMES): Likewise.
2105         (ADDITIONAL_REGISTER_NAMES): Likewise.
2106         (RS6000_BTC_SPR, RS6000_BTC_VOID, RS6000_BTC_32BIT, RS6000_BTC_64BIT)
2107         (RS6000_BTC_MISC_MASK, RS6000_BTM_HTM): New macros.
2108         (RS6000_BTM_COMMON): Add RS6000_BTM_HTM.
2109         * config/rs6000/htm.md: New file.
2110         * config/rs6000/htmintrin.h: New file.
2111         * config/rs6000/htmxlintrin.h: New file.
2113 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2115         Power8 Base Support
2116         Apply mainline
2117         2013-11-23  Alan Modra  <amodra@gmail.com>
2118         * config/rs6000/vsx.md (fusion peepholes): Disable when !TARGET_VSX.
2120         Backport from mainline
2121         2013-11-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
2123         PR target/59054
2124         * config/rs6000/rs6000.md (movdi_internal32): Eliminate
2125         constraints that would allow DImode into the traditional Altivec
2126         registers, but cause undesirable code generation when loading 0 as
2127         a constant.
2128         (movdi_internal64): Likewise.
2129         (cmp<mode>_fpr): Do not use %x for CR register output.
2130         (extendsfdf2_fpr): Fix constraints when -mallow-upper-df and
2131         -mallow-upper-sf debug switches are used.
2133         Backport from mainline
2134         2013-10-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
2136         * config/rs6000/rs6000.c (enum rs6000_reload_reg_type): Add new
2137         fields to the reg_addr array that describes the valid addressing
2138         mode for any register, general purpose registers, floating point
2139         registers, and Altivec registers.
2140         (FIRST_RELOAD_REG_CLASS): Likewise.
2141         (LAST_RELOAD_REG_CLASS): Likewise.
2142         (struct reload_reg_map_type): Likewise.
2143         (reload_reg_map_type): Likewise.
2144         (RELOAD_REG_VALID): Likewise.
2145         (RELOAD_REG_MULTIPLE): Likewise.
2146         (RELOAD_REG_INDEXED): Likewise.
2147         (RELOAD_REG_OFFSET): Likewise.
2148         (RELOAD_REG_PRE_INCDEC): Likewise.
2149         (RELOAD_REG_PRE_MODIFY): Likewise.
2150         (reg_addr): Likewise.
2151         (mode_supports_pre_incdec_p): New helper functions to say whether
2152         a given mode supports PRE_INC, PRE_DEC, and PRE_MODIFY.
2153         (mode_supports_pre_modify_p): Likewise.
2154         (rs6000_debug_vector_unit): Rearrange the -mdebug=reg output to
2155         print the valid address mode bits for each mode.
2156         (rs6000_debug_print_mode): Likewise.
2157         (rs6000_debug_reg_global): Likewise.
2158         (rs6000_setup_reg_addr_masks): New function to set up the address
2159         mask bits for each type.
2160         (rs6000_init_hard_regno_mode_ok): Use memset to clear arrays.
2161         Call rs6000_setup_reg_addr_masks to set up the address mask bits.
2162         (rs6000_legitimate_address_p): Use mode_supports_pre_incdec_p and
2163         mode_supports_pre_modify_p to determine if PRE_INC, PRE_DEC, and
2164         PRE_MODIFY are supported.
2165         (rs6000_output_move_128bit): Change to use {src,dest}_vmx_p for altivec
2166         registers, instead of {src,dest}_av_p.
2167         (rs6000_print_options_internal): Tweak the debug output slightly.
2169         Backport from mainline
2170         2013-10-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
2172         * config/rs6000/rs6000-builtin.def (XSRDPIM): Use floatdf2,
2173         ceildf2, btruncdf2, instead of vsx_* name.
2175         * config/rs6000/vsx.md (vsx_add<mode>3): Change arithmetic
2176         iterators to only do V2DF and V4SF here.  Move the DF code to
2177         rs6000.md where it is combined with SF mode.  Replace <VSv> with
2178         just 'v' since only vector operations are handled with these insns
2179         after moving the DF support to rs6000.md.
2180         (vsx_sub<mode>3): Likewise.
2181         (vsx_mul<mode>3): Likewise.
2182         (vsx_div<mode>3): Likewise.
2183         (vsx_fre<mode>2): Likewise.
2184         (vsx_neg<mode>2): Likewise.
2185         (vsx_abs<mode>2): Likewise.
2186         (vsx_nabs<mode>2): Likewise.
2187         (vsx_smax<mode>3): Likewise.
2188         (vsx_smin<mode>3): Likewise.
2189         (vsx_sqrt<mode>2): Likewise.
2190         (vsx_rsqrte<mode>2): Likewise.
2191         (vsx_fms<mode>4): Likewise.
2192         (vsx_nfma<mode>4): Likewise.
2193         (vsx_copysign<mode>3): Likewise.
2194         (vsx_btrunc<mode>2): Likewise.
2195         (vsx_floor<mode>2): Likewise.
2196         (vsx_ceil<mode>2): Likewise.
2197         (vsx_smaxsf3): Delete scalar ops that were moved to rs6000.md.
2198         (vsx_sminsf3): Likewise.
2199         (vsx_fmadf4): Likewise.
2200         (vsx_fmsdf4): Likewise.
2201         (vsx_nfmadf4): Likewise.
2202         (vsx_nfmsdf4): Likewise.
2203         (vsx_cmpdf_internal1): Likewise.
2205         * config/rs6000/rs6000.h (TARGET_SF_SPE): Define macros to make it
2206         simpler to select whether a target has SPE or traditional floating
2207         point support in iterators.
2208         (TARGET_DF_SPE): Likewise.
2209         (TARGET_SF_FPR): Likewise.
2210         (TARGET_DF_FPR): Likewise.
2211         (TARGET_SF_INSN): Macros to say whether floating point support
2212         exists for a given operation for expanders.
2213         (TARGET_DF_INSN): Likewise.
2215         * config/rs6000/rs6000.c (Ftrad): New mode attributes to allow
2216         combining of SF/DF mode operations, using both traditional and VSX
2217         registers.
2218         (Fvsx): Likewise.
2219         (Ff): Likewise.
2220         (Fv): Likewise.
2221         (Fs): Likewise.
2222         (Ffre): Likewise.
2223         (FFRE): Likewise.
2224         (abs<mode>2): Combine SF/DF modes using traditional floating point
2225         instructions.  Add support for using the upper DF registers with
2226         VSX support, and SF registers with power8-vector support.  Update
2227         expanders for operations supported by both the SPE and traditional
2228         floating point units.
2229         (abs<mode>2_fpr): Likewise.
2230         (nabs<mode>2): Likewise.
2231         (nabs<mode>2_fpr): Likewise.
2232         (neg<mode>2): Likewise.
2233         (neg<mode>2_fpr): Likewise.
2234         (add<mode>3): Likewise.
2235         (add<mode>3_fpr): Likewise.
2236         (sub<mode>3): Likewise.
2237         (sub<mode>3_fpr): Likewise.
2238         (mul<mode>3): Likewise.
2239         (mul<mode>3_fpr): Likewise.
2240         (div<mode>3): Likewise.
2241         (div<mode>3_fpr): Likewise.
2242         (sqrt<mode>3): Likewise.
2243         (sqrt<mode>3_fpr): Likewise.
2244         (fre<Fs>): Likewise.
2245         (rsqrt<mode>2): Likewise.
2246         (cmp<mode>_fpr): Likewise.
2247         (smax<mode>3): Likewise.
2248         (smin<mode>3): Likewise.
2249         (smax<mode>3_vsx): Likewise.
2250         (smin<mode>3_vsx): Likewise.
2251         (negsf2): Delete SF operations that are merged with DF.
2252         (abssf2): Likewise.
2253         (addsf3): Likewise.
2254         (subsf3): Likewise.
2255         (mulsf3): Likewise.
2256         (divsf3): Likewise.
2257         (fres): Likewise.
2258         (fmasf4_fpr): Likewise.
2259         (fmssf4_fpr): Likewise.
2260         (nfmasf4_fpr): Likewise.
2261         (nfmssf4_fpr): Likewise.
2262         (sqrtsf2): Likewise.
2263         (rsqrtsf_internal1): Likewise.
2264         (smaxsf3): Likewise.
2265         (sminsf3): Likewise.
2266         (cmpsf_internal1): Likewise.
2267         (copysign<mode>3_fcpsgn): Add VSX/power8-vector support.
2268         (negdf2): Delete DF operations that are merged with SF.
2269         (absdf2): Likewise.
2270         (nabsdf2): Likewise.
2271         (adddf3): Likewise.
2272         (subdf3): Likewise.
2273         (muldf3): Likewise.
2274         (divdf3): Likewise.
2275         (fred): Likewise.
2276         (rsqrtdf_internal1): Likewise.
2277         (fmadf4_fpr): Likewise.
2278         (fmsdf4_fpr): Likewise.
2279         (nfmadf4_fpr): Likewise.
2280         (nfmsdf4_fpr): Likewise.
2281         (sqrtdf2): Likewise.
2282         (smaxdf3): Likewise.
2283         (smindf3): Likewise.
2284         (cmpdf_internal1): Likewise.
2285         (lrint<mode>di2): Use TARGET_<MODE>_FPR macro.
2286         (btrunc<mode>2): Delete separate expander, and combine with the
2287         insn and add VSX instruction support.  Use TARGET_<MODE>_FPR.
2288         (btrunc<mode>2_fpr): Likewise.
2289         (ceil<mode>2): Likewise.
2290         (ceil<mode>2_fpr): Likewise.
2291         (floor<mode>2): Likewise.
2292         (floor<mode>2_fpr): Likewise.
2293         (fma<mode>4_fpr): Combine SF and DF fused multiply/add support.
2294         Add support for using the upper registers with VSX and
2295         power8-vector.  Move insns to be closer to the define_expands. On
2296         VSX systems, prefer the traditional form of FMA over the VSX
2297         version, since the traditional form allows the target not to
2298         overlap with the inputs.
2299         (fms<mode>4_fpr): Likewise.
2300         (nfma<mode>4_fpr): Likewise.
2301         (nfms<mode>4_fpr): Likewise.
2303         Backport from mainline
2304         2013-09-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
2306         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Allow
2307         DFmode, DImode, and SFmode in the upper VSX registers based on the
2308         -mupper-regs-{df,sf} flags.  Fix wu constraint to be ALTIVEC_REGS
2309         if -mpower8-vector.  Combine -mvsx-timode handling with the rest
2310         of the VSX register handling.
2312         * config/rs6000/rs6000.md (f32_lv): Use %x0 for VSX regsters.
2313         (f32_sv): Likewise.
2314         (zero_extendsidi2_lfiwzx): Add support for loading into the
2315         Altivec registers with -mpower8-vector.  Use wu/wv constraints to
2316         only do VSX memory options on Altivec registers.
2317         (extendsidi2_lfiwax): Likewise.
2318         (extendsfdf2_fpr): Likewise.
2319         (mov<mode>_hardfloat, SF/SD modes): Likewise.
2320         (mov<mode>_hardfloat32, DF/DD modes): Likewise.
2321         (mov<mode>_hardfloat64, DF/DD modes): Likewise.
2322         (movdi_internal64): Likewise.
2324         Backport from mainline
2325         2013-09-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
2327         * config/rs6000/rs6000.c (rs6000_vector_reload): Delete, combine
2328         reload helper function arrays into a single array reg_addr.
2329         (reload_fpr_gpr): Likewise.
2330         (reload_gpr_vsx): Likewise.
2331         (reload_vsx_gpr): Likewise.
2332         (struct rs6000_reg_addr): Likewise.
2333         (reg_addr): Likewise.
2334         (rs6000_debug_reg_global): Change rs6000_vector_reload,
2335         reload_fpr_gpr, reload_gpr_vsx, reload_vsx_gpr uses to reg_addr.
2336         (rs6000_init_hard_regno_mode_ok): Likewise.
2337         (rs6000_secondary_reload_direct_move): Likewise.
2338         (rs6000_secondary_reload): Likewise.
2340         * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Add new
2341         constraints: wu, ww, and wy.  Repurpose wv constraint added during
2342         power8 changes.  Put wg constraint in alphabetical order.
2344         * config/rs6000/rs6000.opt (-mvsx-scalar-float): New debug switch
2345         for future work to add ISA 2.07 VSX single precision support.
2346         (-mvsx-scalar-double): Change default from -1 to 1, update
2347         documentation comment.
2348         (-mvsx-scalar-memory): Rename debug switch to -mupper-regs-df.
2349         (-mupper-regs-df): New debug switch to control whether DF values
2350         can go in the traditional Altivec registers.
2351         (-mupper-regs-sf): New debug switch to control whether SF values
2352         can go in the traditional Altivec registers.
2354         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Print wu, ww,
2355         and wy constraints.
2356         (rs6000_init_hard_regno_mode_ok): Use ssize_t instead of int for
2357         loop variables.  Rename -mvsx-scalar-memory to -mupper-regs-df.
2358         Add new constraints, wu/ww/wy.  Repurpose wv constraint.
2359         (rs6000_debug_legitimate_address_p): Print if we are running
2360         before, during, or after reload.
2361         (rs6000_secondary_reload): Add a comment.
2362         (rs6000_opt_masks): Add -mupper-regs-df, -mupper-regs-sf.
2364         * config/rs6000/constraints.md (wa constraint): Sort w<x>
2365         constraints.  Update documentation string.
2366         (wd constraint): Likewise.
2367         (wf constraint): Likewise.
2368         (wg constraint): Likewise.
2369         (wn constraint): Likewise.
2370         (ws constraint): Likewise.
2371         (wt constraint): Likewise.
2372         (wx constraint): Likewise.
2373         (wz constraint): Likewise.
2374         (wu constraint): New constraint for ISA 2.07 SFmode scalar
2375         instructions.
2376         (ww constraint): Likewise.
2377         (wy constraint): Likewise.
2378         (wv constraint): Repurpose ISA 2.07 constraint that did not use in
2379         the previous submissions.
2380         * doc/md.texi (PowerPC and IBM RS6000): Likewise.
2382         Backport from mainline
2383         2013-10-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
2385         PR target/58673
2386         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Only
2387         restrict TImode addresses to single indirect registers if both
2388         -mquad-memory and -mvsx-timode are used.
2389         (rs6000_output_move_128bit): Use quad_load_store_p to determine if
2390         we should emit load/store quad.  Remove using %y for quad memory
2391         addresses.
2393         * config/rs6000/rs6000.md (mov<mode>_ppc64, TI/PTImode): Add
2394         constraints to allow load/store quad on machines where TImode is
2395         not allowed in VSX registers.  Use 'n' instead of 'F' constraint
2396         for TImode to load integer constants.
2398         Backport from mainline
2399         2013-10-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
2401         PR target/58587
2402         * config/rs6000/rs6000-cpus.def (ISA_2_6_MASKS_SERVER): Turn off
2403         setting -mvsx-timode by default until the underlying problem is
2404         fixed.
2405         (RS6000_CPU, power7 defaults): Likewise.
2407         Backport from trunk
2408         2013-08-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
2410         PR target/58160
2411         * config/rs6000/predicates.md (fusion_gpr_mem_load): Allow the
2412         memory rtx to contain ZERO_EXTEND and SIGN_EXTEND.
2414         * config/rs6000/rs6000-protos.h (fusion_gpr_load_p): Pass operands
2415         array instead of each individual operand as a separate argument.
2416         (emit_fusion_gpr_load): Likewise.
2417         (expand_fusion_gpr_load): Add new function declaration.
2419         * config/rs6000/rs6000.c (fusion_gpr_load_p): Change the calling
2420         signature to have the operands passed as an array, instead of as
2421         separate arguments.  Allow ZERO_EXTEND to be in the memory
2422         address, and also SIGN_EXTEND if -mpower8-fusion-sign.  Do not
2423         depend on the register live/dead flags when peepholes are run.
2424         (expand_fusion_gpr_load): New function to be called from the
2425         peephole2 pass, to change the register that addis sets to be the
2426         target register.
2427         (emit_fusion_gpr_load): Change the calling signature to have the
2428         operands passed as an array, instead of as separate arguments.
2429         Allow ZERO_EXTEND to be in the memory address, and also
2430         SIGN_EXTEND if -mpower8-fusion-sign.
2432         * config/rs6000/rs6000.md (UNSPEC_FUSION_GPR): Delete unused
2433         unspec enumeration.
2434         (power8 fusion peephole/peephole2): Rework the fusion peepholes to
2435         adjust the register addis loads up in the peephole2 pass.  Do not
2436         depend on the register live/dead state when the peephole pass is
2437         done.
2439         Backport from trunk
2440         2013-07-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
2442         * config/rs6000/vector.md (xor<mode>3): Move 128-bit boolean
2443         expanders to rs6000.md.
2444         (ior<mode>3): Likewise.
2445         (and<mode>3): Likewise.
2446         (one_cmpl<mode>2): Likewise.
2447         (nor<mode>3): Likewise.
2448         (andc<mode>3): Likewise.
2449         (eqv<mode>3): Likewise.
2450         (nand<mode>3): Likewise.
2451         (orc<mode>3): Likewise.
2453         * config/rs6000/rs6000-protos.h (rs6000_split_logical): New
2454         declaration.
2456         * config/rs6000/rs6000.c (rs6000_split_logical_inner): Add support
2457         to split multi-word logical operations.
2458         (rs6000_split_logical_di): Likewise.
2459         (rs6000_split_logical): Likewise.
2461         * config/rs6000/vsx.md (VSX_L2): Delete, no longer used.
2462         (vsx_and<mode>3_32bit): Move 128-bit logical insns to rs6000.md,
2463         and allow TImode operations in 32-bit.
2464         (vsx_and<mode>3_64bit): Likewise.
2465         (vsx_ior<mode>3_32bit): Likewise.
2466         (vsx_ior<mode>3_64bit): Likewise.
2467         (vsx_xor<mode>3_32bit): Likewise.
2468         (vsx_xor<mode>3_64bit): Likewise.
2469         (vsx_one_cmpl<mode>2_32bit): Likewise.
2470         (vsx_one_cmpl<mode>2_64bit): Likewise.
2471         (vsx_nor<mode>3_32bit): Likewise.
2472         (vsx_nor<mode>3_64bit): Likewise.
2473         (vsx_andc<mode>3_32bit): Likewise.
2474         (vsx_andc<mode>3_64bit): Likewise.
2475         (vsx_eqv<mode>3_32bit): Likewise.
2476         (vsx_eqv<mode>3_64bit): Likewise.
2477         (vsx_nand<mode>3_32bit): Likewise.
2478         (vsx_nand<mode>3_64bit): Likewise.
2479         (vsx_orc<mode>3_32bit): Likewise.
2480         (vsx_orc<mode>3_64bit): Likewise.
2482         * config/rs6000/rs6000.h (VLOGICAL_REGNO_P): Always allow vector
2483         logical types in GPRs.
2485         * config/rs6000/altivec.md (altivec_and<mode>3): Move 128-bit
2486         logical insns to rs6000.md, and allow TImode operations in
2487         32-bit.
2488         (altivec_ior<mode>3): Likewise.
2489         (altivec_xor<mode>3): Likewise.
2490         (altivec_one_cmpl<mode>2): Likewise.
2491         (altivec_nor<mode>3): Likewise.
2492         (altivec_andc<mode>3): Likewise.
2494         * config/rs6000/rs6000.md (BOOL_128): New mode iterators and mode
2495         attributes for moving the 128-bit logical operations into
2496         rs6000.md.
2497         (BOOL_REGS_OUTPUT): Likewise.
2498         (BOOL_REGS_OP1): Likewise.
2499         (BOOL_REGS_OP2): Likewise.
2500         (BOOL_REGS_UNARY): Likewise.
2501         (BOOL_REGS_AND_CR0): Likewise.
2502         (one_cmpl<mode>2): Add support for DI logical operations on
2503         32-bit, splitting the operations to 32-bit.
2504         (anddi3): Likewise.
2505         (iordi3): Likewise.
2506         (xordi3): Likewise.
2507         (and<mode>3, 128-bit types): Rewrite 2013-06-06 logical operator
2508         changes to combine the 32/64-bit code, allow logical operations on
2509         TI mode in 32-bit, and to use similar match_operator patterns like
2510         scalar mode uses.  Combine the Altivec and VSX code for logical
2511         operations, and move it here.
2512         (ior<mode>3, 128-bit types): Likewise.
2513         (xor<mode>3, 128-bit types): Likewise.
2514         (one_cmpl<mode>3, 128-bit types): Likewise.
2515         (nor<mode>3, 128-bit types): Likewise.
2516         (andc<mode>3, 128-bit types): Likewise.
2517         (eqv<mode>3, 128-bit types): Likewise.
2518         (nand<mode>3, 128-bit types): Likewise.
2519         (orc<mode>3, 128-bit types): Likewise.
2520         (and<mode>3_internal): Likewise.
2521         (bool<mode>3_internal): Likewise.
2522         (boolc<mode>3_internal1): Likewise.
2523         (boolc<mode>3_internal2): Likewise.
2524         (boolcc<mode>3_internal1): Likewise.
2525         (boolcc<mode>3_internal2): Likewise.
2526         (eqv<mode>3_internal1): Likewise.
2527         (eqv<mode>3_internal2): Likewise.
2528         (one_cmpl1<mode>3_internal): Likewise.
2530         Back port from mainline:
2531         2013-06-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
2532                     Pat Haugen <pthaugen@us.ibm.com>
2533                     Peter Bergner <bergner@vnet.ibm.com>
2535         * lib/target-supports.exp (check_p8vector_hw_available) Add power8
2536         support.
2537         (check_effective_target_powerpc_p8vector_ok): Likewise.
2538         (is-effective-target): Likewise.
2539         (check_vect_support_and_set_flags): Likewise.
2541         Backport from mainline
2542         2013-07-31  Michael Meissner  <meissner@linux.vnet.ibm.com>
2544         * config/rs6000/predicates.md (fusion_gpr_addis): New predicates
2545         to support power8 load fusion.
2546         (fusion_gpr_mem_load): Likewise.
2548         * config/rs6000/rs6000-modes.def (PTImode): Update a comment.
2550         * config/rs6000/rs6000-protos.h (fusion_gpr_load_p): New
2551         declarations for power8 load fusion.
2552         (emit_fusion_gpr_load): Likewise.
2554         * config/rs6000/rs6000.c (rs6000_option_override_internal): If
2555         tuning for power8, turn on fusion mode by default.  Turn on sign
2556         extending fusion mode if normal fusion mode is on, and we are at
2557         -O2 or -O3.
2558         (fusion_gpr_load_p): New function, return true if we can fuse an
2559         addis instruction with a dependent load to a GPR.
2560         (emit_fusion_gpr_load): Emit the instructions for power8 load
2561         fusion to GPRs.
2563         * config/rs6000/vsx.md (VSX_M2): New iterator for fusion
2564         peepholes.
2565         (VSX load fusion peepholes): New peepholes to fuse together an
2566         addi instruction with a VSX load instruction.
2568         * config/rs6000/rs6000.md (GPR load fusion peepholes): New
2569         peepholes to fuse an addis instruction with a load to a GPR base
2570         register.  If we are supporting sign extending fusions, convert
2571         sign extending loads to zero extending loads and add an explicit
2572         sign extension.
2574         Backport from mainline
2575         2013-07-18  Pat Haugen <pthaugen@us.ibm.com>
2577         * config/rs6000/rs6000.c (rs6000_option_override_internal): Adjust flag
2578         interaction for new Power8 flags and VSX.
2580         Back port from the trunk
2581         2013-06-28  Michael Meissner  <meissner@linux.vnet.ibm.com>
2583         PR target/57744
2584         * config/rs6000/rs6000.h (MODES_TIEABLE_P): Do not allow PTImode
2585         to tie with any other modes.  Eliminate Altivec vector mode tests,
2586         since these are a subset of ALTIVEC or VSX vector modes.  Simplify
2587         code, to return 0 if testing MODE2 for a condition, if we've
2588         already tested MODE1 for the same condition.
2590         Backport from mainline
2591         2013-06-28  Pat Haugen <pthaugen@us.ibm.com>
2593         * config/rs6000/rs6000.md (define_insn ""): Fix insn type.
2595         Back port from the trunk
2596         2013-06-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
2597                     Pat Haugen <pthaugen@us.ibm.com>
2598                     Peter Bergner <bergner@vnet.ibm.com>
2600         * config/rs6000/power8.md: New.
2601         * config/rs6000/rs6000-cpus.def (RS6000_CPU table): Adjust processor
2602         setting for power8 entry.
2603         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power8.md.
2604         * config/rs6000/rs6000.c (is_microcoded_insn, is_cracked_insn): Adjust
2605         test for Power4/Power5 only.
2606         (insn_must_be_first_in_group, insn_must_be_last_in_group): Add Power8
2607         support.
2608         (force_new_group): Adjust comment.
2609         * config/rs6000/rs6000.md: Include power8.md.
2611         Back port from the trunk
2612         2013-06-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
2614         PR target/57615
2615         * config/rs6000/rs6000.md (mov<mode>_ppc64): Call
2616         rs6000_output_move_128bit to handle emitting quad memory
2617         operations.  Set attribute length to 8 bytes.
2619         Back port from the trunk
2620         2013-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
2622         * config/rs6000/rs6000.c (rs6000_option_override_internal): Move
2623         test for clearing quad memory on 32-bit later.
2625         Back port from the trunk
2627         2013-06-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
2628                     Pat Haugen <pthaugen@us.ibm.com>
2629                     Peter Bergner <bergner@vnet.ibm.com>
2631         * config/rs6000/rs6000.c (emit_load_locked): Add support for
2632         power8 byte, half-word, and quad-word atomic instructions.
2633         (emit_store_conditional): Likewise.
2634         (rs6000_expand_atomic_compare_and_swap): Likewise.
2635         (rs6000_expand_atomic_op): Likewise.
2637         * config/rs6000/sync.md (larx): Add new modes for power8.
2638         (stcx): Likewise.
2639         (AINT): New mode iterator to include TImode as well as normal
2640         integer modes on power8.
2641         (fetchop_pred): Use int_reg_operand instead of gpc_reg_operand so
2642         that VSX registers are not considered.  Use AINT mode iterator
2643         instead of INT1 to allow inclusion of quad word atomic operations
2644         on power8.
2645         (load_locked<mode>): Likewise.
2646         (store_conditional<mode>): Likewise.
2647         (atomic_compare_and_swap<mode>): Likewise.
2648         (atomic_exchange<mode>): Likewise.
2649         (atomic_nand<mode>): Likewise.
2650         (atomic_fetch_<fetchop_name><mode>): Likewise.
2651         (atomic_nand_fetch<mode>): Likewise.
2652         (mem_thread_fence): Use gen_loadsync_<mode> instead of enumerating
2653         each type.
2654         (ATOMIC): On power8, add QImode, HImode modes.
2655         (load_locked<QHI:mode>_si): Varients of load_locked for QI/HI
2656         modes that promote to SImode.
2657         (load_lockedti): Convert TImode arguments to PTImode, so that we
2658         get a guaranteed even/odd register pair.
2659         (load_lockedpti): Likewise.
2660         (store_conditionalti): Likewise.
2661         (store_conditionalpti): Likewise.
2663         * config/rs6000/rs6000.md (QHI): New mode iterator for power8
2664         atomic load/store instructions.
2665         (HSI): Likewise.
2667         Back port from the trunk
2669         2013-06-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
2670                     Pat Haugen <pthaugen@us.ibm.com>
2671                     Peter Bergner <bergner@vnet.ibm.com>
2673         * config/rs6000/vector.md (GPR move splitter): Do not split moves
2674         of vectors in GPRS if they are direct moves or quad word load or
2675         store moves.
2677         * config/rs6000/rs6000-protos.h (rs6000_output_move_128bit): Add
2678         declaration.
2679         (direct_move_p): Likewise.
2680         (quad_load_store_p): Likewise.
2682         * config/rs6000/rs6000.c (enum rs6000_reg_type): Simplify register
2683         classes into bins based on the physical register type.
2684         (reg_class_to_reg_type): Likewise.
2685         (IS_STD_REG_TYPE): Likewise.
2686         (IS_FP_VECT_REG_TYPE): Likewise.
2687         (reload_fpr_gpr): Arrays to determine what insn to use if we can
2688         use direct move instructions.
2689         (reload_gpr_vsx): Likewise.
2690         (reload_vsx_gpr): Likewise.
2691         (rs6000_init_hard_regno_mode_ok): Precalculate the register type
2692         information that is a simplification of register classes.  Also
2693         precalculate direct move reload helpers.
2694         (direct_move_p): New function to return true if the operation can
2695         be done as a direct move instruciton.
2696         (quad_load_store_p): New function to return true if the operation
2697         is a quad memory operation.
2698         (rs6000_legitimize_address): If quad memory, only allow register
2699         indirect for TImode addresses.
2700         (rs6000_legitimate_address_p): Likewise.
2701         (enum reload_reg_type): Delete, replace with rs6000_reg_type.
2702         (rs6000_reload_register_type): Likewise.
2703         (register_to_reg_type): Return register type.
2704         (rs6000_secondary_reload_simple_move): New helper function for
2705         secondary reload and secondary memory needed to identify anything
2706         that is a simple move, and does not need reloading.
2707         (rs6000_secondary_reload_direct_move): New helper function for
2708         secondary reload to identify cases that can be done with several
2709         instructions via the direct move instructions.
2710         (rs6000_secondary_reload_move): New helper function for secondary
2711         reload to identify moves between register types that can be done.
2712         (rs6000_secondary_reload): Add support for quad memory operations
2713         and for direct move.
2714         (rs6000_secondary_memory_needed): Likewise.
2715         (rs6000_debug_secondary_memory_needed): Change argument names.
2716         (rs6000_output_move_128bit): New function to return the move to
2717         use for 128-bit moves, including knowing about the various
2718         limitations of quad memory operations.
2720         * config/rs6000/vsx.md (vsx_mov<mode>): Add support for quad
2721         memory operations.  call rs6000_output_move_128bit for the actual
2722         instruciton(s) to generate.
2723         (vsx_movti_64bit): Likewise.
2725         * config/rs6000/rs6000.md (UNSPEC_P8V_FMRGOW): New unspec values.
2726         (UNSPEC_P8V_MTVSRWZ): Likewise.
2727         (UNSPEC_P8V_RELOAD_FROM_GPR): Likewise.
2728         (UNSPEC_P8V_MTVSRD): Likewise.
2729         (UNSPEC_P8V_XXPERMDI): Likewise.
2730         (UNSPEC_P8V_RELOAD_FROM_VSX): Likewise.
2731         (UNSPEC_FUSION_GPR): Likewise.
2732         (FMOVE128_GPR): New iterator for direct move.
2733         (f32_lv): New mode attribute for load/store of SFmode/SDmode
2734         values.
2735         (f32_sv): Likewise.
2736         (f32_dm): Likewise.
2737         (zero_extend<mode>di2_internal1): Add support for power8 32-bit
2738         loads and direct move instructions.
2739         (zero_extendsidi2_lfiwzx): Likewise.
2740         (extendsidi2_lfiwax): Likewise.
2741         (extendsidi2_nocell): Likewise.
2742         (floatsi<mode>2_lfiwax): Likewise.
2743         (lfiwax): Likewise.
2744         (floatunssi<mode>2_lfiwzx): Likewise.
2745         (lfiwzx): Likewise.
2746         (fix_trunc<mode>_stfiwx): Likewise.
2747         (fixuns_trunc<mode>_stfiwx): Likewise.
2748         (mov<mode>_hardfloat, 32-bit floating point): Likewise.
2749         (mov<move>_hardfloat64, 64-bit floating point): Likewise.
2750         (parity<mode>2_cmpb): Set length/type attr.
2751         (unnamed shift right patterns, mov<mode>_internal2): Change type attr
2752         for 'mr.' to fast_compare.
2753         (bpermd_<mode>): Change type attr to popcnt.
2754         (p8_fmrgow_<mode>): New insns for power8 direct move support.
2755         (p8_mtvsrwz_1): Likewise.
2756         (p8_mtvsrwz_2): Likewise.
2757         (reload_fpr_from_gpr<mode>): Likewise.
2758         (p8_mtvsrd_1): Likewise.
2759         (p8_mtvsrd_2): Likewise.
2760         (p8_xxpermdi_<mode>): Likewise.
2761         (reload_vsx_from_gpr<mode>): Likewise.
2762         (reload_vsx_from_gprsf): Likewise.
2763         (p8_mfvsrd_3_<mode>): LIkewise.
2764         (reload_gpr_from_vsx<mode>): Likewise.
2765         (reload_gpr_from_vsxsf): Likewise.
2766         (p8_mfvsrd_4_disf): Likewise.
2767         (multi-word GPR splits): Do not split direct moves or quad memory
2768         operations.
2770         Backport from the trunk
2772         2013-06-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
2773                     Pat Haugen <pthaugen@us.ibm.com>
2774                     Peter Bergner <bergner@vnet.ibm.com>
2776         * doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions):
2777         Document new power8 builtins.
2779         * config/rs6000/vector.md (and<mode>3): Add a clobber/scratch of a
2780         condition code register, to allow 128-bit logical operations to be
2781         done in the VSX or GPR registers.
2782         (nor<mode>3): Use the canonical form for nor.
2783         (eqv<mode>3): Add expanders for power8 xxleqv, xxlnand, xxlorc,
2784         vclz*, and vpopcnt* vector instructions.
2785         (nand<mode>3): Likewise.
2786         (orc<mode>3): Likewise.
2787         (clz<mode>2): LIkewise.
2788         (popcount<mode>2): Likewise.
2790         * config/rs6000/predicates.md (int_reg_operand): Rework tests so
2791         that only the GPRs are recognized.
2793         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
2794         support for new power8 builtins.
2796         * config/rs6000/rs6000-builtin.def (xscvspdpn): Add new power8
2797         builtin functions.
2798         (xscvdpspn): Likewise.
2799         (vclz): Likewise.
2800         (vclzb): Likewise.
2801         (vclzh): Likewise.
2802         (vclzw): Likewise.
2803         (vclzd): Likewise.
2804         (vpopcnt): Likewise.
2805         (vpopcntb): Likewise.
2806         (vpopcnth): Likewise.
2807         (vpopcntw): Likewise.
2808         (vpopcntd): Likewise.
2809         (vgbbd): Likewise.
2810         (vmrgew): Likewise.
2811         (vmrgow): Likewise.
2812         (eqv): Likewise.
2813         (eqv_v16qi3): Likewise.
2814         (eqv_v8hi3): Likewise.
2815         (eqv_v4si3): Likewise.
2816         (eqv_v2di3): Likewise.
2817         (eqv_v4sf3): Likewise.
2818         (eqv_v2df3): Likewise.
2819         (nand): Likewise.
2820         (nand_v16qi3): Likewise.
2821         (nand_v8hi3): Likewise.
2822         (nand_v4si3): Likewise.
2823         (nand_v2di3): Likewise.
2824         (nand_v4sf3): Likewise.
2825         (nand_v2df3): Likewise.
2826         (orc): Likewise.
2827         (orc_v16qi3): Likewise.
2828         (orc_v8hi3): Likewise.
2829         (orc_v4si3): Likewise.
2830         (orc_v2di3): Likewise.
2831         (orc_v4sf3): Likewise.
2832         (orc_v2df3): Likewise.
2834         * config/rs6000/rs6000.c (rs6000_option_override_internal): Only
2835         allow power8 quad mode in 64-bit.
2836         (rs6000_builtin_vectorized_function): Add support to vectorize
2837         ISA 2.07 count leading zeros, population count builtins.
2838         (rs6000_expand_vector_init): On ISA 2.07 use xscvdpspn to form
2839         V4SF vectors instead of xscvdpsp to avoid IEEE related traps.
2840         (builtin_function_type): Add vgbbd builtin function which takes an
2841         unsigned argument.
2842         (altivec_expand_vec_perm_const): Add support for new power8 merge
2843         instructions.
2845         * config/rs6000/vsx.md (VSX_L2): New iterator for 128-bit types,
2846         that does not include TImdoe for use with 32-bit.
2847         (UNSPEC_VSX_CVSPDPN): Support for power8 xscvdpspn and xscvspdpn
2848         instructions.
2849         (UNSPEC_VSX_CVDPSPN): Likewise.
2850         (vsx_xscvdpspn): Likewise.
2851         (vsx_xscvspdpn): Likewise.
2852         (vsx_xscvdpspn_scalar): Likewise.
2853         (vsx_xscvspdpn_directmove): Likewise.
2854         (vsx_and<mode>3): Split logical operations into 32-bit and
2855         64-bit. Add support to do logical operations on TImode as well as
2856         VSX vector types.  Allow logical operations to be done in either
2857         VSX registers or in general purpose registers in 64-bit mode.  Add
2858         splitters if GPRs were used. For AND, add clobber of CCmode to
2859         allow use of ANDI on GPRs.  Rewrite nor to use the canonical RTL
2860         encoding.
2861         (vsx_and<mode>3_32bit): Likewise.
2862         (vsx_and<mode>3_64bit): Likewise.
2863         (vsx_ior<mode>3): Likewise.
2864         (vsx_ior<mode>3_32bit): Likewise.
2865         (vsx_ior<mode>3_64bit): Likewise.
2866         (vsx_xor<mode>3): Likewise.
2867         (vsx_xor<mode>3_32bit): Likewise.
2868         (vsx_xor<mode>3_64bit): Likewise.
2869         (vsx_one_cmpl<mode>2): Likewise.
2870         (vsx_one_cmpl<mode>2_32bit): Likewise.
2871         (vsx_one_cmpl<mode>2_64bit): Likewise.
2872         (vsx_nor<mode>3): Likewise.
2873         (vsx_nor<mode>3_32bit): Likewise.
2874         (vsx_nor<mode>3_64bit): Likewise.
2875         (vsx_andc<mode>3): Likewise.
2876         (vsx_andc<mode>3_32bit): Likewise.
2877         (vsx_andc<mode>3_64bit): Likewise.
2878         (vsx_eqv<mode>3_32bit): Add support for power8 xxleqv, xxlnand,
2879         and xxlorc instructions.
2880         (vsx_eqv<mode>3_64bit): Likewise.
2881         (vsx_nand<mode>3_32bit): Likewise.
2882         (vsx_nand<mode>3_64bit): Likewise.
2883         (vsx_orc<mode>3_32bit): Likewise.
2884         (vsx_orc<mode>3_64bit): Likewise.
2886         * config/rs6000/rs6000.h (VLOGICAL_REGNO_P): Update comment.
2888         * config/rs6000/altivec.md (UNSPEC_VGBBD): Add power8 vgbbd
2889         instruction.
2890         (p8_vmrgew): Add power8 vmrgew and vmrgow instructions.
2891         (p8_vmrgow): Likewise.
2892         (altivec_and<mode>3): Add clobber of CCmode to allow AND using
2893         GPRs to be split under VSX.
2894         (p8v_clz<mode>2): Add power8 count leading zero support.
2895         (p8v_popcount<mode>2): Add power8 population count support.
2896         (p8v_vgbbd): Add power8 gather bits by bytes by doubleword
2897         support.
2899         * config/rs6000/rs6000.md (eqv<mode>3): Add support for powerp eqv
2900         instruction.
2902         * config/rs6000/altivec.h (vec_eqv): Add defines to export power8
2903         builtin functions.
2904         (vec_nand): Likewise.
2905         (vec_vclz): Likewise.
2906         (vec_vclzb): Likewise.
2907         (vec_vclzd): Likewise.
2908         (vec_vclzh): Likewise.
2909         (vec_vclzw): Likewise.
2910         (vec_vgbbd): Likewise.
2911         (vec_vmrgew): Likewise.
2912         (vec_vmrgow): Likewise.
2913         (vec_vpopcnt): Likewise.
2914         (vec_vpopcntb): Likewise.
2915         (vec_vpopcntd): Likewise.
2916         (vec_vpopcnth): Likewise.
2917         (vec_vpopcntw): Likewise.
2919         Backport from trunk
2921         2013-05-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
2922                     Pat Haugen <pthaugen@us.ibm.com>
2923                     Peter Bergner <bergner@vnet.ibm.com>
2925         * config/rs6000/vector.md (VEC_I): Add support for new power8 V2DI
2926         instructions.
2927         (VEC_A): Likewise.
2928         (VEC_C): Likewise.
2929         (vrotl<mode>3): Likewise.
2930         (vashl<mode>3): Likewise.
2931         (vlshr<mode>3): Likewise.
2932         (vashr<mode>3): Likewise.
2934         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
2935         support for power8 V2DI builtins.
2937         * config/rs6000/rs6000-builtin.def (abs_v2di): Add support for
2938         power8 V2DI builtins.
2939         (vupkhsw): Likewise.
2940         (vupklsw): Likewise.
2941         (vaddudm): Likewise.
2942         (vminsd): Likewise.
2943         (vmaxsd): Likewise.
2944         (vminud): Likewise.
2945         (vmaxud): Likewise.
2946         (vpkudum): Likewise.
2947         (vpksdss): Likewise.
2948         (vpkudus): Likewise.
2949         (vpksdus): Likewise.
2950         (vrld): Likewise.
2951         (vsld): Likewise.
2952         (vsrd): Likewise.
2953         (vsrad): Likewise.
2954         (vsubudm): Likewise.
2955         (vcmpequd): Likewise.
2956         (vcmpgtsd): Likewise.
2957         (vcmpgtud): Likewise.
2958         (vcmpequd_p): Likewise.
2959         (vcmpgtsd_p): Likewise.
2960         (vcmpgtud_p): Likewise.
2961         (vupkhsw): Likewise.
2962         (vupklsw): Likewise.
2963         (vaddudm): Likewise.
2964         (vmaxsd): Likewise.
2965         (vmaxud): Likewise.
2966         (vminsd): Likewise.
2967         (vminud): Likewise.
2968         (vpksdss): Likewise.
2969         (vpksdus): Likewise.
2970         (vpkudum): Likewise.
2971         (vpkudus): Likewise.
2972         (vrld): Likewise.
2973         (vsld): Likewise.
2974         (vsrad): Likewise.
2975         (vsrd): Likewise.
2976         (vsubudm): Likewise.
2978         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
2979         support for power8 V2DI instructions.
2981         * config/rs6000/altivec.md (UNSPEC_VPKUHUM): Add support for
2982         power8 V2DI instructions.  Combine pack and unpack insns to use an
2983         iterator for each mode.  Check whether a particular mode supports
2984         Altivec instructions instead of just checking TARGET_ALTIVEC.
2985         (UNSPEC_VPKUWUM): Likewise.
2986         (UNSPEC_VPKSHSS): Likewise.
2987         (UNSPEC_VPKSWSS): Likewise.
2988         (UNSPEC_VPKUHUS): Likewise.
2989         (UNSPEC_VPKSHUS): Likewise.
2990         (UNSPEC_VPKUWUS): Likewise.
2991         (UNSPEC_VPKSWUS): Likewise.
2992         (UNSPEC_VPACK_SIGN_SIGN_SAT): Likewise.
2993         (UNSPEC_VPACK_SIGN_UNS_SAT): Likewise.
2994         (UNSPEC_VPACK_UNS_UNS_SAT): Likewise.
2995         (UNSPEC_VPACK_UNS_UNS_MOD): Likewise.
2996         (UNSPEC_VUPKHSB): Likewise.
2997         (UNSPEC_VUNPACK_HI_SIGN): Likewise.
2998         (UNSPEC_VUNPACK_LO_SIGN): Likewise.
2999         (UNSPEC_VUPKHSH): Likewise.
3000         (UNSPEC_VUPKLSB): Likewise.
3001         (UNSPEC_VUPKLSH): Likewise.
3002         (VI2): Likewise.
3003         (VI_char): Likewise.
3004         (VI_scalar): Likewise.
3005         (VI_unit): Likewise.
3006         (VP): Likewise.
3007         (VP_small): Likewise.
3008         (VP_small_lc): Likewise.
3009         (VU_char): Likewise.
3010         (add<mode>3): Likewise.
3011         (altivec_vaddcuw): Likewise.
3012         (altivec_vaddu<VI_char>s): Likewise.
3013         (altivec_vadds<VI_char>s): Likewise.
3014         (sub<mode>3): Likewise.
3015         (altivec_vsubcuw): Likewise.
3016         (altivec_vsubu<VI_char>s): Likewise.
3017         (altivec_vsubs<VI_char>s): Likewise.
3018         (altivec_vavgs<VI_char>): Likewise.
3019         (altivec_vcmpbfp): Likewise.
3020         (altivec_eq<mode>): Likewise.
3021         (altivec_gt<mode>): Likewise.
3022         (altivec_gtu<mode>): Likewise.
3023         (umax<mode>3): Likewise.
3024         (smax<mode>3): Likewise.
3025         (umin<mode>3): Likewise.
3026         (smin<mode>3): Likewise.
3027         (altivec_vpkuhum): Likewise.
3028         (altivec_vpkuwum): Likewise.
3029         (altivec_vpkshss): Likewise.
3030         (altivec_vpkswss): Likewise.
3031         (altivec_vpkuhus): Likewise.
3032         (altivec_vpkshus): Likewise.
3033         (altivec_vpkuwus): Likewise.
3034         (altivec_vpkswus): Likewise.
3035         (altivec_vpks<VI_char>ss): Likewise.
3036         (altivec_vpks<VI_char>us): Likewise.
3037         (altivec_vpku<VI_char>us): Likewise.
3038         (altivec_vpku<VI_char>um): Likewise.
3039         (altivec_vrl<VI_char>): Likewise.
3040         (altivec_vsl<VI_char>): Likewise.
3041         (altivec_vsr<VI_char>): Likewise.
3042         (altivec_vsra<VI_char>): Likewise.
3043         (altivec_vsldoi_<mode>): Likewise.
3044         (altivec_vupkhsb): Likewise.
3045         (altivec_vupkhs<VU_char>): Likewise.
3046         (altivec_vupkls<VU_char>): Likewise.
3047         (altivec_vupkhsh): Likewise.
3048         (altivec_vupklsb): Likewise.
3049         (altivec_vupklsh): Likewise.
3050         (altivec_vcmpequ<VI_char>_p): Likewise.
3051         (altivec_vcmpgts<VI_char>_p): Likewise.
3052         (altivec_vcmpgtu<VI_char>_p): Likewise.
3053         (abs<mode>2): Likewise.
3054         (vec_unpacks_hi_v16qi): Likewise.
3055         (vec_unpacks_hi_v8hi): Likewise.
3056         (vec_unpacks_lo_v16qi): Likewise.
3057         (vec_unpacks_hi_<VP_small_lc>): Likewise.
3058         (vec_unpacks_lo_v8hi): Likewise.
3059         (vec_unpacks_lo_<VP_small_lc>): Likewise.
3060         (vec_pack_trunc_v8h): Likewise.
3061         (vec_pack_trunc_v4si): Likewise.
3062         (vec_pack_trunc_<mode>): Likewise.
3064         * config/rs6000/altivec.h (vec_vaddudm): Add defines for power8
3065         V2DI builtins.
3066         (vec_vmaxsd): Likewise.
3067         (vec_vmaxud): Likewise.
3068         (vec_vminsd): Likewise.
3069         (vec_vminud): Likewise.
3070         (vec_vpksdss): Likewise.
3071         (vec_vpksdus): Likewise.
3072         (vec_vpkudum): Likewise.
3073         (vec_vpkudus): Likewise.
3074         (vec_vrld): Likewise.
3075         (vec_vsld): Likewise.
3076         (vec_vsrad): Likewise.
3077         (vec_vsrd): Likewise.
3078         (vec_vsubudm): Likewise.
3079         (vec_vupkhsw): Likewise.
3080         (vec_vupklsw): Likewise.
3082         2013-05-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
3083                     Pat Haugen <pthaugen@us.ibm.com>
3084                     Peter Bergner <bergner@vnet.ibm.com>
3086         * doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions): Add
3087         documentation for the power8 crypto builtins.
3089         * config/rs6000/t-rs6000 (MD_INCLUDES): Add crypto.md.
3091         * config/rs6000/rs6000-builtin.def (BU_P8V_AV_1): Add support
3092         macros for defining power8 builtin functions.
3093         (BU_P8V_AV_2): Likewise.
3094         (BU_P8V_AV_P): Likewise.
3095         (BU_P8V_VSX_1): Likewise.
3096         (BU_P8V_OVERLOAD_1): Likewise.
3097         (BU_P8V_OVERLOAD_2): Likewise.
3098         (BU_CRYPTO_1): Likewise.
3099         (BU_CRYPTO_2): Likewise.
3100         (BU_CRYPTO_3): Likewise.
3101         (BU_CRYPTO_OVERLOAD_1): Likewise.
3102         (BU_CRYPTO_OVERLOAD_2): Likewise.
3103         (XSCVSPDP): Fix typo, point to the correct instruction.
3104         (VCIPHER): Add power8 crypto builtins.
3105         (VCIPHERLAST): Likewise.
3106         (VNCIPHER): Likewise.
3107         (VNCIPHERLAST): Likewise.
3108         (VPMSUMB): Likewise.
3109         (VPMSUMH): Likewise.
3110         (VPMSUMW): Likewise.
3111         (VPERMXOR_V2DI): Likewise.
3112         (VPERMXOR_V4SI: Likewise.
3113         (VPERMXOR_V8HI: Likewise.
3114         (VPERMXOR_V16QI: Likewise.
3115         (VSHASIGMAW): Likewise.
3116         (VSHASIGMAD): Likewise.
3117         (VPMSUM): Likewise.
3118         (VPERMXOR): Likewise.
3119         (VSHASIGMA): Likewise.
3121         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
3122         __CRYPTO__ if the crypto instructions are available.
3123         (altivec_overloaded_builtins): Add support for overloaded power8
3124         builtins.
3126         * config/rs6000/rs6000.c (rs6000_expand_ternop_builtin): Add
3127         support for power8 crypto builtins.
3128         (builtin_function_type): Likewise.
3129         (altivec_init_builtins): Add support for builtins that take vector
3130         long long (V2DI) arguments.
3132         * config/rs6000/crypto.md: New file, define power8 crypto
3133         instructions.
3135         2013-05-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
3136                     Pat Haugen <pthaugen@us.ibm.com>
3137                     Peter Bergner <bergner@vnet.ibm.com>
3139         * doc/invoke.texi (Option Summary): Add power8 options.
3140         (RS/6000 and PowerPC Options): Likewise.
3142         * doc/md.texi (PowerPC and IBM RS6000 constraints): Update to use
3143         constraints.md instead of rs6000.h.  Reorder w* constraints.  Add
3144         wm, wn, wr documentation.
3146         * gcc/config/rs6000/constraints.md (wm): New constraint for VSX
3147         registers if direct move instructions are enabled.
3148         (wn): New constraint for no registers.
3149         (wq): New constraint for quad word even GPR registers.
3150         (wr): New constraint if 64-bit instructions are enabled.
3151         (wv): New constraint if power8 vector instructions are enabled.
3152         (wQ): New constraint for quad word memory locations.
3154         * gcc/config/rs6000/predicates.md (const_0_to_15_operand): New
3155         constraint for 0..15 for crypto instructions.
3156         (gpc_reg_operand): If VSX allow registers in VSX registers as well
3157         as GPR and floating point registers.
3158         (int_reg_operand): New predicate to match only GPR registers.
3159         (base_reg_operand): New predicate to match base registers.
3160         (quad_int_reg_operand): New predicate to match even GPR registers
3161         for quad memory operations.
3162         (vsx_reg_or_cint_operand): New predicate to allow vector logical
3163         operations in both GPR and VSX registers.
3164         (quad_memory_operand): New predicate for quad memory operations.
3165         (reg_or_indexed_operand): New predicate for direct move support.
3167         * gcc/config/rs6000/rs6000-cpus.def (ISA_2_5_MASKS_EMBEDDED):
3168         Inherit from ISA_2_4_MASKS, not ISA_2_2_MASKS.
3169         (ISA_2_7_MASKS_SERVER): New mask for ISA 2.07 (i.e. power8).
3170         (POWERPC_MASKS): Add power8 options.
3171         (power8 cpu): Use ISA_2_7_MASKS_SERVER instead of specifying the
3172         various options.
3174         * gcc/config/rs6000/rs6000-c.c (rs6000_target_modify_macros):
3175         Define _ARCH_PWR8 and __POWER8_VECTOR__ for power8.
3177         * gcc/config/rs6000/rs6000.opt (-mvsx-timode): Add documentation.
3178         (-mpower8-fusion): New power8 options.
3179         (-mpower8-fusion-sign): Likewise.
3180         (-mpower8-vector): Likewise.
3181         (-mcrypto): Likewise.
3182         (-mdirect-move): Likewise.
3183         (-mquad-memory): Likewise.
3185         * gcc/config/rs6000/rs6000.c (power8_cost): Initial definition for
3186         power8.
3187         (rs6000_hard_regno_mode_ok): Make PTImode only match even GPR
3188         registers.
3189         (rs6000_debug_reg_print): Print the base register class if
3190         -mdebug=reg.
3191         (rs6000_debug_vector_unit): Add p8_vector.
3192         (rs6000_debug_reg_global): If -mdebug=reg, print power8 constraint
3193         definitions.  Also print fusion state.
3194         (rs6000_init_hard_regno_mode_ok): Set up power8 constraints.
3195         (rs6000_builtin_mask_calculate): Add power8 builtin support.
3196         (rs6000_option_override_internal): Add support for power8.
3197         (rs6000_common_init_builtins): Add debugging for skipped builtins
3198         if -mdebug=builtin.
3199         (rs6000_adjust_cost): Add power8 support.
3200         (rs6000_issue_rate): Likewise.
3201         (insn_must_be_first_in_group): Likewise.
3202         (insn_must_be_last_in_group): Likewise.
3203         (force_new_group): Likewise.
3204         (rs6000_register_move_cost): Likewise.
3205         (rs6000_opt_masks): Likewise.
3207         * config/rs6000/rs6000.h (ASM_CPU_POWER8_SPEC): If we don't have a
3208         power8 capable assembler, default to power7 options.
3209         (TARGET_DIRECT_MOVE): Likewise.
3210         (TARGET_CRYPTO): Likewise.
3211         (TARGET_P8_VECTOR): Likewise.
3212         (VECTOR_UNIT_P8_VECTOR_P): Define power8 vector support.
3213         (VECTOR_UNIT_VSX_OR_P8_VECTOR_P): Likewise.
3214         (VECTOR_MEM_P8_VECTOR_P): Likewise.
3215         (VECTOR_MEM_VSX_OR_P8_VECTOR_P): Likewise.
3216         (VECTOR_MEM_ALTIVEC_OR_VSX_P): Likewise.
3217         (TARGET_XSCVDPSPN): Likewise.
3218         (TARGET_XSCVSPDPN): Likewsie.
3219         (TARGET_SYNC_HI_QI): Likewise.
3220         (TARGET_SYNC_TI): Likewise.
3221         (MASK_CRYPTO): Likewise.
3222         (MASK_DIRECT_MOVE): Likewise.
3223         (MASK_P8_FUSION): Likewise.
3224         (MASK_P8_VECTOR): Likewise.
3225         (REG_ALLOC_ORDER): Move fr13 to be lower in priority so that the
3226         TFmode temporary used by some of the direct move instructions to
3227         get two FP temporary registers does not force creation of a stack
3228         frame.
3229         (VLOGICAL_REGNO_P): Allow vector logical operations in GPRs.
3230         (MODES_TIEABLE_P): Move the VSX tests above the Altivec tests so
3231         that any VSX registers are tieable, even if they are also an
3232         Altivec vector mode.
3233         (r6000_reg_class_enum): Add wm, wr, wv constraints.
3234         (RS6000_BTM_P8_VECTOR): Power8 builtin support.
3235         (RS6000_BTM_CRYPTO): Likewise.
3236         (RS6000_BTM_COMMON): Likewise.
3238         * config/rs6000/rs6000.md (cpu attribute): Add power8.
3239         * config/rs6000/rs6000-opts.h (PROCESSOR_POWER8): Likewise.
3240         (enum rs6000_vector): Add power8 vector support.
3243         Backport from mainline
3244         2013-03-20  Pat Haugen <pthaugen@us.ibm.com>
3246         * config/rs6000/predicates.md (indexed_address, update_address_mem
3247         update_indexed_address_mem): New predicates.
3248         * config/rs6000/vsx.md (vsx_extract_<mode>_zero): Set correct "type"
3249         attribute for load/store instructions.
3250         * config/rs6000/dfp.md (movsd_store): Likewise.
3251         (movsd_load): Likewise.
3252         * config/rs6000/rs6000.md (zero_extend<mode>di2_internal1): Likewise.
3253         (unnamed HI->DI extend define_insn): Likewise.
3254         (unnamed SI->DI extend define_insn): Likewise.
3255         (unnamed QI->SI extend define_insn): Likewise.
3256         (unnamed QI->HI extend define_insn): Likewise.
3257         (unnamed HI->SI extend define_insn): Likewise.
3258         (unnamed HI->SI extend define_insn): Likewise.
3259         (extendsfdf2_fpr): Likewise.
3260         (movsi_internal1): Likewise.
3261         (movsi_internal1_single): Likewise.
3262         (movhi_internal): Likewise.
3263         (movqi_internal): Likewise.
3264         (movcc_internal1): Correct mnemonic for stw insn. Set correct "type"
3265         attribute for load/store instructions.
3266         (mov<mode>_hardfloat): Set correct "type" attribute for load/store
3267         instructions.
3268         (mov<mode>_softfloat): Likewise.
3269         (mov<mode>_hardfloat32): Likewise.
3270         (mov<mode>_hardfloat64): Likewise.
3271         (mov<mode>_softfloat64): Likewise.
3272         (movdi_internal32): Likewise.
3273         (movdi_internal64): Likewise.
3274         (probe_stack_<mode>): Likewise.
3276         Backport from mainline
3277         2013-03-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
3279         * config/rs6000/vector.md (VEC_R): Add 32-bit integer, binary
3280         floating point, and decimal floating point to reload iterator.
3282         * config/rs6000/constraints.md (wl constraint): New constraints to
3283         return FLOAT_REGS if certain options are used to reduce the number
3284         of separate patterns that exist in the file.
3285         (wx constraint): Likewise.
3286         (wz constraint): Likewise.
3288         * config/rs6000/rs6000.c (rs6000_debug_reg_global): If
3289         -mdebug=reg, print wg, wl, wx, and wz constraints.
3290         (rs6000_init_hard_regno_mode_ok): Initialize new constraints.
3291         Initialize the reload functions for 64-bit binary/decimal floating
3292         point types.
3293         (reg_offset_addressing_ok_p): If we are on a power7 or later, use
3294         LFIWZX and STFIWX to load/store 32-bit decimal types, and don't
3295         create the buffer on the stack to overcome not having a 32-bit
3296         load and store.
3297         (rs6000_emit_move): Likewise.
3298         (rs6000_secondary_memory_needed_rtx): Likewise.
3299         (rs6000_alloc_sdmode_stack_slot): Likewise.
3300         (rs6000_preferred_reload_class): On VSX, we can create SFmode 0.0f
3301         via xxlxor, just like DFmode 0.0.
3303         * config/rs6000/rs6000.h (TARGET_NO_SDMODE_STACK): New macro)
3304         (define as 1 if we are running on a power7 or newer.
3305         (enum r6000_reg_class_enum): Add new constraints.
3307         * config/rs6000/dfp.md (movsd): Delete, combine with binary
3308         floating point moves in rs6000.md.  Combine power6x (mfpgpr) moves
3309         with other moves by using conditional constraits (wg).  Use LFIWZX
3310         and STFIWX for loading SDmode on power7.  Use xxlxor to create
3311         0.0f.
3312         (movsd splitter): Likewise.
3313         (movsd_hardfloat): Likewise.
3314         (movsd_softfloat): Likewise.
3316         * config/rs6000/rs6000.md (FMOVE32): New iterators to combine
3317         binary and decimal floating point moves.
3318         (fmove_ok): New attributes to combine binary and decimal floating
3319         point moves, and to combine power6x (mfpgpr) moves along normal
3320         floating moves.
3321         (real_value_to_target): Likewise.
3322         (f32_lr): Likewise.
3323         (f32_lm): Likewise.
3324         (f32_li): Likewise.
3325         (f32_sr): Likewise.
3326         (f32_sm): Likewise.
3327         (f32_si): Likewise.
3328         (movsf): Combine binary and decimal floating point moves.  Combine
3329         power6x (mfpgpr) moves with other moves by using conditional
3330         constraits (wg).  Use LFIWZX and STFIWX for loading SDmode on
3331         power7.
3332         (mov<mode> for SFmode/SDmode); Likewise.
3333         (SFmode/SDmode splitters): Likewise.
3334         (movsf_hardfloat): Likewise.
3335         (mov<mode>_hardfloat for SFmode/SDmode): Likewise.
3336         (movsf_softfloat): Likewise.
3337         (mov<mode>_softfloat for SFmode/SDmode): Likewise.
3339         * doc/md.texi (PowerPC and IBM RS6000 constraints): Document wl)
3340         (wx and wz constraints.
3342         * config/rs6000/constraints.md (wg constraint): New constraint to
3343         return FLOAT_REGS if -mmfpgpr (power6x) was used.
3345         * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Add wg
3346         constraint.
3348         * config/rs6000/rs6000.c (rs6000_debug_reg_global): If
3349         -mdebug=reg, print wg, wl, wx, and wz constraints.
3350         (rs6000_init_hard_regno_mode_ok): Initialize new constraints.
3351         Initialize the reload functions for 64-bit binary/decimal floating
3352         point types.
3353         (reg_offset_addressing_ok_p): If we are on a power7 or later, use
3354         LFIWZX and STFIWX to load/store 32-bit decimal types, and don't
3355         create the buffer on the stack to overcome not having a 32-bit
3356         load and store.
3357         (rs6000_emit_move): Likewise.
3358         (rs6000_secondary_memory_needed_rtx): Likewise.
3359         (rs6000_alloc_sdmode_stack_slot): Likewise.
3360         (rs6000_preferred_reload_class): On VSX, we can create SFmode 0.0f
3361         via xxlxor, just like DFmode 0.0.
3364         * config/rs6000/dfp.md (movdd): Delete, combine with binary
3365         floating point moves in rs6000.md.  Combine power6x (mfpgpr) moves
3366         with other moves by using conditional constraits (wg).  Use LFIWZX
3367         and STFIWX for loading SDmode on power7.
3368         (movdd splitters): Likewise.
3369         (movdd_hardfloat32): Likewise.
3370         (movdd_softfloat32): Likewise.
3371         (movdd_hardfloat64_mfpgpr): Likewise.
3372         (movdd_hardfloat64): Likewise.
3373         (movdd_softfloat64): Likewise.
3375         * config/rs6000/rs6000.md (FMOVE64): New iterators to combine
3376         64-bit binary and decimal floating point moves.
3377         (FMOVE64X): Likewise.
3378         (movdf): Combine 64-bit binary and decimal floating point moves.
3379         Combine power6x (mfpgpr) moves with other moves by using
3380         conditional constraits (wg).
3381         (mov<mode> for DFmode/DDmode): Likewise.
3382         (DFmode/DDmode splitters): Likewise.
3383         (movdf_hardfloat32): Likewise.
3384         (mov<mode>_hardfloat32 for DFmode/DDmode): Likewise.
3385         (movdf_softfloat32): Likewise.
3386         (movdf_hardfloat64_mfpgpr): Likewise.
3387         (movdf_hardfloat64): Likewise.
3388         (mov<mode>_hardfloat64 for DFmode/DDmode): Likewise.
3389         (movdf_softfloat64): Likewise.
3390         (mov<mode>_softfloat64 for DFmode/DDmode): Likewise.
3391         (reload_<mode>_load): Move to later in the file so they aren't in
3392         the middle of the floating point move insns.
3393         (reload_<mode>_store): Likewise.
3395         * doc/md.texi (PowerPC and IBM RS6000 constraints): Document wg
3396         constraint.
3398         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Print out wg
3399         constraint if -mdebug=reg.
3400         (rs6000_initi_hard_regno_mode_ok): Enable wg constraint if
3401         -mfpgpr.  Enable using dd reload support if needed.
3403         * config/rs6000/dfp.md (movtd): Delete, combine with 128-bit
3404         binary and decimal floating point moves in rs6000.md.
3405         (movtd_internal): Likewise.
3407         * config/rs6000/rs6000.md (FMOVE128): Combine 128-bit binary and
3408         decimal floating point moves.
3409         (movtf): Likewise.
3410         (movtf_internal): Likewise.
3411         (mov<mode>_internal, TDmode/TFmode): Likewise.
3412         (movtf_softfloat): Likewise.
3413         (mov<mode>_softfloat, TDmode/TFmode): Likewise.
3415         * config/rs6000/rs6000.md (movdi_mfpgpr): Delete, combine with
3416         movdi_internal64, using wg constraint for move direct operations.
3417         (movdi_internal64): Likewise.
3419         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Print
3420         MODES_TIEABLE_P for selected modes.  Print the numerical value of
3421         the various virtual registers. Use GPR/FPR first/last values)
3422         (instead of hard coding the register numbers.  Print which modes
3423         have reload functions registered.
3424         (rs6000_option_override_internal): If -mdebug=reg, trace the
3425         options settings before/after setting cpu, target and subtarget
3426         settings.
3427         (rs6000_secondary_reload_trace): Improve the RTL dump for
3428         -mdebug=addr and for secondary reload failures in
3429         rs6000_secondary_reload_inner.
3430         (rs6000_secondary_reload_fail): Likewise.
3431         (rs6000_secondary_reload_inner): Likewise.
3433         * config/rs6000/rs6000.md (FIRST_GPR_REGNO): Add convenience
3434         macros for first/last GPR and FPR registers.
3435         (LAST_GPR_REGNO): Likewise.
3436         (FIRST_FPR_REGNO): Likewise.
3437         (LAST_FPR_REGNO): Likewise.
3439         * config/rs6000/vector.md (mul<mode>3): Use the combined macro
3440         VECTOR_UNIT_ALTIVEC_OR_VSX_P instead of separate calls to
3441         VECTOR_UNIT_ALTIVEC_P and VECTOR_UNIT_VSX_P.
3442         (vcond<mode><mode>): Likewise.
3443         (vcondu<mode><mode>): Likewise.
3444         (vector_gtu<mode>): Likewise.
3445         (vector_gte<mode>): Likewise.
3446         (xor<mode>3): Don't allow logical operations on TImode in 32-bit
3447         to prevent the compiler from converting DImode operations to
3448         TImode.
3449         (ior<mode>3): Likewise.
3450         (and<mode>3): Likewise.
3451         (one_cmpl<mode>2): Likewise.
3452         (nor<mode>3): Likewise.
3453         (andc<mode>3): Likewise.
3455         * config/rs6000/constraints.md (wt constraint): New constraint
3456         that returns VSX_REGS if TImode is allowed in VSX registers.
3458         * config/rs6000/predicates.md (easy_fp_constant): 0.0f is an easy
3459         constant under VSX.
3461         * config/rs6000/rs6000-modes.def (PTImode): Define, PTImode is
3462         similar to TImode, but it is restricted to being in the GPRs.
3464         * config/rs6000/rs6000.opt (-mvsx-timode): New switch to allow
3465         TImode to occupy a single VSX register.
3467         * config/rs6000/rs6000-cpus.def (ISA_2_6_MASKS_SERVER): Default to
3468         -mvsx-timode for power7/power8.
3469         (power7 cpu): Likewise.
3470         (power8 cpu): Likewise.
3472         * config/rs6000/rs6000.c (rs6000_hard_regno_nregs_internal): Make
3473         sure that TFmode/TDmode take up two registers if they are ever
3474         allowed in the upper VSX registers.
3475         (rs6000_hard_regno_mode_ok): If -mvsx-timode, allow TImode in VSX
3476         registers.
3477         (rs6000_init_hard_regno_mode_ok): Likewise.
3478         (rs6000_debug_reg_global): Add debugging for PTImode and wt
3479         constraint.  Print if LRA is turned on.
3480         (rs6000_option_override_internal): Give an error if -mvsx-timode
3481         and VSX is not enabled.
3482         (invalid_e500_subreg): Handle PTImode, restricting it to GPRs.  If
3483         -mvsx-timode, restrict TImode to reg+reg addressing, and PTImode
3484         to reg+offset addressing.  Use PTImode when checking offset
3485         addresses for validity.
3486         (reg_offset_addressing_ok_p): Likewise.
3487         (rs6000_legitimate_offset_address_p): Likewise.
3488         (rs6000_legitimize_address): Likewise.
3489         (rs6000_legitimize_reload_address): Likewise.
3490         (rs6000_legitimate_address_p): Likewise.
3491         (rs6000_eliminate_indexed_memrefs): Likewise.
3492         (rs6000_emit_move): Likewise.
3493         (rs6000_secondary_reload): Likewise.
3494         (rs6000_secondary_reload_inner): Handle PTImode.  Allow 64-bit
3495         reloads to fpr registers to continue to use reg+offset addressing)
3496         (but 64-bit reloads to altivec registers need reg+reg addressing.
3497         Drop test for PRE_MODIFY, since VSX loads/stores no longer support
3498         it.  Treat LO_SUM like a PLUS operation.
3499         (rs6000_secondary_reload_class): If type is 64-bit, prefer to use
3500         FLOAT_REGS instead of VSX_RGS to allow use of reg+offset
3501         addressing.
3502         (rs6000_cannot_change_mode_class): Do not allow TImode in VSX
3503         registers to share a register with a smaller sized type, since VSX
3504         puts scalars in the upper 64-bits.
3505         (print_operand): Add support for PTImode.
3506         (rs6000_register_move_cost): Use VECTOR_MEM_VSX_P instead of
3507         VECTOR_UNIT_VSX_P to catch types that can be loaded in VSX
3508         registers, but don't have arithmetic support.
3509         (rs6000_memory_move_cost): Add test for VSX.
3510         (rs6000_opt_masks): Add -mvsx-timode.
3512         * config/rs6000/vsx.md (VSm): Change to use 64-bit aligned moves
3513         for TImode.
3514         (VSs): Likewise.
3515         (VSr): Use wt constraint for TImode.
3516         (VSv): Drop TImode support.
3517         (vsx_movti): Delete, replace with versions for 32-bit and 64-bit.
3518         (vsx_movti_64bit): Likewise.
3519         (vsx_movti_32bit): Likewise.
3520         (vec_store_<mode>): Use VSX iterator instead of vector iterator.
3521         (vsx_and<mode>3): Delete use of '?' constraint on inputs, just put
3522         one '?' on the appropriate output constraint.  Do not allow TImode
3523         logical operations on 32-bit systems.
3524         (vsx_ior<mode>3): Likewise.
3525         (vsx_xor<mode>3): Likewise.
3526         (vsx_one_cmpl<mode>2): Likewise.
3527         (vsx_nor<mode>3): Likewise.
3528         (vsx_andc<mode>3): Likewise.
3529         (vsx_concat_<mode>): Likewise.
3530         (vsx_xxpermdi_<mode>): Fix thinko for non V2DF/V2DI modes.
3532         * config/rs6000/rs6000.h (MASK_VSX_TIMODE): Map from
3533         OPTION_MASK_VSX_TIMODE.
3534         (enum rs6000_reg_class_enum): Add RS6000_CONSTRAINT_wt.
3535         (STACK_SAVEAREA_MODE): Use PTImode instead of TImode.
3537         * config/rs6000/rs6000.md (INT mode attribute): Add PTImode.
3538         (TI2 iterator): New iterator for TImode, PTImode.
3539         (wd mode attribute): Add values for vector types.
3540         (movti_string): Replace TI move operations with operations for
3541         TImode and PTImode.  Add support for TImode being allowed in VSX
3542         registers.
3543         (mov<mode>_string, TImode/PTImode): Likewise.
3544         (movti_ppc64): Likewise.
3545         (mov<mode>_ppc64, TImode/PTImode): Likewise.
3546         (TI mode splitters): Likewise.
3548         * doc/md.texi (PowerPC and IBM RS6000 constraints): Document wt
3549         constraint.
3551 2014-04-04  Richard Biener  <rguenther@suse.de>
3553         * tree-ssanames.c (make_ssa_name_fn): Fix assert.
3555 2014-04-02  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3557         * config/s390/s390.c (s390_expand_insv): Use GET_MODE_BITSIZE.
3559 2014-04-01  Richard Biener  <rguenther@suse.de>
3561         * gimple.h (struct gimple_statement_base): Align subcode to
3562         16 bits.
3564 2014-04-01  Sebastian Huber  <sebastian.huber@embedded-brains.de>
3566         * doc/invoke.texi (mapp-regs): Clarify.
3568 2014-03-31  H.J. Lu  <hongjiu.lu@intel.com>
3570         PR rtl-optimization/60700
3571         Backport from mainline
3572         2013-07-30  Zhenqiang Chen  <zhenqiang.chen@linaro.org>
3574         PR rtl-optimization/57637
3575         * function.c (move_insn_for_shrink_wrap): Also check the
3576         GEN set of the LIVE problem for the liveness analysis
3577         if it exists, otherwise give up.
3579 2014-03-30  Kaz Kojima  <kkojima@gcc.gnu.org>
3581         Backport from mainline
3582         2014-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
3584         PR target/60039
3585         * config/sh/sh.md (udivsi3_i1): Clobber R1 register.
3587 2014-03-26  Martin Jambor  <mjambor@suse.cz>
3589       PR ipa/60419
3590       * ipa.c (symtab_remove_unreachable_nodes): Clear thunk and
3591       alias flags of nodes in the border.
3593 2014-03-26  Eric Botcazou  <ebotcazou@adacore.com>
3595         PR rtl-optimization/60452
3596         * rtlanal.c (rtx_addr_can_trap_p_1): Fix head comment.
3597         <case REG>: Return 1 for invalid offsets from the frame pointer.
3599 2014-03-24  Richard Biener  <rguenther@suse.de>
3601         PR tree-optimization/60429
3602         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Remove
3603         duplicated line.
3605 2014-03-23  Eric Botcazou  <ebotcazou@adacore.com>
3607         PR rtl-optimization/60601
3608         * bb-reorder.c (fix_up_fall_thru_edges): Test EDGE_FALLTHRU everywhere.
3610         * gcc.c (eval_spec_function): Initialize save_growing_value.
3612 2014-03-20  Jakub Jelinek  <jakub@redhat.com>
3614         PR target/60568
3615         * config/i386/i386.c (x86_output_mi_thunk): Surround UNSPEC_GOT
3616         into CONST, put pic register as first operand of PLUS.  Use
3617         gen_const_mem for both 32-bit and 64-bit PIC got loads.
3619 2014-03-20  Eric Botcazou  <ebotcazou@adacore.com>
3621         * config/sparc/sparc.c (sparc_do_work_around_errata): Implement work
3622         around for store forwarding issue in the FPU on the UT699.
3623         * config/sparc/sparc.md (in_branch_delay): Return false for single FP
3624         loads and operations if -mfix-ut699 is specified.
3625         (divtf3_hq): Tweak attribute.
3626         (sqrttf2_hq): Likewise.
3628 2014-03-18  Kai Tietz  <ktietz@redhat.com>
3630         PR rtl-optimization/56356
3631         * sdbout.c (sdbout_parms): Verify that parms'
3632         incoming argument is valid.
3633         (sdbout_reg_parms): Likewise.
3635 2014-03-18  Eric Botcazou  <ebotcazou@adacore.com>
3637         * config/sparc/sparc.c (sparc_do_work_around_errata): Speed up and use
3638         proper constant for the store mode.
3640 2014-03-17  Mikael Pettersson  <mikpelinux@gmail.com>
3641             Committed by Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
3643         Backport from mainline:
3645         2013-06-20  Joern Rennecke <joern.rennecke@embecosm.com>
3647         PR rtl-optimization/57425
3648         PR rtl-optimization/57569
3649         * alias.c (write_dependence_p): Remove parameters mem_mode and
3650         canon_mem_addr.  Add parameters x_mode, x_addr and x_canonicalized.
3651         Changed all callers.
3652         (canon_anti_dependence): Get comments and semantics in sync.
3653         Add parameter mem_canonicalized.  Changed all callers.
3654         * rtl.h (canon_anti_dependence): Update prototype.
3656         2013-06-16  Joern Rennecke <joern.rennecke@embecosm.com>
3658         PR rtl-optimization/57425
3659         PR rtl-optimization/57569
3660         * alias.c (write_dependence_p): Add new parameters mem_mode,
3661         canon_mem_addr and mem_canonicalized.  Change type of writep to bool.
3662         Changed all callers.
3663         (canon_anti_dependence): New function.
3664         * cse.c (check_dependence): Use canon_anti_dependence.
3665         * cselib.c (cselib_invalidate_mem): Likewise.
3666         * rtl.h (canon_anti_dependence): Declare.
3668 2014-03-17  Richard Biener  <rguenther@suse.de>
3670         Backport from mainline
3671         2014-03-11  Richard Biener  <rguenther@suse.de>
3673         PR tree-optimization/60429
3674         PR tree-optimization/60485
3675         * tree-ssa-structalias.c (set_union_with_increment): Properly
3676         take into account all fields that overlap the shifted vars.
3677         (do_sd_constraint): Likewise.
3678         (do_ds_constraint): Likewise.
3679         (get_constraint_for_ptr_offset): Likewise.
3681 2014-03-15  Eric Botcazou  <ebotcazou@adacore.com>
3683         * config/sparc/sparc-protos.h (tls_call_delay): Delete.
3684         (eligible_for_call_delay): New prototype.
3685         * config/sparc/sparc.c (tls_call_delay): Rename into...
3686         (eligible_for_call_delay): ...this.  Return false if the instruction
3687         cannot be put in the delay slot of a branch.
3688         (eligible_for_restore_insn): Simplify.
3689         (eligible_for_return_delay): Return false if the instruction cannot be
3690         put in the delay slot of a branch and simplify.
3691         (eligible_for_sibcall_delay): Return false if the instruction cannot be
3692         put in the delay slot of a branch.
3693         * config/sparc/sparc.md (fix_ut699): New attribute.
3694         (tls_call_delay): Delete.
3695         (in_call_delay): Reimplement.
3696         (eligible_for_sibcall_delay): Rename into...
3697         (in_sibcall_delay): ...this.
3698         (eligible_for_return_delay): Rename into...
3699         (in_return_delay): ...this.
3700         (in_branch_delay): Reimplement.
3701         (in_uncond_branch_delay): Delete.
3702         (in_annul_branch_delay): Delete.
3704 2014-03-14  Georg-Johann Lay  <avr@gjlay.de>
3706         Backport from 2014-03-14 trunk r208562.
3708         PR target/59396
3709         * config/avr/avr.c (avr_set_current_function): Pass function name
3710         through default_strip_name_encoding before sanity checking instead
3711         of skipping the first char of the assembler name.
3713 2014-03-13  Georg-Johann Lay  <avr@gjlay.de>
3715         Backport from 2014-03-13 trunk r208532.
3716         
3717         PR target/60486
3718         * config/avr/avr.c (avr_out_plus): Swap cc_plus and cc_minus in
3719         calls of avr_out_plus_1.
3721 2014-03-13  Joey Ye  <joey.ye@arm.com>
3723         Backport from mainline
3724         2014-03-12  Thomas Preud'homme  <thomas.preudhomme@arm.com>
3726         PR tree-optimization/60454
3727         * tree-ssa-math-opts.c (find_bswap_1): Fix bswap detection.
3729 2014-03-06  Matthias Klose  <doko@ubuntu.com>
3731         * Makefile.in (s-mlib): Only pass MULTIARCH_DIRNAME if
3732         MULTILIB_OSDIRNAMES is not defined.
3734 2014-03-06  Jakub Jelinek  <jakub@redhat.com>
3736         PR tree-optimization/60276
3737         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Avoid
3738         a -Wsign-compare warning.
3740         * Makefile.in (tree-ssa-uninit.o): Depend on $(PARAMS_H).
3742         Backport from mainline
3743         2014-02-21  Jakub Jelinek  <jakub@redhat.com>
3745         PR tree-optimization/56490
3746         * params.def (PARAM_UNINIT_CONTROL_DEP_ATTEMPTS): New param.
3747         * tree-ssa-uninit.c: Include params.h.
3748         (compute_control_dep_chain): Add num_calls argument, return false
3749         if it exceed PARAM_UNINIT_CONTROL_DEP_ATTEMPTS param, pass
3750         num_calls to recursive call.
3751         (find_predicates): Change dep_chain into normal array, add num_calls
3752         variable and adjust compute_control_dep_chain caller.
3753         (find_def_preds): Likewise.
3755         2014-02-13  Jakub Jelinek  <jakub@redhat.com>
3757         PR target/43546
3758         * expr.c (compress_float_constant): If x is a hard register,
3759         extend into a pseudo and then move to x.
3761         2014-02-11  Richard Henderson  <rth@redhat.com>
3762                     Jakub Jelinek  <jakub@redhat.com>
3764         PR debug/59776
3765         * tree-sra.c (load_assign_lhs_subreplacements): Add VIEW_CONVERT_EXPR
3766         around drhs if type conversion to lacc->type is not useless.
3768         2014-02-08  Jakub Jelinek  <jakub@redhat.com>
3770         PR ipa/60026
3771         * ipa-cp.c (determine_versionability): Fail at -O0
3772         or __attribute__((optimize (0))) or -fno-ipa-cp functions.
3773         * tree-sra.c (ipa_sra_preliminary_function_checks): Similarly.
3775         2014-02-06  Jakub Jelinek  <jakub@redhat.com>
3777         PR target/60062
3778         * tree.h (opts_for_fn): New inline function.
3779         (opt_for_fn): Define.
3780         * config/i386/i386.c (ix86_function_regparm): Use
3781         opt_for_fn (decl, optimize) instead of optimize.
3783         2014-02-05  Jakub Jelinek  <jakub@redhat.com>
3785         PR middle-end/57499
3786         * tree-eh.c (cleanup_empty_eh): Bail out on totally empty
3787         bb with no successors.
3789 2014-03-04  Richard Biener  <rguenther@suse.de>
3791         PR tree-optimization/60382
3792         * tree-vect-loop.c (vect_is_simple_reduction_1): Do not consider
3793         dead PHIs a reduction.
3795 2014-02-25  Richard Biener  <rguenther@suse.de>
3797         Backport from mainline
3798         2014-02-21  Richard Biener  <rguenther@suse.de>
3800         PR tree-optimization/60276
3801         * tree-vectorizer.h (struct _stmt_vec_info): Add min_neg_dist field.
3802         (STMT_VINFO_MIN_NEG_DIST): New macro.
3803         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Record
3804         STMT_VINFO_MIN_NEG_DIST.
3805         * tree-vect-stmts.c (vectorizable_load): Verify if assumptions
3806         made for negative dependence distances still hold.
3808 2014-02-25  Richard Biener  <rguenther@suse.de>
3810         Backport from mainline
3811         2014-02-21  Richard Biener  <rguenther@suse.de>
3813         PR middle-end/60291
3814         * tree-ssa-live.c (mark_all_vars_used_1): Do not walk
3815         DECL_INITIAL for globals not in the current function context.
3817         2014-02-20  Richard Biener  <rguenther@suse.de>
3819         PR middle-end/60221
3820         * tree-eh.c (execute_cleanup_eh_1): Also cleanup empty EH
3821         regions at -O0.
3823         2014-02-14  Richard Biener  <rguenther@suse.de>
3825         PR tree-optimization/60183
3826         * tree-ssa-phiprop.c (propagate_with_phi): Avoid speculating
3827         loads.
3828         (tree_ssa_phiprop): Calculate and free post-dominators.
3830 2014-02-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3832         PR target/55426
3833         * config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Allow 128 to 64-bit
3834         conversions.
3836 2014-02-24  John David Anglin  <danglin@gcc.gnu.org>
3838         * config/pa/pa.c (pa_output_move_double): Don't valididate when
3839         adjusting offsetable addresses.
3841 2014-02-23  David Holsgrove <david.holsgrove@xilinx.com>
3843         * config/microblaze/microblaze.md: Correct ashrsi_reg / lshrsi_reg names
3845 2014-02-23  Edgar E. Iglesias <edgar.iglesias@xilinx.com>
3847         * config/microblaze/microblaze.h: Remove SECONDARY_MEMORY_NEEDED
3848         definition.
3850 2014-02-23  David Holsgrove <david.holsgrove@xilinx.com>
3852         * /config/microblaze/microblaze.c: Add microblaze_asm_output_mi_thunk
3853         and define TARGET_ASM_OUTPUT_MI_THUNK and
3854         TARGET_ASM_CAN_OUTPUT_MI_THUNK.
3856 2014-02-23  David Holsgrove <david.holsgrove@xilinx.com>
3858         * config/microblaze/predicates.md: Add cmp_op predicate.
3859         * config/microblaze/microblaze.md: Add branch_compare instruction 
3860         which uses cmp_op predicate and emits cmp insn before branch.
3861         * config/microblaze/microblaze.c (microblaze_emit_compare): Rename 
3862         to microblaze_expand_conditional_branch and consolidate logic.
3863         (microblaze_expand_conditional_branch): emit branch_compare
3864         insn instead of handling cmp op separate from branch insn.
3866 2014-02-21  Martin Jambor  <mjambor@suse.cz>
3868         PR ipa/55260
3869         * ipa-cp.c (cgraph_edge_brings_all_agg_vals_for_node): Uce correct
3870         info when checking whether lattices are bottom.
3872 2014-02-21  Jakub Jelinek  <jakub@redhat.com>
3874         * config/i386/i386.c (ix86_expand_vec_perm): Use V8SImode
3875         mode for mask of V8SFmode permutation.
3877 2014-02-20  Richard Henderson  <rth@redhat.com>
3879         PR c++/60272
3880         * builtins.c (expand_builtin_atomic_compare_exchange): Conditionalize
3881         on failure the store back into EXPECT.  Always make a new pseudo for
3882         OLDVAL.
3884 2014-02-20  Jakub Jelinek  <jakub@redhat.com>
3886         PR target/57896
3887         * config/i386/i386.c (expand_vec_perm_interleave2): Don't call
3888         gen_reg_rtx if d->testing_p.
3889         (expand_vec_perm_pshufb2, expand_vec_perm_even_odd_1,
3890         expand_vec_perm_broadcast_1): Return early if d->testing_p and
3891         we will certainly return true.
3893 2014-02-20  Richard Biener  <rguenther@suse.de>
3895         * tree-cfg.c (replace_uses_by): Mark altered BBs before
3896         doing the substitution.
3898 2014-02-19  H.J. Lu  <hongjiu.lu@intel.com>
3900         Backport from mainline
3901         2014-02-19  H.J. Lu  <hongjiu.lu@intel.com>
3903         PR target/60207
3904         * config/i386/i386.c (construct_container): Remove TFmode check
3905         for X86_64_INTEGER_CLASS.
3907 2014-02-19  Uros Bizjak  <ubizjak@gmail.com>
3909         Backport from mainline
3910         2014-02-19  Uros Bizjak  <ubizjak@gmail.com>
3912         PR target/59794
3913         * config/i386/i386.c (type_natural_mode): Warn for ABI changes
3914         only when -Wpsabi is enabled.
3916 2014-02-19  Terry Guo  <terry.guo@arm.com>
3918         Backport from mainline
3919         2014-02-08  Terry Guo  <terry.guo@arm.com>
3921         * doc/invoke.texi: Document ARM -march=armv7e-m.
3923 2014-02-18  Kai Tietz  <ktietz@redhat.com>
3925         Backport from mainline
3926         2014-02-18  Kai Tietz  <ktietz@redhat.com>
3928         PR target/60193
3929         * config/i386/i386.c (ix86_expand_prologue): Use
3930         rax register as displacement for restoring %r10, %rax.
3931         Additional fix wrong offset for restoring both-registers.
3933 2014-02-18  Eric Botcazou  <ebotcazou@adacore.com>
3935         * ipa-prop.c (compute_complex_ancestor_jump_func): Replace overzealous
3936         assertion with conditional return.
3938 2014-02-18  Jakub Jelinek  <jakub@redhat.com>
3939             Uros Bizjak  <ubizjak@gmail.com>
3941         PR driver/60233
3942         * config/i386/driver-i386.c (host_detect_local_cpu): If
3943         YMM state is not saved by the OS, also clear has_f16c.  Move
3944         CPUID 0x80000001 handling before YMM state saving checking.
3946 2014-02-14  Roland McGrath  <mcgrathr@google.com>
3948         * configure.ac (HAVE_AS_IX86_UD2): New test for 'ud2' mnemonic.
3949         * configure: Regenerated.
3950         * config.in: Regenerated.
3951         * config/i386/i386.md (trap) [HAVE_AS_IX86_UD2]: Use the mnemonic
3952         instead of ASM_SHORT.
3954 2014-02-13  Uros Bizjak  <ubizjak@gmail.com>
3956         Backport from mainline
3957         2014-02-13  Uros Bizjak  <ubizjak@gmail.com>
3959         * config/i386/sse.md (xop_vmfrcz<mode>2): Generate const0 in
3960         operands[2], not operands[3].
3962 2014-02-13  Dominik Vogt  <vogt@linux.vnet.ibm.com>
3964         * config/s390/s390.c (s390_asm_output_function_label): Fix crash
3965         caused by bad second argument to warning_at() with -mhotpatch and
3966         nested functions (e.g. with gfortran).
3968 2014-02-12  H.J. Lu  <hongjiu.lu@intel.com>
3970         Backport from mainline
3971         2014-02-12  H.J. Lu  <hongjiu.lu@intel.com>
3972                     Uros Bizjak  <ubizjak@gmail.com>
3974         PR target/60151
3975         * configure.ac (HAVE_AS_GOTOFF_IN_DATA): Pass --32 to GNU assembler.
3977 2014-02-12  Eric Botcazou  <ebotcazou@adacore.com>
3979         PR rtl-optimization/60116
3980         * combine.c (try_combine): Also remove dangling REG_DEAD notes on the
3981         other_insn once the combination has been validated.
3983 2014-02-10  Nagaraju Mekala <nagaraju.mekala@xilinx.com>
3985         * config/microblaze/microblaze.md: Add movsi4_rev insn pattern.
3986         * config/microblaze/predicates.md: Add reg_or_mem_operand predicate.
3988 2014-02-10  Nagaraju Mekala <nagaraju.mekala@xilinx.com>
3990         * config/microblaze/microblaze.c: Extend mcpu version format
3992 2014-02-10  David Holsgrove <david.holsgrove@xilinx.com>
3994         * config/microblaze/microblaze.h: Define SIZE_TYPE and PTRDIFF_TYPE.
3996 2014-02-10  Richard Biener  <rguenther@suse.de>
3998         Backport from mainline
3999         2014-01-30  Richard Biener  <rguenther@suse.de>
4001         PR tree-optimization/59903
4002         * tree-vect-loop.c (vect_transform_loop): Guard multiple-types
4003         check properly.
4005         2014-02-10  Richard Biener  <rguenther@suse.de>
4007         PR tree-optimization/60115
4008         * tree-eh.c (tree_could_trap_p): Unify TARGET_MEM_REF and
4009         MEM_REF handling.  Properly verify that the accesses are not
4010         out of the objects bound.
4012 2014-02-05  James Greenhalgh  <james.greenhalgh@arm.com>
4014         Backport from mainline.
4015         2014-02-05  James Greenhalgh  <james.greenhalgh@arm.com>
4017         PR target/59718
4018         * doc/invoke.texi (-march): Clarify documentation for ARM.
4019         (-mtune): Likewise.
4020         (-mcpu): Likewise.
4022 2014-02-04  John David Anglin  <danglin@gcc.gnu.org>
4024         PR target/59777
4025         * config/pa/pa.c (legitimize_tls_address): Return original address
4026         if not passed a SYMBOL_REF rtx.
4027         (hppa_legitimize_address): Call legitimize_tls_address for all TLS
4028         addresses.
4029         (pa_emit_move_sequence): Simplify TLS source operands.
4030         (pa_legitimate_constant_p): Reject all TLS constants.
4031         * config/pa/pa.h (PA_SYMBOL_REF_TLS_P): Correct comment.
4032         (CONSTANT_ADDRESS_P): Reject TLS CONST addresses.
4034 2014-02-04  Uros Bizjak  <ubizjak@gmail.com>
4036         Backport from mainline
4037         2014-02-02  Uros Bizjak  <ubizjak@gmail.com>
4039         PR target/60017
4040         * config/i386/i386.c (classify_argument): Fix handling of bit_offset
4041         when calculating size of integer atomic types.
4043 2014-02-02  Uros Bizjak  <ubizjak@gmail.com>
4045         Backport from mainline
4046         2014-01-30  Jakub Jelinek  <jakub@redhat.com>
4048         * config/i386/f16cintrin.h (_cvtsh_ss): Avoid -Wnarrowing warning.
4050 2014-01-31  Richard Henderson  <rth@redhat.com>
4052         PR middle-end/60004
4053         * tree-eh.c (lower_try_finally_switch): Delay lowering finally block
4054         until after else_eh is processed.
4056 2014-01-30  David Holsgrove <david.holsgrove@xilinx.com>
4058         Backport from mainline
4059         * config/microblaze/microblaze.md(cstoresf4, cbranchsf4): Replace
4060         comparison_operator with ordered_comparison_operator.
4062 2014-01-25  Walter Lee  <walt@tilera.com>
4064         Backport from mainline
4065         2014-01-25  Walter Lee  <walt@tilera.com>
4067         * config/tilegx/sync.md (atomic_fetch_sub): Fix negation and
4068         avoid clobbering a live register.
4070 2014-01-25  Walter Lee  <walt@tilera.com>
4072         Backport from mainline
4073         2014-01-25  Walter Lee  <walt@tilera.com>
4075         * config/tilegx/tilegx-c.c (tilegx_cpu_cpp_builtins):
4076         Define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_{1,2}.
4077         * config/tilegx/tilepro-c.c (tilepro_cpu_cpp_builtins):
4078         Define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_{1,2,4,8}.
4080 2014-01-25  Walter Lee  <walt@tilera.com>
4082         Backport from mainline
4083         2014-01-25  Walter Lee  <walt@tilera.com>
4085         * config/tilegx/tilegx.c (tilegx_gen_bundles): Delete barrier
4086         insns before bundling.
4087         * config/tilegx/tilegx.md (tile_network_barrier): Update comment.
4089 2014-01-25  Walter Lee  <walt@tilera.com>
4091         Backport from mainline
4092         2014-01-25  Walter Lee  <walt@tilera.com>
4094         * config/tilegx/tilegx.c (tilegx_expand_builtin): Set
4095         PREFETCH_SCHEDULE_BARRIER_P to true for prefetches.
4096         * config/tilepro/tilepro.c (tilepro_expand_builtin): Ditto.
4098 2014-01-25  Walter Lee  <walt@tilera.com>
4100         Backport from mainline
4101         2014-01-25  Walter Lee  <walt@tilera.com>
4103         * config/tilepro/tilepro.md (ctzdi2): Use register_operand
4104         predicate.
4105         (clzdi2): Ditto.
4106         (ffsdi2): Ditto.
4108 2014-01-25  Walter Lee  <walt@tilera.com>
4110         Backport from mainline
4111         2014-01-25  Walter Lee  <walt@tilera.com>
4113         * config/tilegx/tilegx.c (tilegx_expand_to_rtl_hook): New.
4114         (TARGET_EXPAND_TO_RTL_HOOK): Define.
4116 2014-01-24  H.J. Lu  <hongjiu.lu@intel.com>
4118         Backport from mainline
4119         2014-01-23  H.J. Lu  <hongjiu.lu@intel.com>
4121         PR target/59929
4122         * config/i386/i386.md (pushsf splitter): Get stack adjustment
4123         from push operand if code of push isn't PRE_DEC.
4125 2014-01-23  David Holsgrove <david.holsgrove@xilinx.com>
4127         Backport from mainline.
4128         * config/microblaze/microblaze.md: Add trap insn and attribute
4130 2014-01-23  Marek Polacek  <polacek@redhat.com>
4132         Backport from mainline
4133         2013-10-21  Marek Polacek  <polacek@redhat.com>
4135         PR middle-end/58809
4136         * fold-const.c (fold_range_test): Return 0 if the type is not
4137         an integral type.
4139 2014-01-22  David Holsgrove <david.holsgrove@xilinx.com>
4141         * config/microblaze/microblaze.md: Correct bswaphi2 insn.
4143 2014-01-22  Uros Bizjak  <ubizjak@gmail.com>
4145         Backport from mainline
4146         2014-01-20  Uros Bizjak  <ubizjak@gmail.com>
4148         * config/i386/i386.c (ix86_avoid_lea_for_addr): Return false
4149         for SImode_address_operand operands, having only a REG argument.
4151         2014-01-20  Jakub Jelinek  <jakub@redhat.com>
4153         PR target/59880
4154         * config/i386/i386.c (ix86_avoid_lea_for_addr): Return false
4155         if operands[1] is a REG or ZERO_EXTEND of a REG.
4157         2014-01-18  Uros Bizjak  <ubizjak@gmail.com>
4158                     H.J. Lu  <hongjiu.lu@intel.com>
4160         PR target/59379
4161         * config/i386/i386.md (*lea<mode>): Zero-extend return register
4162         to DImode for zero-extended addresses.
4164 2014-01-21  Andrew Pinski <apinski@cavium.com>
4165             Steve Ellcey  <sellcey@mips.com>
4167         PR target/59462
4168         * config/mips/mips.c (mips_print_operand): Check operand mode instead
4169         of operator mode.
4171 2014-01-21  Andrey Belevantsev  <abel@ispras.ru>
4173         Backport from mainline
4174         2013-12-23  Andrey Belevantsev  <abel@ispras.ru>
4176         PR rtl-optimization/57422
4177         * sel-sched.c (mark_unavailable_hard_regs): Fix typo when calling
4178         add_to_hard_reg_set.
4180 2014-01-20  Jakub Jelinek  <jakub@redhat.com>
4182         PR middle-end/59860
4183         * tree.h (fold_builtin_strcat): New prototype.
4184         * builtins.c (fold_builtin_strcat): No longer static.  Add len
4185         argument, if non-NULL, don't call c_strlen.  Optimize
4186         directly into __builtin_memcpy instead of __builtin_strcpy.
4187         (fold_builtin_2): Adjust fold_builtin_strcat caller.
4188         * gimple-fold.c (gimple_fold_builtin): Handle BUILT_IN_STRCAT.
4190 2014-01-20  Richard Biener  <rguenther@suse.de>
4192         PR middle-end/59860
4193         * builtins.c (fold_builtin_strcat): Remove case better handled
4194         by tree-ssa-strlen.c.
4196 2014-01-19  John David Anglin  <danglin@gcc.gnu.org>
4198         * config/pa/pa.c (pa_attr_length_millicode_call): Correct length of
4199         long non-pic millicode calls.
4201 2014-01-17  John David Anglin  <danglin@gcc.gnu.org>
4203         * config/pa/pa.c (pa_attr_length_indirect_call): Don't output a short
4204         call to $$dyncall when TARGET_LONG_CALLS is true.
4206 2014-01-17  H.J. Lu  <hongjiu.lu@intel.com>
4208         Backport from mainline
4209         2014-01-14  H.J. Lu  <hongjiu.lu@intel.com>
4211         PR target/59794
4212         * config/i386/i386.c (type_natural_mode): Add a bool parameter
4213         to indicate if type is used for function return value.  Warn
4214         ABI change if the vector mode isn't available for function
4215         return value.
4216         (ix86_function_arg_advance): Pass false to type_natural_mode.
4217         (ix86_function_arg): Likewise.
4218         (ix86_gimplify_va_arg): Likewise.
4219         (function_arg_32): Don't warn ABI change.
4220         (ix86_function_value): Pass true to type_natural_mode.
4221         (ix86_return_in_memory): Likewise.
4222         (ix86_struct_value_rtx): Removed.
4223         (TARGET_STRUCT_VALUE_RTX): Likewise.
4225 2014-01-17  Charles Baylis  <charles.baylis@linaro.org>
4227         Backport from mainline
4228         2013-12-19  Charles Baylis  <charles.baylis@linaro.org>
4230         PR target/59142
4231         * config/arm/arm-ldmstm.ml: Use low_register_operand for Thumb
4232         patterns.
4233         * config/arm/ldmstm.md: Regenerate.
4235         2013-12-19  Charles Baylis  <charles.baylis@linaro.org>
4237         PR target/59142
4238         * config/arm/predicates.md (arm_hard_general_register_operand):
4239         New predicate.
4240         (arm_hard_register_operand): Remove.
4241         * config/arm/arm-ldmstm.ml: Use arm_hard_general_register_operand
4242         for all patterns.
4243         * config/arm/ldmstm.md: Regenerate.
4245         2013-12-19  Charles Baylis  <charles.baylis@linaro.org>
4247         PR target/59142
4248         * config/arm/predicates.md (vfp_hard_register_operand): New predicate.
4249         * config/arm/arm.md (vfp_pop_multiple_with_writeback): Use
4250         vfp_hard_register_operand.
4252 2014-01-17  Kugan Vivekanandarajah  <kuganv@linaro.org>
4254         Backport from mainline
4255         2014-01-15  Matthew Gretton-Dann  <matthew.gretton-dann@linaro.org>
4256             Kugan Vivekanandarajah  <kuganv@linaro.org>
4258         PR target/59695
4259         * config/aarch64/aarch64.c (aarch64_build_constant): Fix incorrect
4260         truncation.
4262 2014-01-17  Terry Guo  <terry.guo@arm.com>
4264         PR target/59826
4265         * config/arm/arm.md (prefetch): Set insn type attribute to load1.
4267 2014-01-16  Jakub Jelinek  <jakub@redhat.com>
4269         PR target/59839
4270         * config/i386/i386.c (ix86_expand_builtin): If target doesn't
4271         satisfy operand 0 predicate for gathers, use a new pseudo as
4272         subtarget.
4274 2014-01-16  Richard Henderson <rth@redhat.com>
4276         PR debug/54694
4277         * reginfo.c (global_regs_decl): Globalize.
4278         * rtl.h (global_regs_decl): Declare.
4279         * ira.c (do_reload): Diagnose frame_pointer_needed and it
4280         reserved via global_regs.
4282 2014-01-16  Peter Bergner  <bergner@vnet.ibm.com>
4284         Backport from mainline
4285         2014-01-15  Uros Bizjak  <ubizjak@gmail.com>
4287         * config/i386/i386.c (ix86_hard_regno_mode_ok): Use
4288         VALID_AVX256_REG_OR_OI_MODE.
4290         2013-09-05  Peter Bergner  <bergner@vnet.ibm.com>
4292         PR target/58139
4293         * reginfo.c (choose_hard_reg_mode): Scan through all mode classes
4294         looking for widest mode.
4296 2014-01-16  Marek Polacek  <polacek@redhat.com>
4298         Backported from mainline
4299         2014-01-16  Marek Polacek  <polacek@redhat.com>
4301         PR middle-end/59827
4302         * gimple-low.c (gimple_check_call_args): Don't use DECL_ARG_TYPE if
4303         it is error_mark_node.
4305 2014-01-15  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4307         PR target/59803
4308         * config/s390/s390.c (s390_preferred_reload_class): Don't return
4309         ADDR_REGS for invalid symrefs in non-PIC code.
4311 2014-01-14  Uros Bizjak  <ubizjak@gmail.com>
4313         Revert:
4314         2014-01-08  Uros Bizjak  <ubizjak@gmail.com>
4316         * config/i386/i386.c (ix86_data_alignment): Calculate max_align
4317         from prefetch_block tune setting.
4319 2014-01-13  Jakub Jelinek  <jakub@redhat.com>
4321         Backported from mainline
4322         2014-01-10  Jakub Jelinek  <jakub@redhat.com>
4324         PR tree-optimization/59745
4325         * tree-predcom.c (tree_predictive_commoning_loop): Call
4326         free_affine_expand_cache if giving up because components is NULL.
4328 2014-01-10  Yufeng Zhang  <yufeng.zhang@arm.com>
4330         * config/arm/arm.c (arm_expand_neon_args): Call expand_expr
4331         with EXPAND_MEMORY for NEON_ARG_MEMORY; check if the returned
4332         rtx is const0_rtx or not.
4334 2014-01-10  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4336         * config/s390/s390.c (s390_expand_tbegin): Remove jump over CC
4337         extraction in good case.
4339 2014-01-10  Huacai Chen  <chenhc@lemote.com>
4341         * config/mips/driver-native.c (host_detect_local_cpu): Handle new
4342         kernel strings for Loongson-2E/2F/3A.
4344 2014-01-10  Richard Biener  <rguenther@suse.de>
4346         PR tree-optimization/59715
4347         * tree-flow.h (split_critical_edges): Declare.
4348         * tree-cfg.c (split_critical_edges): Export.
4349         * tree-ssa-sink.c (execute_sink_code): Split critical edges.
4351 2014-01-09  Richard Sandiford  <rdsandiford@googlemail.com>
4353         * config/mips/mips.h (ISA_HAS_WSBH): Define.
4354         * config/mips/mips.md (UNSPEC_WSBH, UNSPEC_DSBH, UNSPEC_DSHD): New
4355         constants.
4356         (bswaphi2, bswapsi2, bswapdi2, wsbh, dsbh, dshd): New patterns.
4358 2014-01-09  Richard Sandiford  <rdsandiford@googlemail.com>
4360         PR rtl-optimization/59137
4361         * reorg.c (steal_delay_list_from_target): Call update_block for
4362         elided insns.
4363         (steal_delay_list_from_fallthrough, relax_delay_slots): Likewise.
4365 2014-01-09  Richard Sandiford  <rdsandiford@googlemail.com>
4367         Revert:
4368         2012-10-07  Richard Sandiford  <rdsandiford@googlemail.com>
4370         * config/mips/mips.c (mips_truncated_op_cost): New function.
4371         (mips_rtx_costs): Adjust test for BADDU.
4372         * config/mips/mips.md (*baddu_di<mode>): Push truncates to operands.
4374         2012-10-02  Richard Sandiford  <rdsandiford@googlemail.com>
4376         * config/mips/mips.md (*baddu_si_eb, *baddu_si_el): Merge into...
4377         (*baddu_si): ...this new pattern.
4379 2014-01-09  Richard Biener  <rguenther@suse.de>
4381         Backport from mainline
4382         2013-11-18  Richard Biener  <rguenther@suse.de>
4384         PR tree-optimization/59125
4385         PR tree-optimization/54570
4386         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): When inlining
4387         is not complete do not treat component-references with offset zero
4388         but different fields as equal.
4389         * tree-object-size.c: Include tree-phinodes.h and ssa-iterators.h.
4390         (compute_object_sizes): Apply TLC.  Propagate the constant
4391         results into all uses and fold their stmts.
4392         * passes.def (pass_all_optimizations): Move pass_object_sizes
4393         after the first pass_forwprop and before pass_fre.
4395         2013-12-03  Jakub Jelinek  <jakub@redhat.com>
4397         PR tree-optimization/59362
4398         * tree-object-size.c (object_sizes): Change into array of
4399         vec<unsigned HOST_WIDE_INT>.
4400         (compute_builtin_object_size): Check computed bitmap for
4401         non-NULL instead of object_sizes.  Call safe_grow on object_sizes
4402         vector if new SSA_NAMEs appeared.
4403         (init_object_sizes): Check computed bitmap for non-NULL.
4404         Call safe_grow on object_sizes elements instead of initializing
4405         it with XNEWVEC.
4406         (fini_object_sizes): Call release on object_sizes elements, don't
4407         set it to NULL.
4409 2014-01-09  Richard Earnshaw  <rearnsha@arm.com>
4411         PR rtl-optimization/54300
4412         * regcprop.c (copyprop_hardreg_forward_1): Ensure any unused
4413         outputs in a single-set are killed from the value chains.
4415 2014-01-09  Jakub Jelinek  <jakub@redhat.com>
4417         PR rtl-optimization/59724
4418         * ifcvt.c (cond_exec_process_if_block): Don't call
4419         flow_find_head_matching_sequence with 0 longest_match.
4420         * cfgcleanup.c (flow_find_head_matching_sequence): Count even
4421         non-active insns if !stop_after.
4422         (try_head_merge_bb): Revert 2014-01-07 changes.
4424 2014-01-09  Hans-Peter Nilsson  <hp@axis.com>
4426         Backport from mainline
4427         2013-12-23  Hans-Peter Nilsson  <hp@axis.com>
4429         PR middle-end/59584
4430         * config/cris/predicates.md (cris_nonsp_register_operand):
4431         New define_predicate.
4432         * config/cris/cris.md: Replace register_operand with
4433         cris_nonsp_register_operand for destinations in all
4434         define_splits where a register is set more than once.
4436 2014-01-08   H.J. Lu  <hongjiu.lu@intel.com>
4438         Backport from mainline
4439         2013-12-25   H.J. Lu  <hongjiu.lu@intel.com>
4441         PR target/59587
4442         * config/i386/i386.c (struct ptt): Add a field for processor name.
4443         (processor_target_table): Sync with processor_type.  Add
4444         processor names.
4445         (cpu_names): Removed.
4446         (ix86_option_override_internal): Default x_ix86_tune_string
4447         to processor_target_table[TARGET_CPU_DEFAULT].name.
4448         (ix86_function_specific_print): Assert arch and tune <
4449         PROCESSOR_max.  Use processor_target_table to print arch and
4450         tune names.
4451         * config/i386/i386.h (TARGET_CPU_DEFAULT): Default to
4452         PROCESSOR_GENERIC32.
4453         (target_cpu_default): Removed.
4454         (processor_type): Reordered.
4456 2014-01-08  Uros Bizjak  <ubizjak@gmail.com>
4458         Backport from mainline
4459         2014-01-05  Uros Bizjak  <ubizjak@gmail.com>
4461         * config/i386/i386.c (ix86_data_alignment): Calculate max_align
4462         from prefetch_block tune setting.
4463         (nocona_cost): Correct size of prefetch block to 64.
4465 2014-01-08  Martin Jambor  <mjambor@suse.cz>
4467         PR ipa/59610
4468         * ipa-prop.c (ipa_compute_jump_functions): Bail out if not optimizing.
4469         (parm_preserved_before_stmt_p): Assume modification present when not
4470         optimizing.
4472 2014-01-07  John David Anglin  <danglin@gcc.gnu.org>
4474         PR target/59652
4475         * config/pa/pa.c (pa_legitimate_address_p): Return false before reload
4476         for 14-bit register offsets when INT14_OK_STRICT is false.
4478 2014-01-07  Roland Stigge  <stigge@antcom.de>
4479             Michael Meissner  <meissner@linux.vnet.ibm.com>
4481         PR 57386/target
4482         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
4483         Only check TFmode for SPE constants.  Don't check TImode or TDmode.
4485 2014-01-07  Jakub Jelinek  <jakub@redhat.com>
4487         PR rtl-optimization/58668
4488         * cfgcleanup.c (flow_find_cross_jump): Don't count
4489         any jumps if dir_p is NULL.  Remove p1 variable and make USE/CLOBBER
4490         check consistent with other places.
4491         (flow_find_head_matching_sequence): Don't count USE or CLOBBER insns.
4492         (try_head_merge_bb): Adjust for the flow_find_head_matching_sequence
4493         counting change.
4494         * ifcvt.c (count_bb_insns): Don't count USE or CLOBBER insns.
4496 2014-01-07  Mike Stump  <mikestump@comcast.net>
4497             Jakub Jelinek  <jakub@redhat.com>
4499         PR pch/59436
4500         * tree.h (struct tree_optimization_option): Change optabs
4501         type from unsigned char * to void *.
4502         * optabs.c (init_tree_optimization_optabs): Adjust
4503         TREE_OPTIMIZATION_OPTABS initialization.
4505 2014-01-07  Jakub Jelinek  <jakub@redhat.com>
4507         Backported from mainline
4508         2013-12-16  Jakub Jelinek  <jakub@redhat.com>
4510         PR middle-end/58956
4511         PR middle-end/59470
4512         * gimple.h (walk_stmt_load_store_addr_fn): New typedef.
4513         (walk_stmt_load_store_addr_ops, walk_stmt_load_store_ops): Use it
4514         for callback params.
4515         * gimple.c (walk_stmt_load_store_ops): Likewise.
4516         (walk_stmt_load_store_addr_ops): Likewise.  Adjust all callback
4517         calls to supply the gimple operand containing the base tree
4518         as an extra argument.
4519         * tree-ssa-ter.c (find_ssaname, find_ssaname_in_store): New helper
4520         functions.
4521         (find_replaceable_in_bb): For calls or GIMPLE_ASM, only set
4522         same_root_var if USE is used somewhere in the stores of the stmt.
4523         * ipa-prop.c (visit_ref_for_mod_analysis): Remove name of the stmt
4524         argument and ATTRIBUTE_UNUSED, add another unnamed tree argument.
4525         * ipa-pure-const.c (check_load, check_store, check_ipa_load,
4526         check_ipa_store): Likewise.
4527         * gimple.c (gimple_ior_addresses_taken_1): Likewise.
4528         * ipa-split.c (test_nonssa_use, mark_nonssa_use): Likewise.
4529         (verify_non_ssa_vars, visit_bb): Adjust their callers.
4530         * cfgexpand.c (add_scope_conflicts_1): Use
4531         walk_stmt_load_store_addr_fn type for visit variable.
4532         (visit_op, visit_conflict): Remove name of the stmt
4533         argument and ATTRIBUTE_UNUSED, add another unnamed tree argument.
4534         * tree-sra.c (asm_visit_addr): Likewise.  Remove name of the data
4535         argument and ATTRIBUTE_UNUSED.
4536         * cgraphbuild.c (mark_address, mark_load, mark_store): Add another
4537         unnamed tree argument.
4539 2014-01-03  Andreas Schwab  <schwab@linux-m68k.org>
4541         * config/m68k/m68k.c (handle_move_double): Handle pushes with
4542         overlapping registers also for registers other than the stack
4543         pointer.
4545 2014-01-03  Jakub Jelinek  <jakub@redhat.com>
4547         PR target/59625
4548         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Don't consider
4549         asm goto as jump.
4551 2014-01-01  Jakub Jelinek  <jakub@redhat.com>
4553         PR rtl-optimization/59647
4554         * cse.c (cse_process_notes_1): Don't substitute negative VOIDmode
4555         new_rtx into UNSIGNED_FLOAT rtxes.
4557 2013-12-28  Eric Botcazou  <ebotcazou@adacore.com>
4559         * doc/invoke.texi (output file options): Document -fada-spec-parent.
4561 2013-12-26  Uros Bizjak  <ubizjak@gmail.com>
4563         * config/i386/driver-i386.c (decode_caches_intel): Add missing entries.
4565 2013-12-20  Jakub Jelinek  <jakub@redhat.com>
4567         PR c++/59255
4568         Backported from mainline
4569         2013-08-19  Dehao Chen  <dehao@google.com>
4571         * value-prof.c (gimple_ic): Fix the bug of adding EH edge.
4573 2013-12-19  James Greenhalgh  <james.greenhalgh@arm.com>
4575         Backport from Mainline.
4576         2013-05-01  James Greenhalgh  <james.greenhalgh@arm.com>
4578         * config/aarch64/aarch64-simd-builtins.def (cmhs): Rename to...
4579         (cmgeu): ...This.
4580         (cmhi): Rename to...
4581         (cmgtu): ...This.
4582         * config/aarch64/aarch64-simd.md
4583         (simd_mode): Add SF.
4584         (aarch64_vcond_internal): Use new names for unsigned comparison insns.
4585         (aarch64_cm<optab><mode>): Rewrite to not use UNSPECs.
4586         * config/aarch64/aarch64.md (*cstore<mode>_neg): Rename to...
4587         (cstore<mode>_neg): ...This.
4588         * config/aarch64/iterators.md
4589         (VALLF): new.
4590         (unspec): Remove UNSPEC_CM<EQ, LE, LT, GE, GT, HS, HI, TST>.
4591         (COMPARISONS): New.
4592         (UCOMPARISONS): Likewise.
4593         (optab): Add missing comparisons.
4594         (n_optab): New.
4595         (cmp_1): Likewise.
4596         (cmp_2): Likewise.
4597         (CMP): Likewise.
4598         (cmp): Remove.
4599         (VCMP_S): Likewise.
4600         (VCMP_U): Likewise.
4601         (V_cmp_result): Add DF, SF modes.
4602         (v_cmp_result): Likewise.
4603         (v): Likewise.
4604         (vmtype): Likewise.
4605         * config/aarch64/predicates.md (aarch64_reg_or_fp_zero): New.
4607         Partial Backport from mainline.
4608         2013-05-01  James Greenhalgh  <james.greenhalgh@arm.com>
4610         * config/aarch64/arm_neon.h
4611         (vc<eq, lt, le, gt, ge, tst><qsd>_<u><8,16,32,64>): Remap
4612         to builtins or C as appropriate.
4614 2013-12-19  Dominik Vogt  <vogt@linux.vnet.ibm.com>
4615             Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4617         Backport from mainline
4618         2013-12-19  Dominik Vogt  <vogt@linux.vnet.ibm.com>
4619         * config/s390/s390.c (s390_hotpatch_trampoline_halfwords_default): New
4620         constant
4621         (s390_hotpatch_trampoline_halfwords_max): New constant
4622         (s390_hotpatch_trampoline_halfwords): New static variable
4623         (get_hotpatch_attribute): New function
4624         (s390_handle_hotpatch_attribute): New function
4625         (s390_attribute_table): New target specific attribute table to implement
4626         the hotpatch attribute
4627         (s390_option_override): Parse hotpatch options
4628         (s390_function_num_hotpatch_trampoline_halfwords): New function
4629         (s390_can_inline_p): Implement target hook to
4630         suppress hotpatching for explicitly inlined functions
4631         (s390_asm_output_function_label): Generate hotpatch prologue
4632         (TARGET_ATTRIBUTE_TABLE): Define to implement target attribute table
4633         (TARGET_CAN_INLINE_P): Define to implement target hook
4634         * config/s390/s390.opt (mhotpatch): New options -mhotpatch, -mhotpatch=
4635         * config/s390/s390-protos.h (s390_asm_output_function_label): Add
4636         prototype
4637         * config/s390/s390.h (ASM_OUTPUT_FUNCTION_LABEL): Target specific
4638         function label generation for hotpatching
4639         (FUNCTION_BOUNDARY): Align functions to eight bytes
4640         * doc/extend.texi: Document hotpatch attribute
4641         * doc/invoke.texi: Document -mhotpatch option
4643 2013-12-18  Eric Botcazou  <ebotcazou@adacore.com>
4645         * config/arm/arm.c (arm_expand_epilogue_apcs_frame): Fix thinko.
4647 2013-12-12  Vladimir Makarov  <vmakarov@redhat.com>
4649         PR middle-end/59470
4650         * lra-coalesce.c (lra_coalesce): Invalidate inheritance pseudo
4651         values if necessary.
4653 2013-12-12  Jakub Jelinek  <jakub@redhat.com>
4655         PR libgomp/59467
4656         * gimplify.c (omp_check_private): Add copyprivate argument, if it
4657         is true, don't check omp_privatize_by_reference.
4658         (gimplify_scan_omp_clauses): For OMP_CLAUSE_COPYPRIVATE verify
4659         decl is private in outer context.  Adjust omp_check_private caller.
4661 2013-12-10  Eric Botcazou  <ebotcazou@adacore.com>
4663         PR rtl-optimization/58295
4664         * simplify-rtx.c (simplify_truncation): Restrict the distribution for
4665         WORD_REGISTER_OPERATIONS targets.
4667 2013-12-10  Kai Tietz  <ktietz@redhat.com>
4669         PR target/56807
4670         * config/i386/i386.c (ix86_expand_prologue): Address saved
4671         registers stack-relative, not via frame-pointer.
4673 2013-12-09  Alan Modra  <amodra@gmail.com>
4675         Apply from mainline
4676         2013-12-05  Alan Modra  <amodra@gmail.com>
4677         * configure.ac (BUILD_CXXFLAGS) Don't use ALL_CXXFLAGS for
4678         build != host.
4679         <recursive call for build != host>: Clear GMPINC.  Don't bother
4680         saving CFLAGS.
4681         * configure: Regenerate.
4683 2013-12-08  Uros Bizjak  <ubizjak@gmail.com>
4685         Backport from mainline
4686         2013-12-06  Uros Bizjak  <ubizjak@gmail.com>
4688         PR target/59405
4689         * config/i386/i386.c (type_natural_mode): Properly handle
4690         size 8 for !TARGET_64BIT.
4692 2013-12-07  Ralf Corsépius  <ralf.corsepius@rtems.org>
4694         * config.gcc (microblaze*-*-rtems*): Add TARGET_BIG_ENDIAN_DEFAULT.
4696 2013-12-06  Jakub Jelinek  <jakub@redhat.com>
4698         PR tree-optimization/59388
4699         * tree-ssa-reassoc.c (update_range_test): If op == range->exp,
4700         gimplify tem after stmt rather than before it.
4702 2013-12-06  Oleg Endo  <olegendo@gcc.gnu.org>
4704         Backport from mainline
4705         2013-11-26  Oleg Endo  <olegendo@gcc.gnu.org>
4707         PR target/58314
4708         PR target/50751
4709         * config/sh/sh.c (max_mov_insn_displacement, disp_addr_displacement):
4710         Prefix function names with 'sh_'.  Make them non-static.
4711         * config/sh/sh-protos.h (sh_disp_addr_displacement,
4712         sh_max_mov_insn_displacement): Add declarations.
4713         * config/sh/constraints.md (Q): Reject QImode.
4714         (Sdd): Use match_code "mem".
4715         (Snd): Fix erroneous matching of non-memory operands.
4716         * config/sh/predicates.md (short_displacement_mem_operand): New
4717         predicate.
4718         (general_movsrc_operand): Disallow PC relative QImode loads.
4719         * config/sh/sh.md (*mov<mode>_reg_reg): Remove it.
4720         (*movqi, *movhi): Merge both insns into...
4721         (*mov<mode>): ... this new insn.  Replace generic 'm' constraints with
4722         'Snd' and 'Sdd' constraints.  Calculate insn length dynamically based
4723         on the operand types.
4725 2013-12-06  Richard Biener  <rguenther@suse.de>
4727         Backport from mainline
4728         2013-11-29  Richard Biener  <rguenther@suse.de>
4730         PR tree-optimization/59334
4731         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Fix bug
4732         in previous commit.
4734         2013-11-28  Richard Biener  <rguenther@suse.de>
4736         PR tree-optimization/59330
4737         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Simplify
4738         and fix delayed marking of free calls not necessary.
4740 2013-12-06  Richard Biener  <rguenther@suse.de>
4742         Backport from mainline
4743         2013-11-27  Richard Biener  <rguenther@suse.de>
4745         PR tree-optimization/59288
4746         * tree-vect-loop.c (get_initial_def_for_induction): Do not
4747         re-analyze the PHI but use STMT_VINFO_LOOP_PHI_EVOLUTION_PART.
4749         2013-11-19  Richard Biener  <rguenther@suse.de>
4751         PR tree-optimization/59164
4752         * tree-vect-loop.c (vect_analyze_loop_operations): Adjust
4753         check whether we can create an epilogue loop to reflect the
4754         cases where we create one.
4756         2013-09-05  Richard Biener  <rguenther@suse.de>
4758         PR tree-optimization/58137
4759         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size):
4760         Do not create vectors of pointers.
4761         * tree-vect-loop.c (get_initial_def_for_induction): Use proper
4762         types for the components of the vector initializer.
4763         * tree-cfg.c (verify_gimple_assign_binary): Remove special-casing
4764         allowing pointer vectors with PLUS_EXPR/MINUS_EXPR.
4766 2013-12-06  Oleg Endo  <olegendo@gcc.gnu.org>
4768         PR target/51244
4769         PR target/59343
4770         * config/sh/sh.md (*cbranch_t): Check that there are no labels between
4771         the s1 insn and the testing insn.  Remove REG_DEAD note from s1 insn.
4773 2013-12-05  Richard Biener  <rguenther@suse.de>
4775         Backport from mainline
4776         2013-11-19  Richard Biener  <rguenther@suse.de>
4778         PR middle-end/58956
4779         * tree-ssa-ter.c (find_replaceable_in_bb): Avoid forwarding
4780         loads into stmts that may clobber it.
4782 2013-12-04  Jakub Jelinek  <jakub@redhat.com>
4784         PR rtl-optimization/58726
4785         * combine.c (force_to_mode): Fix comment typo.  Don't destructively
4786         modify x for ROTATE, ROTATERT and IF_THEN_ELSE.
4788 2013-12-04  Jakub Jelinek  <jakub@redhat.com>
4789             Uros Bizjak  <ubizjak@gmail.com>
4791         PR target/59163
4792         * config/i386/i386.c (ix86_legitimate_combined_insn): If for
4793         !TARGET_AVX there is misaligned MEM operand with vector mode
4794         and get_attr_ssememalign is 0, return false.
4795         (ix86_expand_special_args_builtin): Add get_pointer_alignment
4796         computed alignment and for non-temporal loads/stores also
4797         at least GET_MODE_ALIGNMENT as MEM_ALIGN.
4798         * config/i386/sse.md
4799         (<sse>_loadu<ssemodesuffix><avxsizesuffix>,
4800         <sse>_storeu<ssemodesuffix><avxsizesuffix>,
4801         <sse2>_loaddqu<avxsizesuffix>,
4802         <sse2>_storedqu<avxsizesuffix>, <sse3>_lddqu<avxsizesuffix>,
4803         sse_vmrcpv4sf2, sse_vmrsqrtv4sf2, sse2_cvtdq2pd, sse_movhlps,
4804         sse_movlhps, sse_storehps, sse_loadhps, sse_loadlps,
4805         *vec_interleave_highv2df, *vec_interleave_lowv2df,
4806         *vec_extractv2df_1_sse, sse2_loadhpd, sse2_loadlpd, sse2_movsd,
4807         sse4_1_<code>v8qiv8hi2, sse4_1_<code>v4qiv4si2,
4808         sse4_1_<code>v4hiv4si2, sse4_1_<code>v2qiv2di2,
4809         sse4_1_<code>v2hiv2di2, sse4_1_<code>v2siv2di2, sse4_2_pcmpestr,
4810         *sse4_2_pcmpestr_unaligned, sse4_2_pcmpestri, sse4_2_pcmpestrm,
4811         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, *sse4_2_pcmpistr_unaligned,
4812         sse4_2_pcmpistri, sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Add
4813         ssememalign attribute.
4814         * config/i386/i386.md (ssememalign): New define_attr.
4816 2013-12-03  Jakub Jelinek  <jakub@redhat.com>
4818         PR middle-end/59011
4819         * gimplify.c (nonlocal_vla_vars): New variable.
4820         (gimplify_var_or_parm_decl): Put VAR_DECLs for VLAs into
4821         nonlocal_vla_vars chain.
4822         (gimplify_body): Call declare_vars on nonlocal_vla_vars chain
4823         if outer_bind has DECL_INITIAL (current_function_decl) block.
4825         PR target/58864
4826         * optabs.c (emit_conditional_move): Save and restore
4827         pending_stack_adjust and stack_pointer_delta if cmove can't be used.
4829 2013-12-02  Jakub Jelinek  <jakub@redhat.com>
4831         PR tree-optimization/59358
4832         * tree-vrp.c (union_ranges): To check for the partially
4833         overlapping ranges or adjacent ranges, also compare *vr0max
4834         with vr1max.
4836 2013-12-02  Richard Biener  <rguenther@suse.de>
4838         PR tree-optimization/59139
4839         * tree-ssa-loop-niter.c (chain_of_csts_start): Properly match
4840         code in get_val_for.
4841         (get_val_for): Use gcc_checking_asserts.
4843 2013-11-27  Tom de Vries  <tom@codesourcery.com>
4844             Marc Glisse  <marc.glisse@inria.fr>
4846         PR middle-end/59037
4847         * fold-const.c (fold_indirect_ref_1): Don't create out-of-bounds
4848         BIT_FIELD_REF.
4849         * gimplify.c (gimple_fold_indirect_ref): Same.
4851 2013-12-01  Eric Botcazou  <ebotcazou@adacore.com>
4853         * config/i386/winnt.c (i386_pe_asm_named_section): Be prepared for an
4854         identifier node.
4856 2013-12-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>
4858         * expr.c (emit_group_store): Fix off-by-one BITFIELD_END argument.
4860 2013-11-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4862         Backport from mainline
4863         2013-11-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4865         * config/arm/iterators.md (vrint_conds): New int attribute.
4866         * config/arm/vfp.md (<vrint_pattern><SDF:mode>2): Set conds attribute.
4867         (smax<mode>3): Likewise.
4868         (smin<mode>3): Likewise.
4870 2013-11-28  Uros Bizjak  <ubizjak@gmail.com>
4872         Backport from mainline
4873         2013-11-27  Uros Bizjak  <ubizjak@gmail.com>
4874                     Ganesh Gopalasubramanian  <Ganesh.Gopalasubramanian@amd.com>
4876         PR target/56788
4877         * gcc.target/i386/xop-frczX.c: New test.
4879 2013-11-28  Terry Guo  <terry.guo@arm.com>
4881         Backport mainline r205391
4882         2013-11-26  Terry Guo  <terry.guo@arm.com>
4884         * config/arm/arm.c (require_pic_register): Handle high pic base
4885         register for thumb-1.
4886         (arm_load_pic_register): Also initialize high pic base register.
4887         * doc/invoke.texi: Update documentation for option -mpic-register.
4889 2013-11-27  Jakub Jelinek  <jakub@redhat.com>
4891         Backported from mainline
4892         2013-11-26  Jakub Jelinek  <jakub@redhat.com>
4894         PR tree-optimization/59014
4895         * tree-vrp.c (register_edge_assert_for_1): Don't look
4896         through conversions from non-integral types or through
4897         narrowing conversions.
4899 2013-11-27  Eric Botcazou  <ebotcazou@adacore.com>
4901         PR middle-end/59138
4902         * expr.c (emit_group_store): Don't write past the end of the structure.
4903         (store_bit_field): Fix formatting.
4905 2013-11-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
4907         Backport from mainline
4908         2013-09-17  Sebastian Huber  <sebastian.huber@embedded-brains.de>
4910         * config/sparc/t-rtems: Add leon3 multilibs.
4912 2013-11-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
4914         Backport from mainline
4915         2013-08-09  Eric Botcazou  <ebotcazou@adacore.com>
4917         * configure.ac: Add GAS check for LEON instructions on SPARC.
4918         * configure: Regenerate.
4919         * config.in: Likewise.
4920         * config.gcc (with_cpu): Remove sparc-leon*-* and deal with LEON in the
4921         sparc*-*-* block.
4922         * config/sparc/sparc.opt (LEON, LEON3): New masks.
4923         * config/sparc/sparc.h (ASM_CPU32_DEFAULT_SPEC): Set to AS_LEON_FLAG
4924         for LEON or LEON3.
4925         (ASM_CPU_SPEC): Pass AS_LEON_FLAG if -mcpu=leon or -mcpu=leon3.
4926         (AS_LEON_FLAG): New macro.
4927         * config/sparc/sparc.c (sparc_option_override): Set MASK_LEON for leon
4928         and MASK_LEON3 for leon3 and unset them if HAVE_AS_LEON is not defined.
4929         Deal with LEON and LEON3 for the memory model.
4930         * config/sparc/sync.md (atomic_compare_and_swap<mode>): Enable if LEON3
4931         (atomic_compare_and_swap<mode>_1): Likewise.
4932         (*atomic_compare_and_swap<mode>_1): Likewise.
4934 2013-11-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
4936         Backport from mainline
4937         2013-07-23  Eric Botcazou  <ebotcazou@adacore.com>
4939         * doc/invoke.texi (SPARC Options): Document new leon3 processor value.
4941 2013-11-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
4943         Backport from mainline
4944         2013-07-22  Eric Botcazou  <ebotcazou@adacore.com>
4946         * config.gcc (sparc*-*-*): Accept leon3 processor.
4947         (sparc-leon*-*): Merge with sparc*-*-* and add leon3 support.
4948         * doc/invoke.texi (SPARC Options): Adjust -mfix-ut699 entry.
4949         * config/sparc/sparc-opts.h (enum processor_type): Add PROCESSOR_LEON3.
4950         * config/sparc/sparc.opt (enum processor_type): Add leon3.
4951         (mfix-ut699): Adjust comment.
4952         * config/sparc/sparc.h (TARGET_CPU_leon3): New define.
4953         (CPP_CPU32_DEFAULT_SPEC): Add leon3 support.
4954         (CPP_CPU_SPEC): Likewise.
4955         (ASM_CPU_SPEC): Likewise.
4956         * config/sparc/sparc.c (leon3_cost): New constant.
4957         (sparc_option_override): Add leon3 support.
4958         (mem_ref): New function.
4959         (sparc_gate_work_around_errata): Return true if -mfix-ut699 is enabled.
4960         (sparc_do_work_around_errata): Look into the instruction in the delay
4961         slot and adjust accordingly.  Add fix for the data cache nullify issues
4962         of the UT699.  Change insertion position for the NOP.
4963         * config/sparc/leon.md (leon_fpalu, leon_fpmds, write_buf): Delete.
4964         (leon3_load): New reservation.
4965         (leon_store): Bump latency to 2.
4966         (grfpu): New automaton.
4967         (grfpu_alu): New unit.
4968         (grfpu_ds): Likewise.
4969         (leon_fp_alu): Adjust.
4970         (leon_fp_mult): Delete.
4971         (leon_fp_div): Split into leon_fp_divs and leon_fp_divd.
4972         (leon_fp_sqrt): Split into leon_fp_sqrts and leon_fp_sqrtd.
4973         * config/sparc/sparc.md (cpu): Add leon3.
4974         * config/sparc/sync.md (atomic_exchangesi): Disable if -mfix-ut699.
4975         (swapsi): Likewise.
4976         (atomic_test_and_set): Likewise.
4977         (ldstub): Likewise.
4979 2013-11-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
4981         Backport from mainline
4982         2013-04-10  Steven Bosscher  <steven@gcc.gnu.org>
4984         * config/sparc/sparc.c: Include tree-pass.h.
4985         (TARGET_MACHINE_DEPENDENT_REORG): Do not redefine.
4986         (sparc_reorg): Rename to sparc_do_work_around_errata.  Move to
4987         head of file.  Change return type.  Split off gate function.
4988         (sparc_gate_work_around_errata): New function.
4989         (pass_work_around_errata): New pass definition.
4990         (insert_pass_work_around_errata) New pass insert definition to
4991         insert pass_work_around_errata just after delayed-branch scheduling.
4992         (sparc_option_override): Insert the pass.
4993         * config/sparc/t-sparc (sparc.o): Add TREE_PASS_H dependence.
4995 2013-11-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
4997         Backport from mainline
4998         2013-05-28  Eric Botcazou  <ebotcazou@adacore.com>
5000         * doc/invoke.texi (SPARC Options): Document -mfix-ut699.
5001         * builtins.c (expand_builtin_mathfn) <BUILT_IN_SQRT>: Try to widen the
5002         mode if the instruction isn't available in the original mode.
5003         * config/sparc/sparc.opt (mfix-ut699): New option.
5004         * config/sparc/sparc.md (muldf3_extend): Disable if -mfix-ut699.
5005         (divdf3): Turn into expander.
5006         (divdf3_nofix): New insn.
5007         (divdf3_fix): Likewise.
5008         (divsf3): Disable if -mfix-ut699.
5009         (sqrtdf2): Turn into expander.
5010         (sqrtdf2_nofix): New insn.
5011         (sqrtdf2_fix): Likewise.
5012         (sqrtsf2): Disable if -mfix-ut699.
5014 2013-11-22  Eric Botcazou  <ebotcazou@adacore.com>
5016         * print-rtl.c (print_rtx) <case MEM>: Output a space if no MEM_EXPR.
5018 2013-11-21  Zhenqiang Chen  <zhenqiang.chen@linaro.org>
5020         PR bootstrap/57683
5021         Backport from mainline: r197467 and r198999.
5022         2013-04-03  Jeff Law  <law@redhat.com>
5024         * Makefile.in (lra-constraints.o): Depend on $(OPTABS_H).
5025         (lra-eliminations.o): Likewise.
5027         2013-05-16  Jeff Law  <law@redhat.com>
5029         * Makefile.in (tree-switch-conversion.o): Depend on $(OPTABS_H).
5031 2013-11-20  Eric Botcazou  <ebotcazou@adacore.com>
5033         PR target/59207
5034         * config/sparc/sparc.c (sparc_fold_builtin) <case CODE_FOR_pdist_vis>:
5035         Make sure neg2_ovf is set before being used.
5037 2013-11-20  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5038             Dominik Vogt  <vogt@linux.vnet.ibm.com>
5040         Backport from mainline
5041         * config/s390/s390.c (s390_canonicalize_comparison): Don't fold
5042         int comparisons with an out of range condition code.
5043         (s390_optimize_nonescaping_tx): Skip empty BBs.
5044         Generate the new tbegin RTX when removing the FPR clobbers (with
5045         two SETs).
5046         (s390_expand_tbegin): Fix the retry loop counter.  Copy CC to the
5047         result before doing the retry calculations.
5048         (s390_init_builtins): Make tbegin "returns_twice" and tabort
5049         "noreturn".
5050         * config/s390/s390.md (UNSPECV_TBEGIN_TDB): New constant used for
5051         the TDB setting part of an tbegin.
5052         ("tbegin_1", "tbegin_nofloat_1"): Add a set for the TDB.
5053         ("tx_assist"): Set unused argument to an immediate zero instead of
5054         loading zero into a GPR and pass it as argument.
5055         * config/s390/htmxlintrin.h (__TM_simple_begin, __TM_begin):
5056         Remove inline and related attributes.
5057         (__TM_nesting_depth, __TM_is_user_abort, __TM_is_named_user_abort)
5058         (__TM_is_illegal, __TM_is_footprint_exceeded)
5059         (__TM_is_nested_too_deep, __TM_is_conflict): Fix format value
5060         check.
5062 2013-11-19  Uros Bizjak  <ubizjak@gmail.com>
5064         Backport from mainline
5065         2013-11-18  Uros Bizjak  <ubizjak@gmail.com>
5067         * config/i386/i386.c (ix86_decompose_address): Use REG_P instead of
5068         ix86_address_subreg_operand.  Move subreg checks to
5069         ix86_validate_address_register.  Move address override check to
5070         ix86_legitimate_address_p.
5071         (ix86_validate_address_register): New function.
5072         (ix86_legitimate_address_p): Call ix86_validate_address_register
5073         to validate base and index registers.  Add address override check
5074         from ix86_decompose_address.
5075         (ix86_decompose_address): Remove.
5077         Backport from mainline
5078         2013-11-17  Uros Bizjak  <ubizjak@gmail.com>
5080         PR target/59153
5081         * config/i386/i386.c (ix86_address_subreg_operand): Do not
5082         reject non-integer subregs.
5083         (ix86_decompose_address): Do not reject invalid CONST_INT RTXes.
5084         Move check for invalid x32 constant addresses ...
5085         (ix86_legitimate_address_p): ... here.
5087 2013-11-19  Richard Biener  <rguenther@suse.de>
5089         Backport from mainline
5090         2013-11-07  Richard Biener  <rguenther@suse.de>
5092         * tree-dfa.c (get_ref_base_and_extent): Fix casting.
5094 2013-11-19  Richard Biener  <rguenther@suse.de>
5096         PR tree-optimization/57517
5097         * tree-predcom.c (combinable_refs_p): Verify the combination
5098         is always executed when the refs are.
5100 2013-11-19  Richard Biener  <rguenther@suse.de>
5102         Backport from mainline
5103         2013-11-05  Richard Biener  <rguenther@suse.de>
5105         PR middle-end/58941
5106         * tree-dfa.c (get_ref_base_and_extent): Merge common code
5107         in MEM_REF and TARGET_MEM_REF handling.  Make sure to
5108         process trailing array detection before diving into the
5109         view-converted object (and possibly apply some extra offset).
5111 2013-11-18  Richard Biener  <rguenther@suse.de>
5113         Backport from mainline
5114         2013-10-21  Richard Biener  <rguenther@suse.de>
5116         PR tree-optimization/58794
5117         * fold-const.c (operand_equal_p): Compare FIELD_DECL operand
5118         of COMPONENT_REFs with OEP_CONSTANT_ADDRESS_OF left in place.
5120         2013-10-21  Richard Biener  <rguenther@suse.de>
5122         PR middle-end/58742
5123         * fold-const.c (fold_binary_loc): Fold ((T) (X /[ex] C)) * C
5124         to (T) X for sign-changing conversions (or no conversion).
5126         2013-11-06  Richard Biener  <rguenther@suse.de>
5128         PR tree-optimization/58653
5129         * tree-predcom.c (ref_at_iteration): Rewrite to generate
5130         a MEM_REF.
5131         (prepare_initializers_chain): Adjust.
5133         PR tree-optimization/59047
5134         * tree-predcom.c (ref_at_iteration): Handle bitfield accesses
5135         properly.
5137         2013-10-15  Richard Biener  <rguenther@suse.de>
5139         PR tree-optimization/58143
5140         * tree-ssa-loop-im.c (arith_code_with_undefined_signed_overflow):
5141         New function.
5142         (rewrite_to_defined_overflow): Likewise.
5143         (move_computations_dom_walker::before_dom): Rewrite stmts
5144         with undefined signed overflow that are not always executed
5145         into unsigned arithmetic.
5147 2013-11-14  Uros Bizjak  <ubizjak@gmail.com>
5149         Backport from mainline
5150         2013-11-10  Uros Bizjak  <ubizjak@gmail.com>
5152         * mode-switching.c (optimize_mode_switching): Mark block as
5153         nontransparent, if last_mode at block exit is different from no_mode.
5155         Backport from mainline
5156         2013-11-06  Uros Bizjak  <ubizjak@gmail.com>
5158         PR target/59021
5159         * config/i386/i386.c (ix86_avx_u128_mode_needed): Require
5160         AVX_U128_DIRTY mode for call_insn RTXes that use AVX256 registers.
5161         (ix86_avx_u128_mode_needed): Return AVX_U128_DIRTY mode for call_insn
5162         RTXes that return in AVX256 register.
5164 2013-11-14  Jakub Jelinek  <jakub@redhat.com>
5165             Uros Bizjak  <ubizjak@gmail.com>
5167         PR target/59101
5168         * config/i386/i386.md (*anddi_2): Only allow CCZmode if
5169         operands[2] satisfies_constraint_Z that might have bit 31 set.
5171 2013-11-12  H.J. Lu  <hongjiu.lu@intel.com>
5173         Backported from mainline
5174         2013-11-12  H.J. Lu  <hongjiu.lu@intel.com>
5176         PR target/59088
5177         * config/i386/i386.c (initial_ix86_tune_features): Set
5178         X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL and
5179         X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL for m_HASWELL.
5181 2013-11-11  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5183         Backported from mainline
5184         2013-10-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5186         PR target/58854
5187         * config/arm/arm.c (arm_expand_epilogue_apcs_frame): Emit blockage
5189 2013-11-11  Jakub Jelinek  <jakub@redhat.com>
5191         Backported from mainline
5192         2013-11-06  Jakub Jelinek  <jakub@redhat.com>
5194         PR middle-end/58970
5195         * expr.c (get_bit_range): Handle *offset == NULL_TREE.
5196         (expand_assignment): If *bitpos is negative, set *offset
5197         and adjust *bitpos, so that it is not negative.
5199         2013-11-05  Jakub Jelinek  <jakub@redhat.com>
5201         PR rtl-optimization/58997
5202         * loop-iv.c (iv_subreg): For IV_UNKNOWN_EXTEND, expect
5203         get_iv_value to be in iv->mode rather than iv->extend_mode.
5204         (iv_extend): Likewise.  Otherwise, if iv->extend != extend,
5205         use lowpart_subreg on get_iv_value before calling simplify_gen_unary.
5206         * loop-unswitch.c (may_unswitch_on): Make sure op[i] is in the right
5207         mode.
5209 2013-11-10  Karlson2k  <k2k@narod.ru>
5210             Kai Tietz  <ktietz@redhat.com>
5212         Merged from trunk
5213         PR plugins/52872
5214         * configure.ac: Adding for exported symbols check
5215         and for rdynamic-check executable-extension.
5216         * configure: Regenerated.
5218 2013-11-07  H.J. Lu  <hongjiu.lu@intel.com>
5220         PR target/59034
5221         * config/i386/i386.md (push peepholer/splitter): Use Pmode
5222         with stack_pointer_rtx.
5224 2013-11-05  Uros Bizjak  <ubizjak@gmail.com>
5226         * config/i386/t-rtems (MULTILIB_MATCHES): Fix option typos.
5228 2013-11-05  Jakub Jelinek  <jakub@redhat.com>
5230         PR tree-optimization/58984
5231         * ipa-prop.c (ipa_load_from_parm_agg_1): Add SIZE_P argument,
5232         set *SIZE_P if non-NULL on success.
5233         (ipa_load_from_parm_agg, ipa_analyze_indirect_call_uses): Adjust
5234         callers.
5235         (ipcp_transform_function): Likewise.  Punt if size of access
5236         is different from TYPE_SIZE on v->value's type.
5238 2013-11-03  H.J. Lu  <hongjiu.lu@intel.com>
5240         Backport from mainline
5241         2013-10-12  H.J. Lu  <hongjiu.lu@intel.com>
5243         PR target/58690
5244         * config/i386/i386.c (ix86_copy_addr_to_reg): New function.
5245         (ix86_expand_movmem): Replace copy_addr_to_reg with
5246         ix86_copy_addr_to_reg.
5247         (ix86_expand_setmem): Likewise.
5249 2013-10-29  Uros Bizjak  <ubizjak@gmail.com>
5251         Backport from mainline
5252         2013-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
5254         PR rtl-optimization/58079
5255         * combine.c (combine_simplify_rtx): Avoid using SUBST if
5256         simplify_comparison has widened a comparison with an integer.
5258 2013-10-29  Martin Jambor  <mjambor@suse.cz>
5260         PR middle-end/58789
5261         Backport from mainline
5262         2013-05-09  Martin Jambor  <mjambor@suse.cz>
5264         PR lto/57084
5265         * gimple-fold.c (canonicalize_constructor_val): Call
5266         cgraph_get_create_real_symbol_node instead of cgraph_get_create_node.
5268         Backport from mainline
5269         2013-03-16  Jan Hubicka  <jh@suse.cz>
5271         * cgraph.h (cgraph_get_create_real_symbol_node): Declare.
5272         * cgraph.c (cgraph_get_create_real_symbol_node): New function.
5273         * cgrpahbuild.c: Use cgraph_get_create_real_symbol_node instead
5274         of cgraph_get_create_node.
5275         * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
5277 2013-10-28  Tom de Vries  <tom@codesourcery.com>
5279         * cfgexpand.c (gimple_expand_cfg): Remove test for parm_birth_insn.
5280         Don't commit insertions after NOTE_INSN_FUNCTION_BEG.
5282 2013-10-26  Uros Bizjak  <ubizjak@gmail.com>
5284         Backport from mainline
5285         2013-10-22  Uros Bizjak  <ubizjak@gmail.com>
5287         PR target/58779
5288         * config/i386/i386.c (put_condition_code) <case GTU, case LEU>:
5289         Remove CCCmode handling.
5290         <case LTU>: Return 'c' suffix for CCCmode.
5291         <case GEU>: Return 'nc' suffix for CCCmode.
5292         (ix86_cc_mode) <case GTU, case LEU>: Do not generate overflow checks.
5293         * config/i386/i386.md (*sub<mode>3_cconly_overflow): Remove.
5294         (*sub<mode>3_cc_overflow): Ditto.
5295         (*subsi3_zext_cc_overflow): Ditto.
5297 2013-10-26  Uros Bizjak  <ubizjak@gmail.com>
5299         Backport from mainline
5300         2013-10-19  Uros Bizjak  <ubizjak@gmail.com>
5302         PR target/58792
5303         * config/i386/i386.c (ix86_function_value_regno): Add DX_REG,
5304         ST1_REG and XMM1_REG for 32bit and 64bit targets.  Also add DI_REG
5305         and SI_REG for 64bit SYSV ABI targets.
5307 2013-08-25  Richard Henderson  <rth@twiddle.net>
5309         PR rtl/58542
5310         * optabs.c (maybe_emit_atomic_exchange): Use create_input_operand
5311         instead of create_convert_operand_to.
5312         (maybe_emit_sync_lock_test_and_set): Likewise.
5313         (expand_atomic_compare_and_swap): Likewise.
5314         (maybe_emit_compare_and_swap_exchange_loop): Don't convert_modes.
5316 2013-10-25  Eric Botcazou  <ebotcazou@adacore.com>
5318         PR rtl-optimization/58831
5319         * alias.c (init_alias_analysis): At the beginning of each iteration, set
5320         the reg_seen[N] bit if static_reg_base_value[N] is non-null.
5322 2013-10-25  Eric Botcazou  <ebotcazou@adacore.com>
5324         * recog.c (search_ofs): New static variable moved from...
5325         (peep2_find_free_register): ...here.
5326         (peephole2_optimize): Initialize it.
5328 2013-10-24  David Edelsohn  <dje.gcc@gmail.com>
5330         Backport from mainline
5331         2013-10-23  David Edelsohn  <dje.gcc@gmail.com>
5333         PR target/58838
5334         * config/rs6000/rs6000.md (mulsi3_internal1 and splitter): Add
5335         TARGET_32BIT final condition.
5336         (mulsi3_internal2 and splitter): Same.
5338 2013-10-23  Tom de Vries  <tom@codesourcery.com>
5340         PR tree-optimization/58805
5341         * tree-ssa-tail-merge.c (stmt_local_def): Add gimple_vdef check.
5343 2013-10-23  Richard Biener  <rguenther@suse.de>
5345         Backport from mainline
5346         2013-06-24  Richard Biener  <rguenther@suse.de>
5348         PR tree-optimization/57488
5349         * tree-ssa-pre.c (insert): Clear NEW sets before each iteration.
5351 2013-10-16  Ganesh Gopalasubramanian  <Ganesh.Gopalasubramanian@amd.com>
5353         Backport from mainline
5354         2013-10-16  Ganesh Gopalasubramanian
5355                     <Ganesh.Gopalasubramanian@amd.com>
5357         * config/i386/i386.c (ix86_option_override_internal): Enable FMA4
5358         for AMD bdver3.
5360 2013-10-16  Jakub Jelinek  <jakub@redhat.com>
5362         * BASE-VER: Set to 4.8.3.
5363         * DEV-PHASE: Set to prerelease.
5365 2013-10-16  Release Manager
5367         * GCC 4.8.2 released.
5369 2013-10-12  James Greenhalgh  <james.greenhalgh@arm.com>
5371         Backport from mainline.
5372         2013-10-12  James Greenhalgh  <james.greenhalgh@arm.com>
5374         * config/aarch64/arm_neon.h
5375         (vtbx<1,3>_<psu>8): Fix register constriants.
5377 2013-10-10  Jakub Jelinek  <jakub@redhat.com>
5379         PR middle-end/58670
5380         * stmt.c (expand_asm_operands): Add FALLTHRU_BB argument,
5381         if any labels are in FALLTHRU_BB, use a special label emitted
5382         immediately after the asm goto insn rather than label_rtx
5383         of the LABEL_DECL.
5384         (expand_asm_stmt): Adjust caller.
5385         * cfgrtl.c (commit_one_edge_insertion): Force splitting of
5386         edge if the last insn in predecessor is a jump with single successor,
5387         but it isn't simplejump_p.
5389 2013-10-09  Jakub Jelinek  <jakub@redhat.com>
5391         Backport from mainline
5392         2013-09-26  Richard Biener  <rguenther@suse.de>
5394         PR tree-optimization/58539
5395         * tree-vect-loop.c (vect_create_epilog_for_reduction): Honor
5396         the fact that debug statements are not taking part in loop-closed
5397         SSA construction.
5399 2013-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5401         * config/s390/s390.c (s390_register_info): Make the call-saved FPR
5402         loop to work also for 31bit ABI.
5403         Save the stack pointer for frame_size > 0.
5405 2013-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5407         * config/s390/s390.md ("tbegin", "tbegin_nofloat", "tbegin_retry")
5408         ("tbegin_retry_nofloat", "tend", "tabort", "tx_assist"): Remove
5409         constraint letters from expanders.
5410         ("tbegin_retry", "tbegin_retry_nofloat"): Change predicate of the
5411         retry count to general_operand.
5412         ("tabort"): Give operand 0 a mode.
5413         ("tabort_1"): Add mode and constraint letter for operand 0.
5414         * doc/extend.texi: Fix protoype of __builtin_non_tx_store.
5416 2013-10-04  Marcus Shawcroft  <marcus.shawcroft@arm.com>
5418         Backport from mainline.
5420         PR target/58460
5421         * config/aarch64/aarch64.md (*add_<shift>_<mode>)
5422         (*add_<shift>_si_uxtw,*add_mul_imm_<mode>)
5423         (*sub_<shift>_<mode>)
5424         (*sub_<shift>_si_uxtw,*sub_mul_imm_<mode>, *sub_mul_imm_si_uxtw):
5425         Remove k constraint.
5427 2013-10-02  John David Anglin  <danglin@gcc.gnu.org>
5429         * config.gcc (hppa*64*-*-linux*): Don't add pa/t-linux to tmake_file.
5431 2013-10-01  Jakub Jelinek  <jakub@redhat.com>
5432             Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5434         PR target/58574
5435         * config/s390/s390.c (s390_chunkify_start): Handle tablejump_p first,
5436         continue when done, for other jumps look through PARALLEL
5437         unconditionally.
5439 2013-09-30  Jakub Jelinek  <jakub@redhat.com>
5441         PR middle-end/58564
5442         * fold-const.c (fold_ternary_loc): For A < 0 : <sign bit of A> : 0
5443         optimization, punt if sign_bit_p looked through any zero extension.
5445 2013-09-27  Paulo Matos  <pmatos@broadcom.com>
5447         Backport from mainline.
5449         PR middle-end/58463
5450         2013-03-27  Richard Biener  <rguenther@suse.de>
5452         PR tree-optimization/56716
5453         * tree-ssa-structalias.c (perform_var_substitution): Adjust
5454         dumping for ref nodes.
5456 2013-09-27  Paulo Matos  <pmatos@broadcom.com>
5458         Backport from mainline.
5460         2013-09-27  Paulo Matos  <pmatos@broadcom.com>
5461         PR middle-end/58463
5462         * gcc.dg/pr58463.c: New test.
5464 2013-09-23  Eric Botcazou  <ebotcazou@adacore.com>
5466         * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Recurse on copy
5467         assignment statements.
5469 2013-09-23  Alan Modra  <amodra@gmail.com>
5471         PR target/58330
5472         * config/rs6000/rs6000.md (bswapdi2_64bit): Disable for volatile mems.
5474 2013-09-23  Alan Modra  <amodra@gmail.com>
5476         * config/rs6000/predicates.md (add_cint_operand): New.
5477         (reg_or_add_cint_operand, small_toc_ref): Use add_cint_operand.
5478         * config/rs6000/rs6000.md (largetoc_high_plus): Restrict offset
5479         using add_cint_operand.
5480         (largetoc_high_plus_aix): Likewise.
5481         * config/rs6000/rs6000.c (toc_relative_expr_p): Use add_cint_operand.
5483 2013-09-20  John David Anglin  <danglin@gcc.gnu.org>
5485         PR middle-end/56791
5486         * config/pa/pa.c (pa_option_override): Disable auto increment and
5487         decrement instructions until reload is completed.
5489         * config/pa/pa.md: In "scc" insn patterns, change output template to
5490         handle const0_rtx in reg_or_0_operand operands.
5492 2013-09-19  Jakub Jelinek  <jakub@redhat.com>
5494         * omp-low.c (expand_omp_sections): Always pass len - 1 to
5495         GOMP_sections_start, even if !exit_reachable.
5497 2013-09-18  Richard Earnshaw  <rearnsha@arm.com>
5499         * arm.c (arm_expand_prologue): Validate architecture supports
5500         LDRD/STRD before accepting tuning preferences.
5501         (arm_expand_epilogue): Likewise.
5503 2013-09-18  Daniel Morris  <danielm@ecoscentric.com>
5504             Paolo Carlini  <paolo.carlini@oracle.com>
5506         PR c++/58458
5507         * doc/implement-cxx.texi: Fix references to the C++ standards.
5509 2013-09-17  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5511         PR tree-optimization/58088
5512         * fold-const.c (mask_with_trailing_zeros): New function.
5513         (fold_binary_loc): Make sure we don't recurse infinitely
5514         when the X in (X & C1) | C2 is a tree of the form (Y * K1) & K2.
5515         Use mask_with_trailing_zeros where appropriate.
5517 2013-09-14  John David Anglin  <danglin@gcc.gnu.org>
5519         PR target/58382
5520         * config/pa/pa.c (pa_expand_prologue): Change mode in gen_rtx_POST_INC
5521         calls to word_mode.
5523 2013-09-13  Christian Bruel  <christian.bruel@st.com>
5525         PR target/58314
5526         * config/sh/sh.md (mov<mode>_reg_reg): Allow memory reloads.
5528 2013-09-11  Andi Kleen  <ak@linux.intel.com>
5530         Backport from mainline
5531         * doc/extend.texi: Use __atomic_store_n instead of
5532         __atomic_store in HLE example.
5534 2013-09-11  Andi Kleen  <ak@linux.intel.com>
5536         Backport from mainline
5537         * doc/extend.texi: Dont use __atomic_clear in HLE
5538         example.  Fix typo.
5540 2013-09-11  Andi Kleen  <ak@linux.intel.com>
5542         Backport from mainline
5543         * doc/extend.texi: Document that __atomic_clear and
5544           __atomic_test_and_set should only be used with bool.
5546 2013-09-11  Richard Biener  <rguenther@suse.de>
5548         PR middle-end/58377
5549         * passes.c (init_optimization_passes): Split critical edges
5550         before late uninit warning pass in the -Og pipeline.
5552 2013-09-11  Jakub Jelinek  <jakub@redhat.com>
5554         PR tree-optimization/58385
5555         * fold-const.c (build_range_check): If both low and high are NULL,
5556         use omit_one_operand_loc to preserve exp side-effects.
5558 2013-09-10  Richard Earnshaw  <rearnsha@arm.com>
5560         PR target/58361
5561         * arm/vfp.md (combine_vcvt_f32_<FCVTI32typename>): Fix pattern to
5562         support conditional execution.
5563         (combine_vcvt_f64_<FCVTI32typename>): Likewise.
5565 2013-09-10  Jakub Jelinek  <jakub@redhat.com>
5567         PR rtl-optimization/58365
5568         * cfgcleanup.c (merge_memattrs): Also clear MEM_READONLY_P
5569         resp. MEM_NOTRAP_P if they differ, or set MEM_VOLATILE_P if
5570         it differs.
5572 2013-09-09  Jakub Jelinek  <jakub@redhat.com>
5574         PR tree-optimization/58364
5575         * tree-ssa-reassoc.c (init_range_entry): For BIT_NOT_EXPR on
5576         BOOLEAN_TYPE, only invert in_p and continue with arg0 if
5577         the current range can't be an unconditional true or false.
5579 2013-09-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5581         PR target/57735
5582         Backport from mainline
5583         2013-04-30  Richard Sandiford  <rsandifo@linux.vnet.ibm.com>
5585         * explow.c (plus_constant): Pass "mode" to immed_double_int_const.
5586         Use gen_int_mode rather than GEN_INT.
5588 2013-09-09  Richard Biener  <rguenther@suse.de>
5590         Backport from mainline
5591         2013-08-27  Richard Biener  <rguenther@suse.de>
5593         PR tree-optimization/57521
5594         * tree-if-conv.c (if_convertible_bb_p): Verify that at least
5595         one edge is non-critical.
5596         (find_phi_replacement_condition): Make sure to use a non-critical
5597         edge.  Cleanup and remove old bug workarounds.
5598         (bb_postdominates_preds): Remove.
5599         (if_convertible_loop_p_1): Do not compute post-dominators.
5600         (combine_blocks): Do not free post-dominators.
5601         (main_tree_if_conversion): Likewise.
5603 2013-09-09  Richard Biener  <rguenther@suse.de>
5605         Backport from mainline
5606         2013-09-03  Richard Biener  <rguenther@suse.de>
5608         PR middle-end/57656
5609         * fold-const.c (negate_expr_p): Fix division case.
5610         (negate_expr): Likewise.
5612 2013-09-09  Richard Biener  <rguenther@suse.de>
5614         Backport from mainline
5615         2013-08-29  Richard Biener  <rguenther@suse.de>
5617         PR tree-optimization/57685
5618         * tree-vrp.c (register_edge_assert_for_1): Recurse only for
5619         single-use operands to avoid exponential complexity.
5621 2013-09-09  Richard Biener  <rguenther@suse.de>
5623         Backport from mainline
5624         2013-08-30  Richard Biener  <rguenther@suse.de>
5626         PR tree-optimization/58223
5627         * tree-loop-distribution.c (has_anti_dependence): Rename to ...
5628         (has_anti_or_output_dependence): ... this and adjust to also
5629         look for output dependences.
5630         (mark_nodes_having_upstream_mem_writes): Adjust.
5631         (rdg_flag_uses): Likewise.
5633 2013-09-03  Richard Biener  <rguenther@suse.de>
5635         Backport from mainline
5636         2013-08-29  Richard Biener  <rguenther@suse.de>
5638         PR tree-optimization/58246
5639         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Properly
5640         handle the dominance check inside a basic-block.
5642 2013-09-03  Richard Biener  <rguenther@suse.de>
5644         Backport from mainline
5645         2013-08-30  Richard Biener  <rguenther@suse.de>
5647         PR tree-optimization/58228
5648         * tree-vect-data-refs.c (vect_analyze_data_ref_access): Do not
5649         allow invariant loads in nested loop vectorization.
5651 2013-09-03  Richard Biener  <rguenther@suse.de>
5653         Backport from mainline
5654         2013-08-30  Richard Biener  <rguenther@suse.de>
5656         PR tree-optimization/58010
5657         * tree-vect-loop.c (vect_create_epilog_for_reduction): Remove
5658         assert that we have a loop-closed PHI.
5660 2013-09-01  Uros Bizjak  <ubizjak@gmail.com>
5662         Backport from mainline
5663         2013-08-31  Uros Bizjak  <ubizjak@gmail.com>
5665         * config/alpha/alpha.c (alpha_emit_conditional_move): Update
5666         "cmp" RTX before signed_comparison_operator check to account
5667         for "code" changes.
5669 2013-09-01  John David Anglin  <danglin@gcc.gnu.org>
5671         * config/pa/pa.md: Allow "const 0" operand 1 in "scc" insns.
5673 2013-08-30  Jakub Jelinek  <jakub@redhat.com>
5675         PR tree-optimization/58277
5676         * tree-ssa-strlen.c (strlen_enter_block): If do_invalidate gave up
5677         after seeing too many stmts with vdef in between dombb and current
5678         bb, invalidate everything.
5680 2013-08-29  Oleg Endo  <olegendo@gcc.gnu.org>
5682         Backport from mainline
5683         2013-08-05  Oleg Endo  <olegendo@gcc.gnu.org>
5685         PR other/12081
5686         * recog.h (rtx (*insn_gen_fn) (rtx, ...)): Replace typedef with new
5687         class insn_gen_fn.
5688         * expr.c (move_by_pieces_1, store_by_pieces_2): Replace argument
5689         rtx (*) (rtx, ...) with insn_gen_fn.
5690         * genoutput.c (output_insn_data): Cast gen_? function pointers to
5691         insn_gen_fn::stored_funcptr.  Add initializer braces.
5693         Backport from mainline
5694         2013-08-07  Oleg Endo  <olegendo@gcc.gnu.org>
5696         PR other/12081
5697         * config/rs6000/rs6000.c (gen_2arg_fn_t): Remove typedef.
5698         (rs6000_emit_swdiv_high_precision, rs6000_emit_swdiv_low_precision,
5699         rs6000_emit_swrsqrt): Don't cast result of GEN_FCN to gen_2arg_fn_t.
5701 2013-08-29  Jakub Jelinek  <jakub@redhat.com>
5703         Backported from mainline
5704         2013-05-27  Richard Biener  <rguenther@suse.de>
5706         PR middle-end/57381
5707         PR tree-optimization/57417
5708         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Fix test
5709         for unchanged base.
5710         (set_ssa_val_to): Compare addresses using
5711         get_addr_base_and_unit_offset.
5713         PR tree-optimization/57396
5714         * tree-affine.c (double_int_constant_multiple_p): Properly
5715         return false for val == 0 and div != 0.
5717         PR tree-optimization/57343
5718         * tree-ssa-loop-niter.c (number_of_iterations_ne_max): Do not
5719         use multiple_of_p if not TYPE_OVERFLOW_UNDEFINED.
5720         (number_of_iterations_cond): Do not build the folded tree.
5722 2013-08-28  Jakub Jelinek  <jakub@redhat.com>
5724         PR middle-end/58257
5725         * omp-low.c (copy_var_decl): Copy over TREE_NO_WARNING flag.
5727 2013-08-28  Richard Biener  <rguenther@suse.de>
5729         Backport from mainline
5730         2013-06-24  Richard Biener  <rguenther@suse.de>
5732         PR middle-end/56977
5733         * passes.c (init_optimization_passes): Move pass_fold_builtins
5734         and pass_dce earlier with -Og.
5736 2013-08-28  Uros Bizjak  <ubizjak@gmail.com>
5738         Backport from mainline
5739         2013-08-27  H.J. Lu  <hongjiu.lu@intel.com>
5741         * config/i386/driver-i386.c (host_detect_local_cpu): Update
5742         Haswell processor detection.
5744         Backport from mainline
5745         2013-08-27  Christian Widmer  <shadow@umbrox.de>
5747         PR target/57927
5748         * config/i386/driver-i386.c (host_detect_local_cpu): Add detection
5749         of Ivy Bridge and Haswell processors.  Assume core-avx2 for unknown
5750         AVX2 capable processors.
5752 2013-08-23  Jakub Jelinek  <jakub@redhat.com>
5754         PR target/58218
5755         * config/i386/x86-64.h (TARGET_SECTION_TYPE_FLAGS): Define.
5756         * config/i386/i386.c (x86_64_elf_section_type_flags): New function.
5758         PR tree-optimization/58209
5759         * tree-tailcall.c (find_tail_calls): Give up for pointer result types
5760         if m or a is non-NULL.
5762 2013-08-21  Richard Earnshaw  <rearnsha@arm.com>
5764         PR target/56979
5765         * arm.c (aapcs_vfp_allocate): Decompose the argument if the
5766         suggested mode for the assignment isn't compatible with the
5767         registers required.
5769 2013-08-20  Alan Modra  <amodra@gmail.com>
5771         PR target/57865
5772         * config/rs6000/rs6000.c (rs6000_emit_prologue): Correct ool_adjust.
5773         (rs6000_emit_epilogue): Likewise.
5775 2013-08-19  Peter Bergner  <bergner@vnet.ibm.com>
5776             Jakub Jelinek  <jakub@redhat.com>
5778         Backport from mainline
5779         * config/rs6000/dfp.md (*negtd2_fpr): Handle non-overlapping
5780         destination and source operands.
5782 2013-08-18  Jakub Jelinek  <jakub@redhat.com>
5784         PR tree-optimization/58006
5785         * tree-parloops.c (take_address_of): Don't ICE if get_name
5786         returns NULL.
5787         (eliminate_local_variables_stmt): Remove clobber stmts.
5789 2013-08-16  Jakub Jelinek  <jakub@redhat.com>
5791         PR tree-optimization/58164
5792         * gimple.c (walk_stmt_load_store_addr_ops): For visit_addr
5793         walk gimple_goto_dest of GIMPLE_GOTO.
5795         PR tree-optimization/58165
5796         * tree-call-cdce.c (shrink_wrap_one_built_in_call): If
5797         bi_call must be the last stmt in a bb, don't split_block, instead
5798         use fallthru edge from it and give up if there is none.
5799         Release conds vector when returning early.
5801 2013-08-15  David Given  <dg@cowlark.com>
5803         Backport from mainline
5804         2013-04-26  Vladimir Makarov  <vmakarov@redhat.com>
5806         * lra-constraints.c (process_alt_operands): Use #if HAVE_ATTR_enable
5807         instead of #ifdef.
5809 2013-08-14  Jakub Jelinek  <jakub@redhat.com>
5811         PR tree-optimization/58145
5812         * tree-sra.c (build_ref_for_offset): If prev_base has
5813         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS, propagate it to MEM_REF.
5815 2013-08-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5817         * config/s390/htmxlintrin.h: Add file missing from last commit.
5818         * config/s390/htmintrin.h: Likewise.
5819         * config/s390/s390intrin.h: Likewise.
5821 2013-08-14  Uros Bizjak  <ubizjak@gmail.com>
5823         Backport from mainline
5824         2013-08-13  Uros Bizjak  <ubizjak@gmail.com>
5826         * config/i386/sse.md (*sse2_maskmovdqu): Emit addr32 prefix
5827         when Pmode != word_mode.  Add length_address attribute.
5828         (sse3_monitor_<mode>): Merge from sse3_monitor and
5829         sse3_monitor64_<mode> insn patterns.  Emit addr32 prefix when
5830         Pmode != word_mode.  Update insn length attribute.
5831         * config/i386/i386.c (ix86_option_override_internal): Update
5832         ix86_gen_monitor selection for merged sse3_monitor insn.
5834 2013-08-14  Jakub Jelinek  <jakub@redhat.com>
5835             Alexandre Oliva  <aoliva@redhat.com>
5837         PR target/58067
5838         * config/i386/i386.c (ix86_delegitimize_address): For CM_MEDIUM_PIC
5839         and CM_LARGE_PIC ix86_cmodel fall thru into the -m32 code, handle
5840         there also UNSPEC_PLTOFF.
5842 2013-08-13  Jakub Jelinek  <jakub@redhat.com>
5844         PR sanitizer/56417
5845         * asan.c (instrument_strlen_call): Fix typo in comment.
5846         Use char * type even for the lhs of POINTER_PLUS_EXPR.
5848 2013-08-13  Vladimir Makarov  <vmakarov@redhat.com>
5850         Backport from mainline
5851         2013-06-06  Vladimir Makarov  <vmakarov@redhat.com>
5853         PR rtl-optimization/57459
5854         * lra-constraints.c (update_ebb_live_info): Fix typo for operand
5855         type when setting live regs.
5857 2013-08-13  Marek Polacek  <polacek@redhat.com>
5858             Jakub Jelinek  <jakub@redhat.com>
5860         PR tree-optimization/57980
5861         * tree-tailcall.c (process_assignment): Return false
5862         when not dealing with integers or floats.
5864 2013-08-12  Andrew Haley  <aph@redhat.com>
5866         Backport from mainline:
5867         * 2013-07-11  Andreas Schwab  <schwab@suse.de>
5869         * config/aarch64/aarch64-linux.h (CPP_SPEC): Define.
5871 2013-08-13  Uros Bizjak  <ubizjak@gmail.com>
5873         Backport from mainline
5874         2013-08-12  Perez Read  <netfirewall@gmail.com>
5876         PR target/58132
5877         * config/i386/i386.md (*movabs<mode>_1):  Add <ptrsize> PTR before
5878         operand 0 for intel asm alternative.
5879         (*movabs<mode>_2): Ditto for operand 1.
5881 2013-08-09  Zhenqiang Chen  <zhenqiang.chen@linaro.org>
5883         Backport from mainline:
5884         2013-08-09  Zhenqiang Chen  <zhenqiang.chen@linaro.org>
5886         * config/arm/neon.md (vcond): Fix floating-point vector
5887         comparisons against 0.
5889 2013-08-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5891         Backport from mainline:
5892         2013-08-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5894         * config/arm/neon.md (movmisalign<mode>): Disable when we
5895         don't allow unaligned accesses.
5896         (*movmisalign<mode>_neon_store): Likewise.
5897         (*movmisalign<mode>_neon_load): Likewise.
5898         (*movmisalign<mode>_neon_store): Likewise.
5899         (*movmisalign<mode>_neon_load): Likewise.
5901 2013-08-06  Martin Jambor  <mjambor@suse.cz>
5903         PR middle-end/58041
5904         * gimple-ssa-strength-reduction.c (replace_ref): Make sure built
5905         MEM_REF has proper alignment information.
5907 2013-08-05  Richard Earnshaw  <rearnsha@arm.com>
5909         PR rtl-optimization/57708
5910         * recog.c (peep2_find_free_register): Validate all regs in a
5911         multi-reg mode.
5913 2013-08-02  Eric Botcazou  <ebotcazou@adacore.com>
5915         * config/sparc/sparc.c (sparc_emit_membar_for_model) <SMM_TSO>: Add
5916         the implied StoreLoad barrier for atomic operations if before.
5918 2013-08-02  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5920         Backports from mainline:
5921         2013-06-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5923         * config/s390/s390.c: Rename UNSPEC_CCU_TO_INT to
5924         UNSPEC_STRCMPCC_TO_INT and UNSPEC_CCZ_TO_INT to UNSPEC_CC_TO_INT.
5925         (struct machine_function): Add tbegin_p.
5926         (s390_canonicalize_comparison): Fold CC mode compares to
5927         conditional jump if possible.
5928         (s390_emit_jump): Return the emitted jump.
5929         (s390_branch_condition_mask, s390_branch_condition_mnemonic):
5930         Handle CCRAWmode compares.
5931         (s390_option_override): Default to -mhtm if available.
5932         (s390_reg_clobbered_rtx): Handle floating point regs as well.
5933         (s390_regs_ever_clobbered): Use s390_regs_ever_clobbered also for
5934         FPRs instead of df_regs_ever_live_p.
5935         (s390_optimize_nonescaping_tx): New function.
5936         (s390_init_frame_layout): Extend clobbered_regs array to cover
5937         FPRs as well.
5938         (s390_emit_prologue): Call s390_optimize_nonescaping_tx.
5939         (s390_expand_tbegin): New function.
5940         (enum s390_builtin): New enum definition.
5941         (code_for_builtin): New array definition.
5942         (s390_init_builtins): New function.
5943         (s390_expand_builtin): New function.
5944         (TARGET_INIT_BUILTINS): Define.
5945         (TARGET_EXPAND_BUILTIN): Define.
5946         * common/config/s390/s390-common.c (processor_flags_table): Add PF_TX.
5947         * config/s390/predicates.md (s390_comparison): Handle CCRAWmode.
5948         (s390_alc_comparison): Likewise.
5949         * config/s390/s390-modes.def: Add CCRAWmode.
5950         * config/s390/s390.h (processor_flags): Add PF_TX.
5951         (TARGET_CPU_HTM): Define macro.
5952         (TARGET_HTM): Define macro.
5953         (TARGET_CPU_CPP_BUILTINS): Define __HTM__ for htm.
5954         * config/s390/s390.md: Rename UNSPEC_CCU_TO_INT to
5955         UNSPEC_STRCMPCC_TO_INT and UNSPEC_CCZ_TO_INT to UNSPEC_CC_TO_INT.
5956         (UNSPECV_TBEGIN, UNSPECV_TBEGINC, UNSPECV_TEND, UNSPECV_TABORT)
5957         (UNSPECV_ETND, UNSPECV_NTSTG, UNSPECV_PPA): New unspecv enum
5958         values.
5959         (TBEGIN_MASK, TBEGINC_MASK): New constants.
5960         ("*cc_to_int"): Move up.
5961         ("*mov<mode>cc", "*cjump_64", "*cjump_31"): Accept integer
5962         constants other than 0.
5963         ("*ccraw_to_int"): New insn and splitter definition.
5964         ("tbegin", "tbegin_nofloat", "tbegin_retry")
5965         ("tbegin_retry_nofloat", "tbeginc", "tend", "tabort")
5966         ("tx_assist"): New expander.
5967         ("tbegin_1", "tbegin_nofloat_1", "*tbeginc_1", "*tend_1")
5968         ("*tabort_1", "etnd", "ntstg", "*ppa"): New insn definition.
5969         * config/s390/s390.opt: Add -mhtm option.
5970         * config/s390/s390-protos.h (s390_emit_jump): Add return type.
5971         * config/s390/htmxlintrin.h: New file.
5972         * config/s390/htmintrin.h: New file.
5973         * config/s390/s390intrin.h: New file.
5974         * doc/extend.texi: Document htm builtins.
5975         * config.gcc: Add the new header files to extra_headers.
5977         2013-07-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5979         * config/s390/s390.c: (s390_expand_builtin): Allow -mhtm to be
5980         enabled without -march=zEC12.
5981         * config/s390/s390.h (TARGET_HTM): Do not require EC12 machine
5982         flags to be set.
5984 2013-08-01  Ganesh Gopalasubramanian  <Ganesh.Gopalasubramanian@amd.com>
5986         Backport from mainline
5987         2013-05-13  Ganesh Gopalasubramanian
5988                     <Ganesh.Gopalasubramanian@amd.com>
5990         * config/i386/i386.c (processor_target_table): Modified default
5991         alignment values for AMD BD and BT architectures.
5993 2013-07-31  Sriraman Tallam  <tmsriram@google.com>
5995         * config/i386/i386.c (dispatch_function_versions): Fix array
5996         indexing of function_version_info to match actual_versions.
5998 2013-07-31  Sebastian Huber  <sebastian.huber@embedded-brains.de>
6000         * config.gcc (*-*-rtems*): Use __cxa_atexit by default.
6001         * config/rs6000/rtems.h (TARGET_LIBGCC_SDATA_SECTION): Define.
6003 2013-07-31  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6005         Backport from mainline
6006         2013-03-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6008         * config/s390/s390.h (TARGET_FLT_EVAL_METHOD): Define.
6010         2013-07-23  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6012         * config/s390/linux-unwind.h: Use the proper dwarf to hard reg
6013         mapping for FPRs when creating the fallback framestate.
6015         2013-07-29  Dominik Vogt  <vogt@linux.vnet.ibm.com>
6017         * config/s390/s390.md ("movcc"): Swap load and store instructions.
6019 2013-07-25  Terry Guo  <terry.guo@arm.com>
6021         Backport from mainline:
6022         2013-07-25  Terry Guo  <terry.guo@arm.com>
6024         * config/arm/arm.c (thumb1_size_rtx_costs): Assign proper cost for
6025         shift_add/shift_sub0/shift_sub1 RTXs.
6027 2013-07-22  Iain Sandoe  <iain@codesourcery.com>
6029         Backport from mainline:
6030         2013-07-22  Uros Bizjak  <ubizjak@gmail.com>
6032         * config/i386/i386.md (nonlocal_goto_receiver): Delete insn if
6033         it is not needed after split.
6035         2013-07-20  Iain Sandoe  <iain@codesourcery.com>
6037         PR target/51784
6038         * config/i386/i386.c (output_set_got) [TARGET_MACHO]: Adjust to emit a
6039         second label for nonlocal goto receivers. Don't output pic base labels
6040         unless we're producing PIC; mark that action unreachable().
6041         (ix86_save_reg): If the function contains a nonlocal label, save the
6042         PIC base reg.
6043         * config/darwin-protos.h (machopic_should_output_picbase_label): New.
6044         * gcc/config/darwin.c (emitted_pic_label_num): New GTY.
6045         (update_pic_label_number_if_needed): New.
6046         (machopic_output_function_base_name): Adjust for nonlocal receiver
6047         case.
6048         (machopic_should_output_picbase_label): New.
6049         * config/i386/i386.md (enum unspecv): UNSPECV_NLGR: New.
6050         (nonlocal_goto_receiver): New insn and split.
6052 2013-07-19 Wei Mi  <wmi@google.com>
6054         Backport from mainline:
6055         2013-07-18  Vladimir Makarov  <vmakarov@redhat.com>
6056                     Wei Mi  <wmi@google.com>
6058         PR rtl-optimization/57878
6059         * lra-assigns.c (assign_by_spills): Move non_reload_pseudos to the
6060         top. Promote lra_assert to gcc_assert.
6061         (reload_pseudo_compare_func): Check regs first for reload pseudos.
6063 2013-07-11  Georg-Johann Lay  <avr@gjlay.de>
6065         Backport from 2013-07-19 trunk r201051.
6067         PR target/57516
6068         * config/avr/avr-fixed.md (round<mode>3_const): Turn expander to insn.
6069         * config/avr/avr.md (adjust_len): Add `round'.
6070         * config/avr/avr-protos.h (avr_out_round): New prototype.
6071         (avr_out_plus): Add `out_label' argument.
6072         * config/avr/avr.c (avr_out_plus_1): Add `out_label' argument.
6073         (avr_out_plus): Pass down `out_label' to avr_out_plus_1.
6074         Handle the case where `insn' is just a pattern.
6075         (avr_out_bitop): Handle the case where `insn' is just a pattern.
6076         (avr_out_round): New function.
6077         (avr_adjust_insn_length): Handle ADJUST_LEN_ROUND.
6079 2013-07-19  Kirill Yukhin  <kirill.yukhin@intel.com>
6081         * config/i386/bmiintrin.h (_bextr_u32): New.
6082         (_bextr_u64): Ditto.
6083         (_blsi_u32): New.
6084         (_blsi_u64): Ditto.
6085         (_blsr_u32): Ditto.
6086         (_blsr_u64): Ditto.
6087         (_blsmsk_u32): Ditto.
6088         (_blsmsk_u64): Ditto.
6089         (_tzcnt_u32): Ditto.
6090         (_tzcnt_u64): Ditto.
6092 2013-07-17  James Greenhalgh  <james.greenhalgh@arm.com>
6094         Backport From mainline:
6095         2013-07-03  James Greenhalgh  <james.greenhalgh@arm.com>
6097         * config/aarch64/aarch64-builtins.c
6098         (aarch64_simd_expand_builtin): Handle AARCH64_SIMD_STORE1.
6099         * config/aarch64/aarch64-simd-builtins.def (ld1): New.
6100         (st1): Likewise.
6101         * config/aarch64/aarch64-simd.md
6102         (aarch64_ld1<VALL:mode>): New.
6103         (aarch64_st1<VALL:mode>): Likewise.
6104         * config/aarch64/arm_neon.h
6105         (vld1<q>_<fpsu><8, 16, 32, 64>): Convert to RTL builtins.
6107 2013-07-11  Georg-Johann Lay  <avr@gjlay.de>
6109         Backport from 2013-07-11 trunk r200901.
6111         PR target/57631
6112         * config/avr/avr.c (avr_set_current_function): Sanity-check signal
6113         name seen by assembler/linker if available.
6115 2013-07-10  Georg-Johann Lay  <avr@gjlay.de>
6117         Backport from 2013-07-10 trunk r200872.
6119         PR target/57844
6120         * config/avr/avr.c (avr_prologue_setup_frame): Trunk -size to mode
6121         of my_fp.
6123 2013-07-10  Georg-Johann Lay  <avr@gjlay.de>
6125         Backport from 2013-07-10 trunk r200870.
6127         PR target/57506
6128         * config/avr/avr-mcus.def (atmega16hva, atmega16hva2, atmega16hvb)
6129         (atmega16m1, atmega16u4, atmega32a, atmega32c1, atmega32hvb)
6130         (atmega32m1, atmega32u4, atmega32u6, atmega64c1, atmega64m1):
6131         Remove duplicate devices.
6132         * config/avr/gen-avr-mmcu-texi.c (print_mcus): Fail on duplicate MCUs.
6133         * config/avr/t-multilib: Regenerate.
6134         * config/avr/avr-tables.opt: Regenerate.
6135         * doc/avr-mmcu.texi: Regenerate.
6137 2013-07-10  Georg-Johann Lay  <avr@gjlay.de>
6139         PR target/56987
6140         * config/avr/avr.opt (Waddr-space-convert): Fix typo.
6142 2013-07-09  Joseph Myers  <joseph@codesourcery.com>
6144         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Only
6145         adjust register size for TDmode and TFmode for VSX registers.
6147 2013-07-08  Kai Tietz  <ktietz@redhat.com>
6149         Backport from mainline
6150         PR target/56892
6151         * config/i386/i386.c (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Define as
6152         hook_bool_const_tree_true.
6154 2013-07-08  Uros Bizjak  <ubizjak@gmail.com>
6156         Backport from mainline
6157         2013-07-07  Uros Bizjak  <ubizjak@gmail.com>
6159         * config/i386/driver-i386.c (host_detect_local_cpu): Do not check
6160         signature_TM2_ebx, it interferes with signature_INTEL_ebx.
6162         Backport from mainline
6163         2013-07-06  Uros Bizjak  <ubizjak@gmail.com>
6165         * config/i386/sse.md (sse_movlhps): Change alternative 3
6166         of operand 2 to "m".
6168 2013-07-08  Eric Botcazou  <ebotcazou@adacore.com>
6170         * Makefile.in (tree-ssa-reassoc.o): Add dependency on $(PARAMS_H).
6172 2013-07-08  Jakub Jelinek  <jakub@redhat.com>
6174         PR rtl-optimization/57829
6175         * simplify-rtx.c (simplify_binary_operation_1) <case IOR>: Ensure that
6176         mask bits outside of mode are just sign-extension from mode to HWI.
6178 2013-07-03  Jakub Jelinek  <jakub@redhat.com>
6180         PR target/57777
6181         * config/i386/predicates.md (vsib_address_operand): Disallow
6182         SYMBOL_REF or LABEL_REF in parts.disp if TARGET_64BIT && flag_pic.
6184 2013-06-30  Terry Guo  <terry.guo@arm.com>
6186         Backport from mainline
6187         2013-03-27  Bin Cheng  <bin.cheng@arm.com>
6189         PR target/56102
6190         * config/arm/arm.c (thumb1_rtx_costs, thumb1_size_rtx_costs): Fix
6191         rtx costs for SET/ASHIFT/ASHIFTRT/LSHIFTRT/ROTATERT patterns with
6192         mult-word mode.
6194 2013-06-28  Jakub Jelinek  <jakub@redhat.com>
6196         PR target/57736
6197         * config/i386/i386.c (ix86_expand_builtin): If target == NULL
6198         and mode is VOIDmode, don't create a VOIDmode pseudo to copy result
6199         into.
6201 2013-06-27  Jakub Jelinek  <jakub@redhat.com>
6203         PR target/57623
6204         * config/i386/i386.md (bmi_bextr_<mode>): Swap predicates and
6205         constraints of operand 1 and 2.
6207         PR target/57623
6208         * config/i386/i386.md (bmi2_bzhi_<mode>3): Swap AND arguments
6209         to match RTL canonicalization.  Swap predicates and
6210         constraints of operand 1 and 2.
6212         * tree-vect-stmts.c (vectorizable_store): Move ptr_incr var
6213         decl before the loop, initialize to NULL.
6214         (vectorizable_load): Initialize ptr_incr to NULL.
6216 2013-06-24  Martin Jambor  <mjambor@suse.cz>
6218         PR tree-optimization/57358
6219         * ipa-prop.c (parm_ref_data_preserved_p): Always return true when
6220         not optimizing.
6222 2013-06-24  Alan Modra  <amodra@gmail.com>
6224         * config/rs6000/rs6000.c (vspltis_constant): Correct for little-endian.
6225         (gen_easy_altivec_constant): Likewise.
6226         * config/rs6000/predicates.md (easy_vector_constant_add_self,
6227         easy_vector_constant_msb): Likewise.
6229 2013-06-21  Uros Bizjak  <ubizjak@gmail.com>
6231         Backport from mainline
6232         2013-06-20  Uros Bizjak  <ubizjak@gmail.com>
6234         PR target/57655
6235         * config/i386/i386.c (construct_container): Report error if
6236         long double is used with disabled x87 float returns.
6238 2013-06-20  Wei Mi  <wmi@google.com>
6240         Backport from mainline
6241         2013-06-19  Wei Mi  <wmi@google.com>
6243         PR rtl-optimization/57518
6244         * ira.c (set_paradoxical_subreg): Set pdx_subregs[regno]
6245         if regno is used in paradoxical subreg.
6246         (update_equiv_regs): Check pdx_subregs[regno] before
6247         set a reg to be equivalent with a mem.
6250 2013-06-20  David Edelsohn  <dje.gcc@gmail.com>
6252         Backport from mainline
6253         2013-06-19  David Edelsohn  <dje.gcc@gmail.com>
6255         PR driver/57652
6256         * collect2.c (collect_atexit): New.
6257         (collect_exit): Delete.
6258         (main): Register collect_atexit with atexit.
6259         (collect_wait): Change collect_exit to exit.
6260         (do_wait): Same.
6261         * collect2.h (collect_exit): Delete.
6262         * tlink.c (do_tlink): Rename exit to ret. Change collect_exit to exit.
6264 2013-06-19  Matthias Klose  <doko@ubuntu.com>
6266         PR driver/57651
6267         * file-find.h (find_a_file): Add a mode parameter.
6268         * file-find.c (find_a_file): Likewise.
6269         * gcc-ar.c (main): Call find_a_file with R_OK for the plugin,
6270         with X_OK for the executables.
6271         * collect2.c (main): Call find_a_file with X_OK.
6273 2013-06-19  Igor Zamyatin  <igor.zamyatin@intel.com>
6275         * doc/invoke.texi (core-avx2): Document.
6276         (atom): Updated with MOVBE.
6278 2013-06-19  Jakub Jelinek  <jakub@redhat.com>
6280         PR driver/57651
6281         * gcc-ar.c (main): If not CROSS_DIRECTORY_STRUCTURE, look for
6282         PERSONALITY in $PATH derived prefixes.
6284 2013-06-19  Paolo Carlini  <paolo.carlini@oracle.com>
6286         PR c++/56544
6287         * doc/cpp.texi [Standard Predefined Macros, __cplusplus]: Document
6288         that now in C++ the value is correct per the C++ standards.
6290 2013-06-19  Alan Modra  <amodra@gmail.com>
6292         Apply mainline patches
6293         2013-06-13  Alan Modra  <amodra@gmail.com>
6294         * config/rs6000/rs6000.h (LONG_DOUBLE_LARGE_FIRST): Define.
6295         * config/rs6000/rs6000.md (signbittf2): New insn.
6296         (extenddftf2_internal): Use LONG_DOUBLE_LARGE_FIRST.
6297         (abstf2_internal, cmptf_internal2): Likewise.
6298         * config/rs6000/spe.md (spe_abstf2_cmp, spe_abstf2_tst): Likewise.
6300         2013-06-11  Anton Blanchard  <anton@samba.org>
6301         * config/rs6000/rs6000.c (rs6000_adjust_atomic_subword): Calculate
6302         correct shift value in little-endian mode.
6304         2013-06-07  Alan Modra  <amodra@gmail.com>
6305         * config/rs6000/rs6000.c (setup_incoming_varargs): Round up
6306         va_list_gpr_size.
6308         2013-06-04  Alan Modra  <amodra@gmail.com>
6309         * config/rs6000/rs6000.c (output_toc): Correct little-endian float
6310         constant output.
6312         2013-05-10  Alan Modra  <amodra@gmail.com>
6313         * configure.ac (HAVE_AS_TLS): Swap powerpc64 and powerpc cases.
6314         (HAVE_LD_LARGE_TOC): Don't mention AIX in help text.
6315         * configure: Regenerate.
6317         2013-05-09  Alan Modra  <amodra@gmail.com>
6318         * configure.ac (HAVE_AS_TLS): Enable tests for powerpcle and
6319         powerpc64le.
6320         * configure: Regenerate.
6322         2013-05-07  Anton Blanchard  <anton@samba.org>
6323         * configure.ac (HAVE_LD_LARGE_TOC): Use right linker emulation
6324         for powerpc64 little endian.
6325         * configure: Regenerate.
6327         2013-05-06  Alan Modra  <amodra@gmail.com>
6328         * config/rs6000/linux.h (DEFAULT_ASM_ENDIAN): Define.
6329         (LINK_OS_LINUX_EMUL): Use ENDIAN_SELECT.
6330         * config/rs6000/linux64.h (DEFAULT_ASM_ENDIAN): Define.
6331         * config/rs6000/sysv4le.h (DEFAULT_ASM_ENDIAN): Define.
6332         (LINK_TARGET_SPEC): Use ENDIAN_SELECT.
6333         * config/rs6000/sysv4.h (DEFAULT_ASM_ENDIAN): Define as -mbig.
6335         2013-05-06  Alan Modra  <amodra@gmail.com>
6336         * config/rs6000/sysv4.h (ENDIAN_SELECT): Define, extracted from
6337         (ASM_SPEC): ..here.  Emit DEFAULT_ASM_ENDIAN too.
6338         (DEFAULT_ASM_ENDIAN): Define.
6339         (CC1_SPEC, LINK_TARGET_SPEC): Use ENDIAN_SELECT.
6340         * config/rs6000/linux64.h (ASM_SPEC32): Remove endian options.
6341         Update -K PIC clause from sysv4.h.
6342         (ASM_SPEC_COMMON): Use ENDIAN_SELECT.
6343         (LINK_OS_LINUX_EMUL32, LINK_OS_LINUX_EMUL64): Likewise.
6345         2013-05-06  Alan Modra  <amodra@gmail.com>
6346         * config/rs6000/rs6000.md (bswapdi 2nd splitter): Don't swap words
6347         twice for little-endian.
6348         (ashrdi3_no_power, ashrdi3): Support little-endian.
6350         2013-04-25  Alan Modra  <amodra@gmail.com>
6351         * config.gcc: Support little-endian powerpc-linux targets.
6352         * config/rs6000/linux.h (LINK_OS_LINUX_EMUL): Define.
6353         (LINK_OS_LINUX_SPEC): Define.
6354         * config/rs6000/linuxspe.h (TARGET_DEFAULT):
6355         Preserve MASK_LITTLE_ENDIAN.
6356         * config/rs6000/default64.h (TARGET_DEFAULT): Likewise.
6357         * config/rs6000/linuxaltivec.h (TARGET_DEFAULT): Likewise.
6358         * config/rs6000/linux64.h (OPTION_LITTLE_ENDIAN): Don't zero.
6359         (LINK_OS_LINUX_EMUL32, LINK_OS_LINUX_EMUL64): Define.
6360         (LINK_OS_LINUX_SPEC32, LINK_OS_LINUX_SPEC64): Use above.
6361         * config/rs6000/rs6000.c (output_toc): Don't use .tc for TARGET_ELF.
6362         Correct fp word order for little-endian.  Don't shift toc entries
6363         smaller than a word for little-endian.
6364         * config/rs6000/rs6000.md (bswaphi2, bswapsi2 split): Comment.
6365         (bswapdi2 splits): Correct low-part subreg for little-endian.
6366         Remove wrong BYTES_BIG_ENDIAN tests, and rename vars to remove
6367         low/high where such is correct only for be.
6368         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Allow
6369         little-endian for -mcall-aixdesc.
6371 2013-06-12  Martin Jambor  <mjambor@suse.cz>
6373         * ipa-cp.c (ipa_get_indirect_edge_target_1): Check that param_index is
6374         within bounds at the beginning of the function.
6376 2013-06-12  Jakub Jelinek  <jakub@redhat.com>
6378         PR tree-optimization/57537
6379         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): If
6380         vect_handle_widen_op_by_const, convert oprnd1 to half_type1.
6382 2013-06-10  Uros Bizjak  <ubizjak@gmail.com>
6384         Backport from mainline
6385         2013-06-10  Uros Bizjak  <ubizjak@gmail.com>
6387         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Also use
6388         cmp_code to construct REG_EQUAL note.
6390 2013-06-10  Oleg Endo  <olegendo@gcc.gnu.org>
6392         Backport from mainline
6393         2013-05-20  Oleg Endo  <olegendo@gcc.gnu.org>
6395         PR target/56547
6396         * config/sh/sh.md (fmasf4): Remove empty constraints strings.
6397         (*fmasf4, *fmasf4_media): New insns.
6399 2013-06-09  Jakub Jelinek  <jakub@redhat.com>
6401         PR target/57568
6402         * config/i386/i386.md (TARGET_READ_MODIFY_WRITE peepholes): Ensure
6403         that operands[2] doesn't overlap with operands[0].
6405 2013-06-07  Richard Sandiford  <rsandifo@linux.vnet.ibm.com>
6407         * recog.c (offsettable_address_addr_space_p): Fix calculation of
6408         address mode.  Move pointer mode initialization to the same place.
6410 2013-06-07  Sofiane Naci  <sofiane.naci@arm.com>
6412         Backport from mainline
6413         * config/aarch64/aarch64.md (*movdi_aarch64): Define "simd" attribute.
6415 2013-06-07  Uros Bizjak  <ubizjak@gmail.com>
6417         Backport from mainline
6418         2013-06-05  Uros Bizjak  <ubizjak@gmail.com>
6420         * config/alpha/alpha.c (alpha_emit_conditional_move): Swap all
6421         GE, GT, GEU and GTU compares, modulo DImode compares with zero.
6423         Backport from mainline
6424         2013-05-23  Uros Bizjak  <ubizjak@gmail.com>
6426         PR target/57379
6427         * config/alpha/alpha.md (unspec): Add UNSPEC_XFLT_COMPARE.
6428         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Construct
6429         REG_EQUAL note as UNSPEC_XFLT_COMPARE unspec.
6431 2013-06-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
6433         Backport from mainline.
6434         2013-05-22  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
6436         * config/rs6000/rs6000.h (MALLOC_ABI_ALIGNMENT): New #define.
6438 2013-06-03  James Greenhalgh  <james.greenhalgh@arm.com>
6440         Backport from mainline.
6441         2013-04-25  James Greenhalgh  <james.greenhalgh@arm.com>
6443         * config/aarch64/aarch64.c (aarch64_print_operand): Fix asm_fprintf
6444         format specifier in 'X' case.
6446 2013-05-31  Richard Henderson  <rth@redhat.com>
6448         PR target/56742
6449         * config/i386/i386.c (ix86_seh_fixup_eh_fallthru): New.
6450         (ix86_reorg): Call it.
6452 2012-05-31  Jakub Jelinek  <jakub@redhat.com>
6454         * BASE-VER: Set to 4.8.2.
6455         * DEV-PHASE: Set to prerelease.
6457 2013-05-31  Release Manager
6459         * GCC 4.8.1 released.
6461 2013-05-24  Greta Yorsh  <Greta.Yorsh@arm.com>
6463         Backport from mainline
6464         2013-05-02  Greta Yorsh  <Greta.Yorsh@arm.com>
6466         PR target/56732
6467         * config/arm/arm.c (arm_expand_epilogue): Check really_return before
6468         generating simple_return for naked functions.
6470 2013-05-24  Alexander Ivchenko  <alexander.ivchenko@intel.com>
6472         PR tree-ssa/57385
6473         * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Check
6474         that index is not negative.
6476 2013-05-23  Martin Jambor  <mjambor@suse.cz>
6478         PR middle-end/57347
6479         * tree.h (contains_bitfld_component_ref_p): Declare.
6480         * tree-sra.c (contains_bitfld_comp_ref_p): Move...
6481         * tree.c (contains_bitfld_component_ref_p): ...here.  Adjust its caller.
6482         * ipa-prop.c (determine_known_aggregate_parts): Check that LHS does
6483         not access a bit-field.  Assert all final offsets are byte-aligned.
6485 2013-05-23  Richard Biener  <rguenther@suse.de>
6487         PR rtl-optimization/57341
6488         * ira.c (validate_equiv_mem_from_store): Use anti_dependence
6489         instead of true_dependence.
6491 2013-05-23  Jakub Jelinek  <jakub@redhat.com>
6493         PR middle-end/57344
6494         * expmed.c (store_split_bit_field): If op0 is a REG or
6495         SUBREG of a REG, don't lower unit.  Handle unit not being
6496         always BITS_PER_WORD.
6498 2013-05-22  Uros Bizjak  <ubizjak@gmail.com>
6500         PR target/57356
6501         * config/i386/i386.md (*movti_internal_rex64): Emit movaps/movups
6502         for non-sse2 targets.
6503         (*movti_internal): Simplify mode attribute calculation.
6505 2013-05-22  Richard Biener  <rguenther@suse.de>
6507         Backport from mainline
6508         2013-05-21  Richard Biener  <rguenther@suse.de>
6510         PR tree-optimization/57318
6511         * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Do not
6512         estimate stmts with side-effects as likely eliminated.
6514         2013-05-21  Richard Biener  <rguenther@suse.de>
6516         PR tree-optimization/57330
6517         * cgraph.c (cgraph_redirect_edge_call_stmt_to_callee): Properly
6518         preserve the call stmts fntype.
6520         2013-05-21  Richard Biener  <rguenther@suse.de>
6522         PR tree-optimization/57303
6523         * tree-ssa-sink.c (statement_sink_location): Properly handle
6524         self-assignments.
6526 2013-05-21  Magnus Granberg  <baldrick@free.fr>
6528         PR plugins/56754
6529         * Makefile.in (PLUGIN_HEADERS): Add $(TARGET_H).
6531 2013-05-21  Eric Botcazou  <ebotcazou@adacore.com>
6533         Backport from mainline
6534         2013-05-14  Eric Botcazou  <ebotcazou@adacore.com>
6536         * config/sparc/sp64-elf.h (CPP_SUBTARGET_SPEC): Delete.
6537         * config/sparc/openbsd64.h (CPP_SUBTARGET_SPEC): Likewise.
6539 2013-05-17  Jakub Jelinek  <jakub@redhat.com>
6541         PR rtl-optimization/57281
6542         PR rtl-optimization/57300
6543         * config/i386/i386.md (extendsidi2_1 dead reg splitter): Remove.
6544         (extendsidi2_1 peephole2s): Add instead 2 new peephole2s, that undo
6545         what the other splitter did if the registers are dead.
6547 2013-05-17  Uros Bizjak  <ubizjak@gmail.com>
6549         Backport from mainline
6550         2013-05-16  Uros Bizjak  <ubizjak@gmail.com>
6552         * config/i386/driver-i386.c (host_detect_local_cpu): Determine
6553         cache parameters using detect_caches_amd also for CYRIX,
6554         NSC and TM2 signatures.
6556         2013-05-16  Uros Bizjak  <ubizjak@gmail.com>
6557                     Dzianis Kahanovich  <mahatma@eu.by>
6559         PR target/45359
6560         PR target/46396
6561         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
6562         VIA/Centaur processors and determine their cache parameters
6563         using detect_caches_amd.
6565         2013-05-15  Uros Bizjak  <ubizjak@gmail.com>
6567         * config/i386/i386.c (ix86_option_override_internal): Update
6568         processor_alias_table for missing PTA_PRFCHW and PTA_FXSR flags.  Add
6569         PTA_POPCNT to corei7 entry. Do not enable SSE prefetch on
6570         non-SSE 3dNow! targets.  Enable TARGET_PRFCHW for TARGET_3DNOW targets.
6571         * config/i386/i386.md (prefetch): Enable for TARGET_PRFCHW instead
6572         of TARGET_3DNOW.
6573         (*prefetch_3dnow): Enable for TARGET_PRFCHW only.
6575 2013-05-17  Jakub Jelinek  <jakub@redhat.com>
6577         * gcc.c (SANITIZER_SPEC): Reject -fsanitize=address -fsanitize=thread
6578         linking.
6580         PR tree-optimization/57051
6581         * fold-const.c (const_binop) <case VEC_LSHIFT_EXPR,
6582         case VEC_RSHIFT_EXPR>: Fix BYTES_BIG_ENDIAN handling.
6584 2013-05-16  Jakub Jelinek  <jakub@redhat.com>
6586         * omp-low.c (extract_omp_for_data): For collapsed loops,
6587         if at least one of the loops is known at compile time to
6588         iterate zero times, set count to 0.
6589         (expand_omp_regimplify_p): New function.
6590         (expand_omp_for_generic): For collapsed loops, if at least
6591         one of the loops isn't known to iterate at least once,
6592         add runtime check with setting count to 0.
6593         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk):
6594         For unsigned types if it isn't known at compile time that
6595         the loop will iterate at least once, add runtime check to bypass
6596         the whole loop if initial condition isn't true.
6598 2013-05-14  Jakub Jelinek  <jakub@redhat.com>
6600         PR middle-end/57251
6601         * expr.c (expand_expr_real_2) <case WIDEN_MULT_EXPR>: Handle
6602         the case when both op0 and op1 have VOIDmode.
6604 2013-05-13  Jakub Jelinek  <jakub@redhat.com>
6606         PR tree-optimization/57230
6607         * tree-ssa-strlen.c (handle_char_store): Add missing integer_zerop
6608         check.
6610 2013-05-12  Joern Rennecke  <joern.rennecke@embecosm.com>
6612         * config/epiphany/epiphany.c (epiphany_init): Check size of
6613         NUM_MODES_FOR_MODE_SWITCHING.
6614         (epiphany_expand_prologue):
6615         Remove CONFIG_REGNUM initial value handling code.
6616         (epiphany_optimize_mode_switching): Handle EPIPHANY_MSW_ENTITY_CONFIG.
6617         (epiphany_mode_needed, epiphany_mode_entry_exit): Likewise.
6618         (emit_set_fp_mode, epiphany_mode_after): Likewise.
6619         (epiphany_mode_needed) <Handle EPIPHANY_MSW_ENTITY_AND>:
6620         Don't return 1 for FP_MODE_NONE.
6621         * config/epiphany/epiphany.h (NUM_MODES_FOR_MODE_SWITCHING):
6622         Add value for EPIPHANY_MSW_ENTITY_CONFIG.
6623         (EPIPHANY_MSW_ENTITY_CONFIG, EPIPHANY_MSW_ENTITY_NUM): Define.
6624         * config/epiphany/epiphany.md (save_config): New pattern.
6626 2013-05-10  Sebastian Huber  <sebastian.huber@embedded-brains.de>
6628         * config/arm/t-rtems-eabi: Remove mthumb/march=armv7 multilib.
6629         Add mthumb/march=armv7-a multilib.
6630         Add mthumb/march=armv7-r multilib.
6631         Add mthumb/march=armv7-a/mfpu=neon/mfloat-abi=hard multilib.
6633 2013-05-10  Ralf Corsépius  <ralf.corsepius@rtems.org>
6635         PR target/57237
6636         * config/v850/t-rtems: Add more multilibs.
6638 2013-05-10  Richard Biener  <rguenther@suse.de>
6640         PR tree-optimization/57214
6641         * tree-ssa-loop-ivcanon.c (propagate_constants_for_unrolling): Do
6642         not propagate from SSA names that occur in abnormal PHI nodes.
6644 2013-05-10  Alan Modra  <amodra@gmail.com>
6646         PR target/55033
6647         * varasm.c (default_elf_select_section): Move !DECL_P check..
6648         (get_named_section): ..to here before calling get_section_name.
6649         Adjust assertion.
6650         (default_section_type_flags): Add DECL_P check.
6651         * config/i386/winnt.c (i386_pe_section_type_flags): Likewise.
6652         * config/rs6000/rs6000.c (rs6000_xcoff_section_type_flags): Likewise.
6654 2013-05-09  Joern Rennecke  <joern.rennecke@embecosm.com>
6656         * config/epiphany/epiphany.c (epiphany_expand_prologue):
6657         When using gen_stack_adjust_str with a register offset, add a
6658         REG_FRAME_RELATED_EXPR note.
6660 2013-05-09  Martin Jambor  <mjambor@suse.cz>
6662         PR middle-end/56988
6663         * ipa-prop.h (ipa_agg_replacement_value): New flag by_ref.
6664         * ipa-cp.c (find_aggregate_values_for_callers_subset): Fill in the
6665         by_ref flag of ipa_agg_replacement_value structures.
6666         (known_aggs_to_agg_replacement_list): Likewise.
6667         * ipa-prop.c (write_agg_replacement_chain): Stream by_ref flag.
6668         (read_agg_replacement_chain): Likewise.
6669         (ipcp_transform_function): Also check that by_ref flags match.
6671 2013-05-08  Diego Novillo  <dnovillo@google.com>
6673         PR bootstrap/54659
6675         Revert:
6677         2012-08-17  Diego Novillo  <dnovillo@google.com>
6679                 PR bootstrap/54281
6680                 * configure.ac: Add libintl.h to AC_CHECK_HEADERS list.
6681                 * config.in: Regenerate.
6682                 * configure: Regenerate.
6683                 * intl.h: Always include libintl.h if HAVE_LIBINTL_H is
6684                 set.
6686 2013-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
6688         PR tree-optimization/57200
6689         * tree-ssa-loop-niter.c (do_warn_aggressive_loop_optimizations):
6690         Only call inform if the preceding warning_at returns true.
6692 2013-05-07  Jakub Jelinek  <jakub@redhat.com>
6694         PR tree-optimization/57149
6695         * tree-ssa-uninit.c (uninit_undefined_value_p): New inline.
6696         (can_skip_redundant_opnd, compute_uninit_opnds_pos,
6697         collect_phi_def_edges, execute_late_warn_uninitialized): Use
6698         uninit_undefined_value_p instead of ssa_undefined_value_p.
6700         PR debug/57184
6701         * expr.c (expand_expr_addr_expr_1): Handle COMPOUND_LITERAL_EXPR
6702         for modifier == EXPAND_INITIALIZER.
6704 2013-05-07  Richard Biener  <rguenther@suse.de>
6706         Backport from mainline
6707         2013-05-06  Richard Biener  <rguenther@suse.de>
6709         PR tree-optimization/57185
6710         * tree-parloops.c (add_field_for_reduction): Handle anonymous
6711         SSA names properly.
6713         2013-04-19  Richard Biener  <rguenther@suse.de>
6715         PR tree-optimization/57000
6716         * tree-ssa-reassoc.c (pass_reassoc): Add TODO_update_ssa_only_virtuals.
6718 2013-05-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
6720         Backport from trunk
6721         2013-05-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
6723         PR target/57150
6724         * config/rs6000/rs6000.h (HARD_REGNO_CALLER_SAVE_MODE): Use DFmode
6725         to save TFmode registers and DImode to save TImode registers for
6726         caller save operations.
6727         (HARD_REGNO_CALL_PART_CLOBBERED): TFmode and TDmode do not need to
6728         mark being partially clobbered since they only use the first
6729         double word.
6731         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): TFmode
6732         and TDmode only use the upper 64-bits of each VSX register.
6734 2013-05-06  Oleg Endo  <olegendo@gcc.gnu.org>
6736         PR target/57108
6737         * config/sh/sh.md (tstsi_t_zero_extract_eq): Use QIHISIDI mode iterator.
6739 2013-05-06  Uros Bizjak  <ubizjak@gmail.com>
6741         Backport from mainline
6742         2013-05-06  Uros Bizjak  <ubizjak@gmail.com>
6744         PR target/57106
6745         * config/i386/i386.c (add_parameter_dependencies): Add dependence
6746         between "first_arg" and "insn", not "last" and "insn".
6748 2013-05-03  Jakub Jelinek  <jakub@redhat.com>
6750         PR rtl-optimization/57130
6751         * combine.c (make_compound_operation) <case SUBREG>: Pass
6752         SET instead of COMPARE as in_code to the recursive call
6753         if needed.
6755         Backported from mainline
6756         2013-04-26  Jakub Jelinek  <jakub@redhat.com>
6758         PR tree-optimization/57051
6759         * fold-const.c (const_binop): Handle VEC_LSHIFT_EXPR
6760         and VEC_RSHIFT_EXPR if shift count is a multiple of element
6761         bitsize.
6763         2013-04-12  Marc Glisse  <marc.glisse@inria.fr>
6765         * fold-const.c (fold_binary_loc): Call const_binop also for mixed
6766         vector-scalar operations.
6768 2013-05-03  Marek Polacek  <polacek@redhat.com>
6770         Backport from mainline
6771         2013-04-25  Marek Polacek  <polacek@redhat.com>
6773         PR tree-optimization/57066
6774         * builtins.c (fold_builtin_logb): Return +Inf for -Inf.
6776 2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
6778         Backport from mainline
6779         2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
6781         * lra-constraints.c (process_alt_operands): Add checking alt
6782         number to choose the best alternative.
6784         2013-05-01  Vladimir Makarov  <vmakarov@redhat.com>
6786         PR target/57091
6787         * lra-constraints.c (best_small_class_operands_num): Remove.
6788         (process_alt_operands): Remove small_class_operands_num.  Take
6789         small classes operands into losers and only if the operand is not
6790         matched.  Modify debugging output.
6791         (curr_insn_transform): Remove best_small_class_operands_num.
6792         Print insn name.
6794 2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
6796         Backport from mainline
6797         2013-04-29  Vladimir Makarov  <vmakarov@redhat.com>
6799         PR target/57097
6800         * lra-constraints.c (process_alt_operands): Discourage a bit more
6801         using memory for pseudos.  Print cost dump for alternatives.
6802         Modify cost values for conflicts with early clobbers.
6803         (curr_insn_transform): Spill pseudos reassigned to NO_REGS.
6805 2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
6807         Backport from mainline
6808         2013-04-24  Vladimir Makarov  <vmakarov@redhat.com>
6810         PR rtl-optimizations/57046
6811         * lra-constraints (split_reg): Set up lra_risky_transformations_p
6812         for multi-reg splits.
6814 2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
6816         Backport from mainline
6817         2013-04-22  Vladimir Makarov  <vmakarov@redhat.com>
6819         PR target/57018
6820         * lra-eliminations.c (mark_not_eliminable): Prevent elimination of
6821         a set sp if no stack realignment.
6823 2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
6825         Backport from mainline
6826         2013-04-18  Vladimir Makarov  <vmakarov@redhat.com>
6828         PR rtl-optimization/56999
6829         * lra-coalesce.c (coalescable_pseudo_p): Remove 2nd parameter and
6830         related code.
6831         (lra_coalesce): Remove split_origin_bitmap and related code.
6832         * lra.c (lra): Coalesce after undoing inheritance. Recreate live
6833         ranges if necessary.
6835 2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
6837         Backport from mainline
6838         2013-04-19  Vladimir Makarov  <vmakarov@redhat.com>
6840         PR rtl-optimization/56847
6841         * lra-constraints.c (process_alt_operands): Discourage alternative
6842         with non-matche doffsettable memory constraint fro memory with
6843         known offset.
6845 2013-05-02  Ian Bolton  <ian.bolton@arm.com>
6847         Backport from mainline
6848         2013-03-28  Ian Bolton  <ian.bolton@arm.com>
6850         * config/aarch64/aarch64.md (aarch64_can_eliminate): Keep frame
6851         record only when desired or required.
6853 2013-04-30  Jakub Jelinek  <jakub@redhat.com>
6855         PR tree-optimization/57104
6856         * tsan.c (instrument_expr): Don't instrument accesses to
6857         DECL_HARD_REGISTER VAR_DECLs.
6859 2013-04-30  Uros Bizjak  <ubizjak@gmail.com>
6861         Backport from mainline
6862         2013-04-29  Uros Bizjak  <ubizjak@gmail.com>
6864         PR target/44578
6865         * config/i386/i386.md (*zero_extendsidi2_rex64): Add "!" to m->?*y
6866         alternative.
6867         (*zero_extendsidi2): Ditto.
6869         Backport from mainline
6870         2013-04-29  Uros Bizjak  <ubizjak@gmail.com>
6872         PR target/57098
6873         * config/i386/i386.c (ix86_expand_vec_perm): Validize constant memory.
6875 2013-04-29  Richard Biener  <rguenther@suse.de>
6877         PR middle-end/57103
6878         * tree-cfg.c (move_stmt_op): Fix condition under which to update
6879         TREE_BLOCK.
6880         (move_stmt_r): Remove redundant checking.
6882 2013-04-29  Christian Bruel  <christian.bruel@st.com>
6884         PR target/57108
6885         * sh.md (tstsi_t_zero_extract_eq): Set mode for operand 0.
6887 2013-04-29  Jakub Jelinek  <jakub@redhat.com>
6889         PR tree-optimization/57083
6890         * tree-vrp.c (extract_range_from_binary_expr_1): For LSHIFT_EXPR with
6891         non-singleton shift count range, zero extend low_bound for uns case.
6893 2013-04-28  Eric Botcazou  <ebotcazou@gcc.gnu.org>
6895         * stor-layout.c (finalize_size_functions): Allocate a structure and
6896         reset cfun before dumping the functions.
6898 2013-04-27  Jakub Jelinek  <jakub@redhat.com>
6900         PR target/56866
6901         * config/i386/i386.c (ix86_expand_mul_widen_evenodd): Don't
6902         use xop_pmacsdqh if uns_p.
6903         * config/i386/sse.md (xop_rotr<mode>3): Fix up computation of
6904         the immediate rotate count.
6906 2013-04-25  Jakub Jelinek  <jakub@redhat.com>
6908         PR rtl-optimization/57003
6909         * regcprop.c (copyprop_hardreg_forward_1): If ksvd.ignore_set_reg,
6910         call note_stores with kill_clobbered_value callback again after
6911         killing regs_invalidated_by_call.
6913 2013-04-25  Ian Bolton  <ian.bolton@arm.com>
6915         Backported from mainline.
6916         2013-03-22  Ian Bolton  <ian.bolton@arm.com>
6918         * config/aarch64/aarch64.c (aarch64_print_operand): New
6919         format specifier for printing a constant in hex.
6920         * config/aarch64/aarch64.md (insv_imm<mode>): Use the X
6921         format specifier for printing second operand.
6923 2013-04-24  James Greenhalgh  <james.greenhalgh@arm.com>
6925         Backported from mainline.
6926         2013-04-24  James Greenhalgh  <james.greenhalgh@arm.com>
6928         * config/aarch64/arm_neon.h (vld1<q>_lane*): Fix constraints.
6929         (vld1<q>_dup_<sufp><8, 16, 32, 64>): Likewise.
6930         (vld1<q>_<sufp><8, 16, 32, 64>): Likewise.
6932 2013-04-24  Greta Yorsh  <Greta.Yorsh@arm.com>
6934         Backported from mainline.
6935         PR target/56797
6936         * config/arm/arm.c (load_multiple_sequence): Require SP
6937         as base register for loads if SP is in the register list.
6939 2013-04-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
6940             Steven Bosscher <steven@gcc.gnu.org>
6942         Backported from mainline.
6943         PR rtl-optimization/56605
6944         * loop-iv.c (implies_p): Handle equal RTXs and subregs.
6946 2013-04-22  Marek Polacek  <polacek@redhat.com>
6948         Backported from mainline.
6949         2013-04-22  Marek Polacek  <polacek@redhat.com>
6951         PR sanitizer/56990
6952         * tsan.c (instrument_expr): Don't instrument expression
6953         in case its size is zero.
6955 2013-04-22  Yufeng Zhang  <yufeng.zhang@arm.com>
6957         Backported from mainline.
6958         2013-04-10  Yufeng Zhang  <yufeng.zhang@arm.com>
6959         * config/aarch64/aarch64.c (aarch64_print_extension): New function.
6960         (aarch64_start_file): Use the new function.
6962 2013-04-18  Jakub Jelinek  <jakub@redhat.com>
6964         PR tree-optimization/56984
6965         * tree-vrp.c (register_edge_assert_for_2): For (x >> M) < N
6966         and (x >> M) >= N don't register any assertion if N << M is the
6967         minimum value.
6969 2013-04-17  David Edelsohn  <dje.gcc@gmail.com>
6971         PR target/56948
6972         * config/rs6000/vsx.md (vsx_mov<mode>): Add j->r alternative.
6974 2013-04-15  Jakub Jelinek  <jakub@redhat.com>
6976         PR tree-optimization/56962
6977         * gimple-ssa-strength-reduction.c (record_increment): Only set
6978         initializer if gimple_assign_rhs_code is {,POINTER_}PLUS_EXPR and
6979         either rhs1 or rhs2 is equal to c->base_expr.
6981 2013-04-15  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6983         * emit-rtl.c (reset_all_used_flags): New function.
6984         (verify_rtl_sharing): Call reset_all_used_flags before and after
6985         performing the checks.
6987 2013-04-15  Eric Botcazou  <ebotcazou@adacore.com>
6989         PR target/56890
6990         * config/sparc/sparc.c (enum sparc_mode_class): Add H_MODE value.
6991         (S_MODES): Set H_MODE bit.
6992         (SF_MODES): Set only S_MODE and SF_MODE bits.
6993         (DF_MODES): Set SF_MODES and only D_MODE and DF_MODE bits.
6994         (sparc_init_modes) <MODE_INT>: Set H_MODE bit for sub-word modes.
6995         <MODE_VECTOR_INT>: Do not set SF_MODE for sub-word modes.
6996         <MODE_FLOAT>: Likewise.
6998 2013-04-12  Vladimir Makarov  <vmakarov@redhat.com>
7000         PR target/56903
7001         * config/i386/i386.c (ix86_hard_regno_mode_ok): Add
7002         lra_in_progress for return.
7004 2013-04-12  Jakub Jelinek  <jakub@redhat.com>
7006         PR tree-optimization/56918
7007         PR tree-optimization/56920
7008         * fold-const.c (int_const_binop_1): Use op1.mul_with_sign (op2, ...)
7009         instead of op1 - op2.  Pass 2 * TYPE_PRECISION (type) as second
7010         argument to rshift method.
7012 2013-04-12  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
7014         * ifcvt.c (end_ifcvt_sequence): Mark a and b for unsharing as
7015         well.
7017 2013-04-11  Marek Polacek  <polacek@redhat.com>
7019         PR tree-optimization/48184
7020         * params.def (PARAM_ALIGN_THRESHOLD): Increase the minimum
7021         value to 1.
7023 2013-04-11  James Greenhalgh  <james.greenhalgh@arm.com>
7025         Backported from mainline.
7026         2013-04-11  James Greenhalgh  <james.greenhalgh@arm.com>
7028         * config/aarch64/aarch64-simd.md (aarch64_vcond_internal): Fix
7029         floating-point vector comparisons against 0.
7031 2013-04-11  Jakub Jelinek  <jakub@redhat.com>
7033         PR tree-optimization/56899
7034         * fold-const.c (extract_muldiv_1): Apply distributive law
7035         only if TYPE_OVERFLOW_WRAPS (ctype).
7037 2013-04-10  David S. Miller  <davem@davemloft.net>
7039         * config/sparc/sparc.h (ASM_CPU_SPEC): Pass -Av8 if -mcpu=supersparc
7040         or -mcpu=hypersparc.
7042 2013-04-10  Jakub Jelinek  <jakub@redhat.com>
7044         Backported from mainline
7045         2013-04-09  Jakub Jelinek  <jakub@redhat.com>
7047         PR middle-end/56883
7048         * omp-low.c (expand_omp_for_generic, expand_omp_for_static_nochunk,
7049         expand_omp_for_static_chunk): Use simple_p = true in
7050         force_gimple_operand_gsi calls when assigning to addressable decls.
7052 2013-04-09  Marek Polacek  <polacek@redhat.com>
7054         PR tree-optimization/48762
7055         * params.def (PARAM_MAX_CSE_INSNS): Increase the minimum
7056         value to 1.
7058 2013-04-08  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
7060         * config/s390/s390.c (s390_expand_insv): Only accept insertions
7061         within mode size.
7063 2013-04-08  Marek Polacek  <polacek@redhat.com>
7065         PR rtl-optimization/48182
7066         * params.def (PARAM_MIN_CROSSJUMP_INSNS): Increase the minimum
7067         value to 1.
7069 2013-04-06  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7071         PR target/55487
7072         * config/pa/pa.c (legitimize_pic_address): Before incrementing label
7073         nuses, make sure we have a label.
7075 2013-04-04  Ian Lance Taylor  <iant@google.com>
7077         Backport from mainline:
7078         * doc/standards.texi (Standards): The Go frontend supports the Go
7079         1 language standard.
7081 2013-04-04  Marek Polacek  <polacek@redhat.com>
7083         Backport from mainline:
7084         2013-04-04  Marek Polacek  <polacek@redhat.com>
7086         PR tree-optimization/48186
7087         * predict.c (maybe_hot_frequency_p): Return false if
7088         HOT_BB_FREQUENCY_FRACTION is 0.
7089         (cgraph_maybe_hot_edge_p): Likewise.
7091 2013-04-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7093         Backport from mainline:
7094         2013-03-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7096         PR target/56720
7097         * config/arm/iterators.md (v_cmp_result): New mode attribute.
7098         * config/arm/neon.md (vcond<mode><mode>): Handle unordered cases.
7100 2013-04-04  Richard Biener  <rguenther@suse.de>
7102         PR tree-optimization/56837
7103         * tree-loop-distribution.c (classify_partition): For non-zero
7104         values require that the value has the same precision as its
7105         mode to be useful as memset value.
7107 2013-04-03  Roland McGrath  <mcgrathr@google.com>
7109         Backport from mainline:
7110         2013-03-26  Roland McGrath  <mcgrathr@google.com>
7112         * config/arm/arm.c (arm_print_operand: case 'w'): Use fputs rather
7113         than fprintf with a non-constant, non-format string.
7115 2013-04-03  Marek Polacek  <polacek@redhat.com>
7117         Backport from mainline:
7118         2013-04-03  Marek Polacek  <polacek@redhat.com>
7120         PR sanitizer/55702
7121         * tsan.c (instrument_func_exit): Allow BUILT_IN_RETURN
7122         functions.
7124 2013-04-03  Richard Biener  <rguenther@suse.de>
7126         PR tree-optimization/56817
7127         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
7128         Split out ...
7129         (tree_unroll_loops_completely_1): ... new function to manually
7130         walk the loop tree, properly defering outer loops of unrolled
7131         loops to later iterations.
7133 2013-04-02  Jakub Jelinek  <jakub@redhat.com>
7135         PR rtl-optimization/56745
7136         * ifcvt.c (cond_exec_find_if_block): Don't try to optimize
7137         if then_bb has no successors and else_bb is EXIT_BLOCK_PTR.
7139 2013-04-02  Wei Mi  <wmi@google.com>
7141         * config/i386/i386.c (ix86_rtx_costs): Set proper rtx cost for
7142         ashl<mode>3_mask, *<shift_insn><mode>3_mask and
7143         *<rotate_insn><mode>3_mask in i386.md.
7145 2013-04-01  Wei Mi  <wmi@google.com>
7147         * config/i386/i386.md (*ashl<mode>3_mask): Rewrite as define_insn.
7148         Truncate operand 2 using %b asm operand modifier.
7149         (*<shift_insn><mode>3_mask): Ditto.
7150         (*<rotate_insn><mode>3_mask): Ditto.
7152 2013-04-01  Uros Bizjak  <ubizjak@gmail.com>
7154         * config/i386/i386.md (*movsf_internal): Change type of
7155         alternatives 3,4 to imov.
7157 2013-03-29  Paolo Carlini  <paolo.carlini@oracle.com>
7159         PR lto/56777
7160         * doc/invoke.texi ([-fwhole-program]): Fix typo.
7162 2013-03-29  Kirill Yukhin  <kirill.yukhin@intel.com>
7164         * config/i386/avx2intrin.h (_mm256_broadcastsi128_si256):
7165         Fix declaration name.
7167 2013-03-28  Gerald Pfeifer  <gerald@pfeifer.com>
7169         * doc/invoke.texi (AVR Options): Tweak link for AVR-LibC user manual.
7170         * doc/extend.texi (Named Address Spaces): Ditto.
7171         (Variable Attributes): Ditto.
7173 2013-03-28  Eric Botcazou  <ebotcazou@adacore.com>
7175         * toplev.c (process_options): Do not disable -fomit-frame-pointer on a
7176         general basis if unwind info is requested and ACCUMULATE_OUTGOING_ARGS
7177         is not enabled.
7179 2013-03-27  Walter Lee  <walt@tilera.com>
7181         Backport from mainline:
7182         2013-03-27  Walter Lee  <walt@tilera.com>
7184         * config/tilegx/tilegx.c (tilegx_expand_prologue): Avoid
7185         double-decrement of next_scratch_regno.
7187 2013-03-27  Walter Lee  <walt@tilera.com>
7189         Backport from mainline:
7190         2013-03-27  Walter Lee  <walt@tilera.com>
7192         * config/tilegx/tilegx.md (insn_v1mulu): Fix predicates on
7193         input operands.
7194         (insn_v1mulus): Ditto.
7195         (insn_v2muls): Ditto.
7197 2013-03-27  Walter Lee  <walt@tilera.com>
7199         Backport from mainline:
7200         2013-03-27  Walter Lee  <walt@tilera.com>
7202         * config/tilegx/tilegx.h (ASM_OUTPUT_ADDR_VEC_ELT): Delete
7203         extra tab.
7204         (ASM_OUTPUT_ADDR_DIFF_ELT): Ditto.
7206 2013-03-27  Walter Lee  <walt@tilera.com>
7208         Backport from mainline:
7209         2013-03-27  Walter Lee  <walt@tilera.com>
7211         * config/tilegx/tilegx.md (*sibcall_insn): Fix type atribute for jr.
7212         (*sibcall_value): Ditto.
7214 2013-03-27  Walter Lee  <walt@tilera.com>
7216         Backport from mainline:
7217         2013-03-27  Walter Lee  <walt@tilera.com>
7219         * config/tilegx/tilegx.md (insn_mnz_<mode>): Replaced by ...
7220         (insn_mnz_v8qi): ... this ...
7221         (insn_mnz_v4hi): ... and this.  Replace (const_int 0) with the
7222         vector equivalent.
7223         (insn_v<n>mnz): Replaced by ...
7224         (insn_v1mnz): ... this ...
7225         (insn_v2mnz): ... and this.  Replace (const_int 0) with the vector
7226         equivalent.
7227         (insn_mz_<mode>): Replaced by ...
7228         (insn_mz_v8qi): ... this ...
7229         (insn_mz_v4hi): ... and this.  Replace (const_int 0) with the
7230         vector equivalent.
7231         (insn_v<n>mz): Replaced by ...
7232         (insn_v1mz): ... this ...
7233         (insn_v2mz): ... and this.  Replace (const_int 0) with the vector
7234         equivalent.
7236 2013-03-26  Eric Botcazou  <ebotcazou@adacore.com>
7238         * doc/invoke.texi (SPARC options): Remove -mlittle-endian.
7240 2013-03-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
7242         * config/rtems.opt: Add -pthread option.
7244 2013-03-26  Sofiane Naci  <sofiane.naci@arm.com>
7246         * config/aarch64/aarch64.c (aarch64_classify_address): Support
7247         PC-relative load in SI modes and above only.
7249 2013-03-26  Walter Lee  <walt@tilera.com>
7251         Backport from mainline:
7252         2013-03-26  Walter Lee  <walt@tilera.com>
7254         * config/tilegx/tilegx.h (PROFILE_BEFORE_PROLOGUE): Define.
7255         * config/tilegx/tilepro.h (PROFILE_BEFORE_PROLOGUE): Define.
7257 2013-03-26  Walter Lee  <walt@tilera.com>
7259         Backport from mainline:
7260         2013-03-25  Walter Lee  <walt@tilera.com>
7262         * config/tilegx/tilegx-builtins.h (enum tilegx_builtin): Add
7263         TILEGX_INSN_SHUFFLEBYTES1.
7264         * config/tilegx/tilegx.c (tilegx_builtin_info): Add entry for
7265         shufflebytes1.
7266         (tilegx_builtins): Ditto.
7267         * config/tilegx/tilegx.md (insn_shufflebytes1): New pattern.
7269 2013-03-26  Walter Lee  <walt@tilera.com>
7271         Backport from mainline:
7272         2013-03-25  Walter Lee  <walt@tilera.com>
7274         * config/tilegx/tilegx.c (expand_set_cint64_one_inst): Inline
7275         tests for constraint J, K, N, P.
7277 2013-03-26  Walter Lee  <walt@tilera.com>
7279         Backport from mainline:
7280         2013-03-25  Walter Lee  <walt@tilera.com>
7282         * config/tilegx/tilegx.c (tilegx_asm_preferred_eh_data_format):
7283         Use indirect/pcrel encoding.
7284         * config/tilepro/tilepro.c (tilepro_asm_preferred_eh_data_format):
7285         Ditto.
7287 2013-03-25  Richard Biener  <rguenther@suse.de>
7289         PR middle-end/56694
7290         * tree-eh.c (lower_eh_must_not_throw): Strip BLOCKs from the
7291         must-not-throw stmt location.
7293 2012-03-22  Jakub Jelinek  <jakub@redhat.com>
7295         * BASE-VER: Set to 4.8.1.
7296         * DEV-PHASE: Set to prerelease.
7298 2013-03-22  Release Manager
7300         * GCC 4.8.0 released.
7302 2013-03-21  Walter Lee  <walt@tilera.com>
7304         * config/tilegx/sync.md (atomic_test_and_set): New pattern.
7306 2013-03-21  Mark Wielaard  <mjw@redhat.com>
7308         * dwarf2out.c (size_of_aranges): Skip DECL_IGNORED_P functions.
7310 2013-03-20  Richard Biener  <rguenther@suse.de>
7312         PR tree-optimization/56661
7313         * tree-ssa-sccvn.c (visit_use): Only value-number calls if
7314         the result does not have to be distinct.
7316 2013-03-20  Jakub Jelinek  <jakub@redhat.com>
7318         PR tree-optimization/56635
7319         * tree-ssa-phiopt.c (cond_if_else_store_replacement_1): Give up
7320         if lhs of then_assign and else_assign don't have compatible types.
7322 2013-03-17  Jakub Jelinek  <jakub@redhat.com>
7324         PR target/56640
7325         * config/arm/arm.h (REG_CLASS_NAMES): Add "SFP_REG" and "AFP_REG"
7326         class names.  Remove trailing comma after "ALL_REGS".
7328 2013-03-16  Jakub Jelinek  <jakub@redhat.com>
7330         * DEV-PHASE: Set to prerelease.
7332 2013-03-14  Andi Kleen  <ak@linux.intel.com>
7334         PR target/56619
7335         * doc/extend.texi: Document __ATOMIC_HLE_ACQUIRE,
7336         __ATOMIC_HLE_RELEASE. Document __builtin_ia32 TSX intrincs.
7337         Document _x* TSX intrinsics.
7339 2013-03-14  Edgar E. Iglesias <edgar.iglesias@xilinx.com>
7340             David Holsgrove <david.holsgrove@xilinx.com>
7342         * configure.ac: Add MicroBlaze TLS support detection.
7343         * configure: Regenerate.
7344         * config/microblaze/microblaze-protos.h
7345         (microblaze_cannot_force_const_mem, microblaze_tls_referenced_p,
7346         symbol_mentioned_p, label_mentioned_p): Add prototypes.
7347         * config/microblaze/microblaze.c (microblaze_address_type): Add
7348         ADDRESS_TLS and tls_reloc address types.
7349         (microblaze_address_info): Add tls_reloc.
7350         (TARGET_HAVE_TLS): Define.
7351         (get_tls_get_addr, microblaze_tls_symbol_p, microblaze_tls_operand_p_1,
7352         microblaze_tls_referenced_p, microblaze_cannot_force_const_mem,
7353         symbol_mentioned_p, label_mentioned_p, tls_mentioned_p,
7354         load_tls_operand, microblaze_call_tls_get_addr,
7355         microblaze_legitimize_tls_address): New functions.
7356         (microblaze_classify_unspec): Handle UNSPEC_TLS.
7357         (get_base_reg): Use microblaze_tls_symbol_p.
7358         (microblaze_classify_address): Handle TLS.
7359         (microblaze_legitimate_pic_operand): Use symbol_mentioned_p,
7360         label_mentioned_p and microblaze_tls_referenced_p.
7361         (microblaze_legitimize_address): Handle TLS.
7362         (microblaze_address_insns): Handle ADDRESS_TLS.
7363         (pic_address_needs_scratch): Handle TLS.
7364         (print_operand_address): Handle TLS.
7365         (microblaze_expand_prologue): Check TLS_NEEDS_GOT.
7366         (microblaze_expand_move): Handle TLS.
7367         (microblaze_legitimate_constant_p): Check
7368         microblaze_cannot_force_const_mem and microblaze_tls_symbol_p.
7369         (TARGET_CANNOT_FORCE_CONST_MEM): Define.
7370         * config/microblaze/microblaze.h (TLS_NEEDS_GOT): Define
7371         (PIC_OFFSET_TABLE_REGNUM): Set.
7372         * config/microblaze/linux.h (TLS_NEEDS_GOT): Define.
7373         * config/microblaze/microblaze.md (UNSPEC_TLS): Define.
7374         (addsi3, movsi_internal2, movdf_internal): Update constraints
7375         * config/microblaze/predicates.md (arith_plus_operand): Define
7376         (move_operand): Redefine as move_src_operand, check
7377         microblaze_tls_referenced_p.
7379 2013-03-14  Ian Bolton  <ian.bolton@arm.com>
7381         * config/aarch64/aarch64.md: (*and<mode>3nr_compare0): Use CC_NZ.
7382         (*and_<SHIFT:optab><mode>3nr_compare0): Likewise.
7384 2013-03-14  Ian Bolton  <ian.bolton@arm.com>
7386         * config/aarch64/aarch64.c (aarch64_select_cc_mode): Return correct
7387         CC mode for AND.
7389 2013-03-14  Jakub Jelinek  <jakub@redhat.com>
7391         PR tree-optimization/53265
7392         * common.opt (Waggressive-loop-optimizations): New option.
7393         * tree-ssa-loop-niter.c: Include tree-pass.h.
7394         (do_warn_aggressive_loop_optimizations): New function.
7395         (record_estimate): Call it.  Don't add !is_exit bounds to loop->bounds
7396         if number_of_latch_executions returned constant.
7397         (estimate_numbers_of_iterations_loop): Call number_of_latch_executions
7398         early.  If number_of_latch_executions returned constant, set
7399         nb_iterations_upper_bound back to it.
7400         * cfgloop.h (struct loop): Add warned_aggressive_loop_optimizations
7401         field.
7402         * Makefile.in (tree-ssa-loop-niter.o): Depend on $(TREE_PASS_H).
7403         * doc/invoke.texi (-Wno-aggressive-loop-optimizations): Document.
7405         * config/aarch64/t-aarch64-linux (MULTARCH_DIRNAME): Remove.
7406         (MULTILIB_OSDIRNAMES): Set.
7407         * genmultilib: If defaultosdirname doesn't start with :: , set
7408         defaultosdirname2 instead, clear it and emit two . multilib_raw
7409         entries instead of just one.
7411 2013-03-14  Kaz Kojima  <kkojima@gcc.gnu.org>
7413         * config/sh/linux.h (TARGET_DEFAULT): Remove MASK_USERMODE.
7414         (SUBTARGET_OVERRIDE_OPTIONS): Set TARGET_USERMODE as default.
7415         * config/sh/netbsd-elf.h (TARGET_DEFAULT): Remove MASK_USERMODE.
7416         (SUBTARGET_OVERRIDE_OPTIONS): New.
7418 2013-03-13  Oleg Endo  <olegendo@gcc.gnu.org>
7420         PR target/49880
7421         * config/sh/sh.opt (FPU_SINGLE_ONLY): New mask.
7422         (musermode): Convert to Var(TARGET_USERMODE).
7423         * config/sh/sh.h (SELECT_SH2A_SINGLE_ONLY, SELECT_SH4_SINGLE_ONLY,
7424         MASK_ARCH): Add MASK_FPU_SINGLE_ONLY.
7425         * config/sh/sh.c (sh_option_override): Use
7426         TARGET_FPU_DOUBLE || TARGET_FPU_SINGLE_ONLY for call-fp case.
7427         * config/sh/sh.md (udivsi3_i1, divsi3_i1): Remove ! TARGET_SH4
7428         condition.
7429         (udivsi3_i4, divsi3_i4): Use TARGET_FPU_DOUBLE condition instead of
7430         TARGET_SH4.
7431         (udivsi3_i4_single, divsi3_i4_single): Use
7432         TARGET_FPU_SINGLE_ONLY || TARGET_FPU_DOUBLE instead of TARGET_HARD_SH4.
7434 2013-03-13  Dave Korn  <dave.korn.cygwin@....>
7436         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC): Make shared libgcc the
7437         default setting.
7439 2013-03-13  Richard Biener  <rguenther@suse.de>
7441         PR tree-optimization/56608
7442         * tree-vect-slp.c (vect_schedule_slp): Do not remove scalar
7443         calls when vectorizing basic-blocks.
7445 2013-03-13  Jakub Jelinek  <jakub@redhat.com>
7447         PR plugins/45078
7448         * config.gcc: On arm, mips, sh and sparc add vxworks-dummy.h to
7449         tm_file.
7451 2013-03-12  Jakub Jelinek  <jakub@redhat.com>
7453         * doc/invoke.texi (-Waddr-space-convert): Move into the table earlier.
7455 2013-03-11  Jan Hubicka  <jh@suse.cz>
7457         PR lto/56557
7458         * lto-streamer-out.c (output_symbol_p): Skip references from
7459         constructors of external variables.
7461 2013-03-11  Jan Hubicka  <jh@suse.cz>
7463         PR middle-end/56571
7464         * valtrack.c (cleanup_auto_inc_dec): Unshare clobbers originating
7465         from pseudos.
7466         * emit-rtl.c (verify_rtx_sharing): Likewise.
7467         (copy_insn_1): Likewise.
7468         * rtl.c (copy_rtx): Likewise.
7470 2013-03-11  Georg-Johann Lay  <avr@gjlay.de>
7472         PR target/56591
7473         * config/avr/avr.c (avr_print_operand): Add space after '%c' in
7474         output_operand_lossage message.
7476 2013-03-11  Richard Earnshaw  <rearnsha@arm.com>
7478         PR target/56470
7479         * arm.c (shift_op): Validate RTL pattern on the fly.
7480         (arm_print_operand, case 'S'): Don't use shift_operator to validate
7481         the RTL.
7483 2013-03-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7485         PR target/56347
7486         * config/pa/pa.md (call_value): Check for calls to powf and direct to
7487         new call patterns that clobber %fr12.
7488         (call_val_powf, call_val_powf_pic, call_val_powf_64bit): New insn,
7489         split and postreload patterns.
7490         * config/pa/pa.c (pa_conditional_register_usage): Revert marking
7491         registers %fr12 and %fr12R as call used.
7493 2013-03-09  Steven Bosscher  <steven@gcc.gnu.org>
7495         * dse.c (delete_dead_store_insn): Respect TDF_DETAILS.
7496         (canon_address, record_store, replace_read, check_mem_read_rtx,
7497         scan_insn, dse_step1, dse_step2_init, dse_step2_spill,
7498         dse_step4, dse_step5_nospill, dse_step5_spill, dse_step6,
7499         rest_of_handle_dse): Likewise.
7501 2013-03-09  Richard Sandiford  <rdsandiford@googlemail.com>
7503         PR middle-end/56524
7504         * tree.h (tree_optimization_option): Rename target_optabs to optabs.
7505         Add base_optabs.
7506         (TREE_OPTIMIZATION_OPTABS): Update after previous field change.
7507         (TREE_OPTIMIZATION_BASE_OPTABS): New macro.
7508         (save_optabs_if_changed): Replace with...
7509         (init_tree_optimization_optabs): ...this.
7510         * optabs.c (save_optabs_if_changed): Rename to...
7511         (init_tree_optimization_optabs): ...this.  Take the optimization node
7512         as argument.  Do nothing if the base optabs are already correct.
7513         Reuse the existing TREE_OPTIMIZATION_OPTABS memory if we need
7514         to recompute optabs.
7515         * function.h (function): Remove optabs field.
7516         * function.c (invoke_set_current_function_hook): Call
7517         init_tree_optimization_optabs.  Use the result to initialize
7518         this_fn_optabs.
7520 2013-02-27  Aldy Hernandez  <aldyh@redhat.com>
7522         * trans-mem.c (expand_transaction): Do not set PR_INSTRUMENTEDCODE
7523         if GTMA_HAS_NO_INSTRUMENTATION.
7524         (generate_tm_state): Keep GTMA_HAS_NO_INSTRUMENTATION bit.
7525         (ipa_tm_transform_transaction): Set GTMA_HAS_NO_INSTRUMENTATION.
7526         * gimple.h (GTMA_HAS_NO_INSTRUMENTATION): Define.
7527         * gimple-pretty-print.c (dump_gimple_transaction): Handle
7528         GTMA_HAS_NO_INSTRUMENTATION.
7530 2013-03-08  Jakub Jelinek  <jakub@redhat.com>
7532         * config/gnu-user.h (LIBTSAN_EARLY_SPEC): Don't link against
7533         libasan_preinit.o.
7535 2013-03-08  Marek Polacek  <polacek@redhat.com>
7536             Jakub Jelinek  <jakub@redhat.com>
7538         PR tree-optimization/56478
7539         * predict.c (is_comparison_with_loop_invariant_p): Change the
7540         type of loop_step to tree.
7541         (predict_loops): Adjust.
7542         (predict_iv_comparison): Perform the computations on double_ints.
7544 2013-03-08  Richard Biener  <rguenther@suse.de>
7546         PR tree-optimization/56570
7547         * tree-cfg.c (verify_expr_location_1): Verify locations for
7548         DECL_DEBUG_EXPR.
7549         * tree-sra.c (create_access_replacement): Strip locations
7550         from DECL_DEBUG_EXPRs.
7552 2013-03-08  Richard Biener  <rguenther@suse.de>
7554         * tree-inline.c (expand_call_inline): Do not associate
7555         a BLOCK with the location in BLOCK_SOURCE_LOCATION.
7556         * tree-cfg.c (verify_location): Verify BLOCK_SOURCE_LOCATION.
7558 2013-03-08  Richard Biener  <rguenther@suse.de>
7560         * tree-ssa-ter.c (is_replaceable_p): Do not TER across location
7561         or block changes with -Og.  Fix for location / block encoding
7562         changes and PHI arguments with locations.
7564 2013-03-07  Steven Bosscher  <steven@gcc.gnu.org>
7566         * bitmap.c (struct bitmap_descriptor_d): Use unsigned HOST_WIDEST_INT
7567         for all counters.
7568         (struct output_info): Likewise.
7569         (register_overhead): Remove bad gcc_assert.
7570         (bitmap_find_bit): If there is only a single bitmap element, do not
7571         count a miss as a search.
7572         (print_statistics): Update for counter type changes.
7573         (dump_bitmap_statistics): Likewise.  Print headers such that they
7574         are properly lined up with the printed counters.
7576 2013-03-07  Jakub Jelinek  <jakub@redhat.com>
7578         PR tree-optimization/56559
7579         * tree-ssa-reassoc.c (zero_one_operation): When looking at rhs2,
7580         check that it has only a single use.
7582 2013-03-07  Richard Biener  <rguenther@suse.de>
7584         * doc/invoke.texi (fwhole-program): Discourage use in combination
7585         with -flto.
7587 2013-03-06  Jakub Jelinek  <jakub@redhat.com>
7589         * config/arm/t-arm (TM_H, OPTIONS_H_EXTRA): Add arm-cores.def.
7591         PR tree-optimization/56539
7592         * tree-tailcall.c (adjust_return_value_with_ops): Use GSI_SAME_STMT
7593         instead of GSI_CONTINUE_LINKING as last argument to
7594         force_gimple_operand_gsi.  Adjust function comment.
7596         * config/aarch64/t-aarch64 (TM_H, OPTIONS_H_EXTRA): Add
7597         aarch64-cores.def.
7599         PR middle-end/56548
7600         * expr.c (expand_cond_expr_using_cmove): When expanding cmove in
7601         promoted mode, convert the result back to the original mode.
7603 2013-03-06  Richard Biener  <rguenther@suse.de>
7605         PR middle-end/56294
7606         * tree-into-ssa.c (insert_phi_nodes_for): Add dumping.
7607         (insert_updated_phi_nodes_compare_uids): New function.
7608         (update_ssa): Sort symbols_to_rename after UID before
7609         traversing it to insert PHI nodes.
7611 2013-03-06  Richard Biener  <rguenther@suse.de>
7613         PR middle-end/50494
7614         * tree-vect-data-refs.c (vect_can_force_dr_alignment_p):
7615         Do not adjust alignment of DECL_IN_CONSTANT_POOL decls.
7617         Revert
7618         2013-02-13  Richard Biener  <rguenther@suse.de>
7620         PR lto/50494
7621         * varasm.c (output_constant_def_1): Get the decl representing
7622         the constant as argument.
7623         (output_constant_def): Wrap output_constant_def_1.
7624         (make_decl_rtl): Use output_constant_def_1 with the decl
7625         representing the constant.
7626         (build_constant_desc): Optionally re-use a decl already
7627         representing the constant.
7628         (tree_output_constant_def): Adjust.
7630 2013-03-06  Joey Ye  <joey.ye@arm.com>
7632         PR lto/50293
7633         * gcc.c (convert_white_space): New function.
7634         (main): Handles white space in function name.
7636 2013-03-06  Oleg Endo  <olegendo@gcc.gnu.org>
7638         PR target/56529
7639         * config/sh/sh.c (sh_option_override): Check for TARGET_DYNSHIFT
7640         instead of TARGET_SH2 for call-table case.  Do not set sh_div_strategy
7641         to SH_DIV_CALL_TABLE for TARGET_SH2.
7642         * config.gcc (sh_multilibs): Add m2 and m2a to sh*-*-linux* multilib
7643         list.
7644         * doc/invoke.texi (SH options): Document mdiv= call-div1, call-fp,
7645         call-table options.
7647 2013-03-05  Sterling Augustine  <saugustine@google.com>
7648             Cary Coutant  <ccoutant@google.com>
7650         PR debug/55364
7651         * dwarf2out.c (resolve_addr): Don't call
7652         remove_loc_list_addr_table_entries a second time for the same
7653         expression.
7655 2013-03-05  Jakub Jelinek  <jakub@redhat.com>
7657         PR debug/56510
7658         * cfgexpand.c (expand_debug_parm_decl): Call copy_rtx on incoming.
7659         (avoid_complex_debug_insns): New function.
7660         (expand_debug_locations): Call it.
7662         PR rtl-optimization/56484
7663         * ifcvt.c (noce_process_if_block): If else_bb is NULL, avoid extending
7664         lifetimes of hard registers on small register class machines.
7666 2013-03-05  David Holsgrove  <david.holsgrove@xilinx.com>
7668         * config/microblaze/microblaze-protos.h: Rename
7669         microblaze_is_interrupt_handler to microblaze_is_interrupt_variant.
7670         * config/microblaze/microblaze.c (microblaze_attribute_table): Add
7671         fast_interrupt.
7672         (microblaze_fast_interrupt_function_p): New function.
7673         (microblaze_is_interrupt_handler): Rename to
7674         microblaze_is_interrupt_variant and add fast_interrupt check.
7675         (microblaze_must_save_register): Use microblaze_is_interrupt_variant.
7676         (save_restore_insns): Likewise.
7677         (compute_frame_size): Likewise.
7678         (microblaze_function_prologue): Add FAST_INTERRUPT_NAME.
7679         (microblaze_globalize_label): Likewise.
7680         * config/microblaze/microblaze.h: Define FAST_INTERRUPT_NAME.
7681         * config/microblaze/microblaze.md: Use wrapper
7682         microblaze_is_interrupt_variant.
7684 2013-03-05  Kai Tietz  <ktietz@redhat.com>
7686         * sdbout.c (sdbout_one_type): Switch to current function's section
7687         supporting cold/hot.
7689 2013-03-05  David Holsgrove  <david.holsgrove@xilinx.com>
7691         * doc/invoke.texi (MicroBlaze): Add -mbig-endian, -mlittle-endian,
7692         -mxl-reorder.
7694 2013-03-05  Jakub Jelinek  <jakub@redhat.com>
7696         PR middle-end/56461
7697         * ggc-common.c (gt_pch_save): For ENABLE_VALGRIND_CHECKING,
7698         if VALGRIND_GET_VBITS is defined, temporarily make object
7699         memory all defined, and restore previous valgrind addressability
7700         and definability afterwards.  Free this_object at the end.
7702         PR middle-end/56461
7703         * lra.c (lra): Call lra_clear_live_ranges if live_p,
7704         right before calling lra_create_live_ranges, also call it
7705         when clearing live_p.  Only call lra_clear_live_ranges
7706         at the end if live_p.
7708         PR middle-end/56461
7709         * sched-deps.c (delete_dep_node): Free DEP_REPLACE.
7711 2013-03-05  Richard Biener  <rguenther@suse.de>
7713         PR tree-optimization/56521
7714         * tree-ssa-sccvn.c (set_value_id_for_result): Always initialize
7715         value-id.
7717 2013-03-05  Steven Bosscher  <steven@gcc.gnu.org>
7719         PR c++/55135
7720         * except.h (remove_unreachable_eh_regions): New prototype.
7721         * except.c (remove_eh_handler_splicer): New function, split out
7722         of remove_eh_handler.
7723         (remove_eh_handler): Use remove_eh_handler_splicer.  Add comment
7724         warning about running it on many EH regions one at a time.
7725         (remove_unreachable_eh_regions_worker): New function, walk the
7726         EH tree in depth-first order and remove non-marked regions.
7727         (remove_unreachable_eh_regions): New function.
7728         * tree-eh.c (mark_reachable_handlers): New function, split out
7729         from remove_unreachable_handlers.
7730         (remove_unreachable_handlers): Use mark_reachable_handlers and
7731         remove_unreachable_eh_regions.
7732         (remove_unreachable_handlers_no_lp): Use mark_reachable_handlers
7733         and remove_unreachable_eh_regions.
7735 2013-03-05  Richard Biener  <rguenther@suse.de>
7737         PR middle-end/56525
7738         * loop-init.c (fix_loop_structure): Remove loops in two stages,
7739         not freeing them until the end.
7741 2013-03-05  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
7743         * config/s390/s390.h: Define DWARF2_ASM_LINE_DEBUG_INFO.
7745 2013-03-05  Richard Biener  <rguenther@suse.de>
7747         PR tree-optimization/56270
7748         * tree-vect-slp.c (vect_schedule_slp): Clear vectorized stmts
7749         of loads after scheduling an SLP instance.
7751 2013-03-05  Jakub Jelinek  <jakub@redhat.com>
7753         * Makefile.in (dg_target_exps): Add aarch64.exp, epiphany.exp and
7754         tic6x.exp.
7755         (check_gcc_parallelize): Run guality.exp as a separate job from
7756         vect.exp with unsorted.exp and $(dg_target_exps) separately from
7757         struct-layout-1.exp with stackalign.exp.
7759         * alias.c (init_alias_analysis): Clear reg_known_equiv_p bitmap.
7761         PR middle-end/56461
7762         * tree-vect-slp.c (vect_supported_load_permutation_p): Free
7763         load_index sbitmap even if some bit in it isn't set.
7765         PR middle-end/56461
7766         * tree-ssa-loop-niter.c (bb_queue): Remove typedef.
7767         (discover_iteration_bound_by_body_walk): Change queues to
7768         vec<vec<basic_block> > and queue to vec<basic_block>.  Fix up
7769         spelling in comment.  Call safe_push on queues[bound_index] directly.
7770         Release queues[queue_index] in every iteration unconditionally.
7771         Release bounds vector.
7773         PR middle-end/56461
7774         * tree-vect-stmts.c (free_stmt_vec_info_vec): Call
7775         free_stmt_vec_info on any left-over stmt_vec_info in the vector.
7776         * tree-vect-loop.c (vect_create_epilog_for_reduction): Release
7777         inner_phis vector.
7779 2013-03-05  Richard Biener  <rguenther@suse.de>
7781         PR lto/56515
7782         * tree-inline.c (remap_blocks_to_null): New function.
7783         (expand_call_inline): When expanding a call stmt without
7784         an associated block inline remap all callee blocks to NULL.
7786 2013-03-05  Jakub Jelinek  <jakub@redhat.com>
7788         PR rtl-optimization/56494
7789         * simplify-rtx.c (simplify_truncation): If C is narrower than A,
7790         optimize (truncate:A (subreg:B (truncate:C X) 0)) into
7791         (subreg:A (truncate:C X) 0) instead of (truncate:A X).
7793         PR middle-end/56461
7794         * sel-sched-ir.c (free_sched_pools): Release
7795         succs_info_pool.stack[succs_info_pool.max_top] vectors too
7796         if succs_info_pool.max_top isn't -1.
7798         PR bootstrap/56509
7799         * opts.c (opts_obstack, opts_concat): Moved to...
7800         * opts-common.c (opts_obstack, opts_concat): ... here.
7802 2013-03-04  Jakub Jelinek  <jakub@redhat.com>
7804         PR middle-end/56461
7805         * diagnostic.c (diagnostic_append_note): Save and restore old prefix.
7807 2013-03-04  Martin Jambor  <mjambor@suse.cz>
7809         * tree-dfa.c (get_or_create_ssa_default_def): Use parameter fn in
7810         all appropriate places.
7812 2013-01-04  Eric Botcazou  <ebotcazou@adacore.com>
7814         PR tree-optimization/56424
7815         * ipa-split.c (split_function): Do not set the RSO flag if result is
7816         not by reference and its type is a register type.
7818 2013-03-04  David Holsgrove  <david.holsgrove@xilinx.com>
7820         * config/microblaze/microblaze.c (microblaze_valid_pic_const): New.
7821         (microblaze_legitimate_pic_operand): Likewise.
7822         * config/microblaze/microblaze.h (LEGITIMATE_PIC_OPERAND_P): Call
7823         new function microblaze_legitimate_pic_operand.
7824         * config/microblaze/microblaze-protos.h
7825         (microblaze_legitimate_pic_operand): Declare.
7827 2013-03-04  Edgar E. Iglesias  <edgar.iglesias@gmail.com>
7829         * config/microblaze/predicates.md (call_insn_simple_operand):
7830         New predicate for supported rtx code types.
7831         * config/microblaze/microblaze.md (call_internal1): Use
7832         call_insn_simple_operand predicate.
7834 2013-03-04  Jakub Jelinek  <jakub@redhat.com>
7836         PR middle-end/56461
7837         * tree-loop-distribution.c (ldist_gen): Call partition_free after each
7838         partitions.ordered_remove.
7840         PR middle-end/56461
7841         * tree-vect-stmts.c (vectorizable_conversion): Don't call
7842         vec_oprnds0.create (1) for modifier == NONE.
7844         PR middle-end/56461
7845         * tree-vect-stmts.c (vectorizable_shift): Don't call create methods
7846         on vec_oprnds0 or vec_oprnds1 before loop, only call it on
7847         vec_oprnds1 right before pushing anything to it for
7848         scalar_shift_arg.
7850         PR middle-end/56461
7851         * tree-vect-loop.c (destroy_loop_vec_info): For !clean_stmts, just
7852         set nbbs to 0 instead of having separate code path.
7853         (vect_analyze_loop_form): Call destroy_loop_vec_info with true
7854         instead of false as last argument if returning NULL.
7856 2013-03-03  Sandra Loosemore  <sandra@codesourcery.com>
7858         * target.def (TARGET_OPTION_VALID_ATTRIBUTE_P): Update comments;
7859         the attribute is now called "target" instead of "option".
7860         (TARGET_OPTION_PRAGMA_PARSE): Likewise, for the pragma.
7861         * doc/tm.texi.in (Target Attributes):  Likewise document the correct
7862         attribute/pragma name for TARGET_OPTION_VALID_P and
7863         TARGET_OPTION_PRAGMA_PARSE.  Also copy-edit and correct markup.
7864         * doc/tm.texi: Regenerated.
7866 2013-03-02  David Holsgrove  <david.holsgrove@xilinx.com>
7868         * config/microblaze/microblaze.c:
7869         Check mcpu, pcmp requirement and set TARGET_REORDER to 0 if not met.
7870         * config/microblaze/microblaze.h: Add -mxl-reorder to
7871         DRIVER_SELF_SPECS.
7872         * config/microblaze/microblaze.md: New bswapsi2 and bswaphi2.
7873         instructions emitted if TARGET_REORDER.
7874         * config/microblaze/microblaze.opt: New option -mxl-reorder set to 1
7875         or 0 for -m/-mno case, but initialises as 2 to detect default use case
7876         separately.
7878 2013-03-01  Xinliang David Li  <davidxl@google.com>
7880         * tree-ssa-uninit.c (compute_control_dep_chain): Limit post-dom
7881         walk length.
7883 2013-03-01  Jakub Jelinek  <jakub@redhat.com>
7885         PR middle-end/56461
7886         * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Release path
7887         vector even when returning true.  Fix up function comment formatting.
7889         PR middle-end/56461
7890         * ira-build.c (ira_loop_nodes_count): New variable.
7891         (create_loop_tree_nodes): Initialize it.
7892         (finish_loop_tree_nodes): Use it instead of looking at current_loops.
7894         PR middle-end/56461
7895         * tree-vect-data-refs.c (vect_permute_store_chain): Avoid using copy
7896         method on dr_chain and result_chain.
7897         * tree-vect-stmts.c (vectorizable_store): Only call
7898         result_chain.create if j == 0.
7900         PR middle-end/56461
7901         * tree-vect-stmts.c (vect_create_vectorized_promotion_stmts): Call
7902         vec_oprnds0->release (); rather than vec_oprnds0->truncate (0)
7903         before overwriting it.
7905 2013-03-01  Tobias Burnus  <burnus@net-b.de>
7907         * doc/extended.texi (C Extensions): Change order in @menu
7908         to match @node.
7909         (Other MIPS Built-in Functions): Move last MIPS entry before
7910         "picoChip Built-in Functions".
7911         (SH Built-in Functions): Move after RX Built-in Functions.
7912         * doc/gcc.texi (Introduction): Change order in @menu to match @node.
7913         * doc/md.texi (Constraints): Ditto.
7914         * gty.texi (Type Information): Ditto.
7915         (User-provided marking routines for template types): Make subsection.
7916         * doc/invoke.texi (AArch64 Options): Move before
7917         "Adapteva Epiphany Options".
7919 2013-02-28  Konstantin Serebryany  <konstantin.s.serebryany@gmail.com>
7920             Jakub Jelinek  <jakub@redhat.com>
7922         PR sanitizer/56454
7923         * asan.c (gate_asan): Lookup no_sanitize_address instead of
7924         no_address_safety_analysis attribute.
7925         * doc/extend.texi (no_address_safety_attribute): Rename to
7926         no_sanitize_address attribute, mention no_address_safety_analysis
7927         attribute as deprecated alias.
7929 2013-02-28  Jakub Jelinek  <jakub@redhat.com>
7931         PR middle-end/56461
7932         * tree-vectorizer.h (vect_get_slp_defs): Change 3rd argument
7933         type to vec<vec<tree> > *.
7934         * tree-vect-slp.c (vect_get_slp_defs): Likewise.  Change vec_defs
7935         to be vec<tree> instead of vec<tree> *, set vec_defs
7936         to vNULL and call vec_defs.create (number_of_vects), adjust other
7937         uses of vec_defs.
7938         * tree-vect-stmts.c (vect_get_vec_defs, vectorizable_call,
7939         vectorizable_condition): Adjust vect_get_slp_defs callers.
7941 2013-02-28  James Greenhalgh  <james.greenhalgh@arm.com>
7943         * config/aarch64/aarch64.c
7944         (aarch64_float_const_representable): Remove unused variable.
7946 2013-02-28  James Greenhalgh  <james.greenhalgh@arm.com>
7948         * config/aarch64/aarch64.c (aarch64_mangle_type): Make static.
7950 2013-02-28  James Greenhalgh  <james.greenhalgh@arm.com>
7952         * config/aarch64/aarch64-builtins.c
7953         (aarch64_init_simd_builtins): Make static.
7955 2013-02-28  James Greenhalgh  <james.greenhalgh@arm.com>
7957         * config/aarch64/aarch64.c
7958         (aarch64_simd_make_constant): Make static.
7960 2013-02-28  Martin Jambor  <mjambor@suse.cz>
7962         * tree-sra.c (load_assign_lhs_subreplacements): Do not put replacements
7963         with no initialization to the RHS of debug statements.
7965 2013-02-28  Martin Jambor  <mjambor@suse.cz>
7967         PR tree-optimization/56294
7968         * tree-sra.c (analyze_access_subtree): Create replacement declarations.
7969         Adjust dumping.
7970         (get_access_replacement): Do not call create_access_replacement.
7971         Assert a replacement exists.
7972         (get_repl_default_def_ssa_name): Create the replacement declaration
7973         itself.
7975 2013-02-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7977         * config/arm/arm.c (arm_output_mi_thunk): Call final_start_function and
7978         final_end_function.
7980 2013-02-28  Marek Polacek  <polacek@redhat.com>
7982         PR rtl-optimization/56466
7983         * loop-unroll.c (unroll_and_peel_loops): Call fix_loop_structure
7984         if we're changing a loop.
7985         (peel_loops_completely): Likewise.
7987 2013-02-28  Paolo Carlini  <paolo.carlini@oracle.com>
7989         PR c++/55813
7990         * doc/invoke.texi ([-Wctor-dtor-privacy]): Complete.
7992 2013-02-28  Georg-Johann Lay  <avr@gjlay.de>
7994         PR target/56445
7995         * config/avr/avr.c (avr_init_builtins): Use 'n' instead of empty
7996         macro parameters with: FX_FTYPE_FX, FX_FTYPE_FX_INT, INT_FTYPE_FX,
7997         INTX_FTYPE_FX, FX_FTYPE_INTX.
7998         * config/avr/builtins.def: Adjust respective DEF_BUILTIN.
8000 2013-02-28  Georg-Johann Lay  <avr@gjlay.de>
8002         * avr/avr-mcus.def (ata5272, ata5505, attiny1634, ata6285)
8003         (ata6286, atmega8a, atmega48pa, ata5790, ata5790n, ata5795)
8004         (atmega164pa, atmega165pa, atmega168pa, atmega16hva, atmega16hvb)
8005         (atmega16hvbrevb, atmega16m1, atmega16u4, atmega26hvg, atmega32a)
8006         (atmega32a, atmega3250pa, atmega3290pa, atmega32c1, atmega32m1)
8007         (atmega32u4, atmega32u6, atmega64a, atmega6490a, atmega6490p)
8008         (atmega64c1, atmega64m1, atmega64rfa2, atmega64rfr2, atmega32hvb)
8009         (atmega32hvbrevb, atmega16hva2, atmega48hvf, at90pwm161)
8010         (atmega128a, atmega1284, atmxt112sl, atmxt224, atmxt224e)
8011         (atmxt336s, atxmega16a4u, atxmega16c4, atxmega32a4u, atxmega32c4)
8012         (atxmega32e5, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3)
8013         (atxmega64c3, atxmega64d4, atxmega128a3u, atxmega128b1)
8014         (atxmega128b3, atxmega128c3, atxmega128d4, atmxt540s, atmxt540sreva)
8015         (atxmega192a3u, atxmega192c3, atxmega256a3u, atxmega256c3)
8016         (atxmega384c3, atxmega384d3, atxmega128a4u): New AVR_MCU.
8017         (avrxmega6): Increase max flash segments from 5 to 6.
8018         * config/avr/t-multilib: Regenerate.
8019         * config/avr/avr-tables.opt: Regenerate.
8020         * doc/avr-mmcu.texi: Regenerate.
8022 2013-02-28  Georg-Johann Lay  <avr@gjlay.de>
8024         * config/avr/avr.h (device_to_arch): Rename to device_to_ld.
8025         (avr_device_to_arch): Rename to avr_device_to_ld.
8026         (avr_device_to_as): New prototype.
8027         (EXTRA_SPEC_FUNCTIONS): Add device_to_as.
8028         (ASM_SPEC): Use device_to_as to get -mmcu= and -mno-skip-bug=.
8029         * config/avr/driver-avr.c (avr_device_to_as): New.
8030         (avr_device_to_arch): Rename to avr_device_to_ld.
8032 2013-02-27  Jakub Jelinek  <jakub@redhat.com>
8034         PR middle-end/56461
8035         * tree-vect-data-refs.c (vect_permute_load_chain): Avoid using copy
8036         method on dr_chain and result_chain.
8038         PR middle-end/56461
8039         * tree-ssa-loop-niter.c (maybe_lower_iteration_bound): Call
8040         pointer_set_destroy on not_executed_last_iteration.
8042         PR middle-end/56461
8043         * tree-vect-loop.c (vectorizable_reduction): Release vect_defs vector.
8045         PR middle-end/56461
8046         * ipa-pure-const.c (propagate): Use FOR_EACH_FUNCTION instead of
8047         FOR_EACH_DEFINED_FUNCTION when freeing state.
8049         PR middle-end/56461
8050         * df-scan.c (df_insn_delete): Use df_scan_free_mws_vec before
8051         pool_free.
8052         (df_insn_rescan_debug_internal): Use df_scan_free_mws_vec before
8053         overwriting it.
8055         PR middle-end/56461
8056         * ipa-cp.c (decide_whether_version_node): Call vec_free on
8057         known_aggs[i].items and release known_aggs vector.
8059         PR middle-end/56461
8060         * ipa-reference.c (propagate): Free node_info even for alias nodes.
8062 2013-02-27  Edgar E. Iglesias  <edgar.iglesias@gmail.com>
8064         * config/microblaze/microblaze.c (microblaze_emit_compare):
8065         Use xor for EQ/NE comparisions.
8066         * config/microblaze/microblaze.md (cstoresf4): Add constraints
8067         (cbranchsf4): Adjust operator to comparison_operator.
8069 2013-02-27  Jakub Jelinek  <jakub@redhat.com>
8071         PR middle-end/56461
8072         * tree-flow.h (edge_var_map_vector): Change into va_heap, vl_embed
8073         vector.
8074         * tree-ssa.c (redirect_edge_var_map_add): Use vec_safe_reserve and
8075         vec_safe_push, always update *slot.
8076         (redirect_edge_var_map_clear): Use vec_free.
8077         (redirect_edge_var_map_dup): Use vec_safe_copy and vec_safe_reserve.
8078         (free_var_map_entry): Use vec_free.
8079         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Use
8080         FOR_EACH_VEC_SAFE_ELT instead of FOR_EACH_VEC_ELT.
8082 2013-02-27  Andrey Belevantsev  <abel@ispras.ru>
8084         PR middle-end/45472
8085         * sel-sched-ir.c (merge_expr): Also change vinsn of merged expr
8086         when the may_trap_p bit of the exprs being merged differs.
8087         Reorder tests for speculativeness in the logical and operator.
8089 2013-02-27  Jakub Jelinek  <jakub@redhat.com>
8091         * incpath.c (add_standard_paths): Use reconcat instead of concat
8092         where appropriate and avoid leaking memory.
8094         * opts.h: Include obstack.h.
8095         (opts_concat): New prototype.
8096         (opts_obstack): New declaration.
8097         * opts.c (opts_concat): New function.
8098         (opts_obstack): New variable.
8099         (init_options_struct): Call gcc_init_obstack on opts_obstack.
8100         (finish_options): Use opts_concat instead of concat
8101         and XOBNEWVEC instead of XNEWVEC.
8102         * opts-common.c (generate_canonical_option, decode_cmdline_option,
8103         generate_option): Likewise.
8104         * Makefile.in (OPTS_H): Depend on $(OBSTACK_H).
8105         * lto-wrapper.c (main): Call gcc_init_obstack on opts_obstack.
8107         PR target/56455
8108         * stmt.c (expand_switch_as_decision_tree_p): If flag_pic
8109         and ASM_OUTPUT_ADDR_DIFF_ELT isn't defined, return true.
8111 2013-02-26  Jakub Jelinek  <jakub@redhat.com>
8113         PR middle-end/56461
8114         * lra-spills.c (lra_spill): Free spill_hard_reg at the end.
8116 2013-02-26  Joern Rennecke  <joern.rennecke@embecosm.com>
8118         * config/arm/arm.c (const_ok_for_dimode_op): Back out last change.
8119         (arm_block_move_unaligned_straight): Likewise.
8120         (arm_adjust_block_mem): Likewise.
8122 2013-02-26  Joern Rennecke  <joern.rennecke@embecosm.com>
8124         PR target/48901
8125         * config/lm32/lm32.c (gen_int_relational): Remove unused variables
8126         temp, cond and label.
8127         * config/lm32/lm32.md (ashlsi3): Remove unused variable one.
8129         PR target/52500
8130         * config/c6x/c6x.c (dbx_register_map): Change to unsigned.
8131         * config/c6x/c6x.h (dbx_register_map): Update declaration.
8133         PR target/52501
8134         * config/cr16/cr16-protos.h: Move end of RTX_CODE guard below end
8135         of prologue/epilogue functions.
8137         PR target/52550
8138         * config/tilegx/tilegx.c (tilegx_expand_prologue):
8139         Remove unused variable cfa_offset.
8140         * config/tilepro/tilepro.c (tilepro_expand_prologue): Likewise.
8142         PR target/54639
8143         * config/mn10300/mn10300.c (mn10300_expand_epilogue): Avoid offset
8144         type promotion to unsigned.
8146         PR target/54640
8147         * config/arm/arm.c (const_ok_for_dimode_op): Make code consistent
8148         for HOST_WIDE_INT of 32 bit / same size as int.
8149         (arm_block_move_unaligned_straight): Likewise.
8150         (arm_adjust_block_mem): Likewise.
8152         PR target/54662
8153         * config/mep/t-mep (mep-pragma.o): Use ALL_COMPILERFLAGS instead of
8154         ALL_CFLAGS.
8156 2013-02-26  Marek Polacek  <polacek@redhat.com>
8158         PR tree-optimization/56426
8159         * tree-ssa-loop.c (tree_ssa_loop_init): Always call
8160         scev_initialize.
8162 2013-02-26  Richard Biener  <rguenther@suse.de>
8164         PR target/56444
8165         * config/mn10300/mn10300.c (mn10300_scan_for_setlb_lcc): Remove
8166         unused variable loops.
8168 2013-02-26  Jakub Jelinek  <jakub@redhat.com>
8170         PR tree-optimization/56448
8171         * fold-const.c (operand_equal_p) <case tcc_reference>: Don't look at
8172         TREE_SIDE_EFFECTS if flags contain OEP_CONSTANT_ADDRESS_OF.
8173         Clear OEP_CONSTANT_ADDRESS_OF from flags before recursing on second or
8174         later operands of the references, or even first operand for
8175         INDIRECT_REF, TARGET_MEM_REF or MEM_REF.
8177         PR tree-optimization/56443
8178         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): For
8179         overaligned types, pass TYPE_UNSIGNED (scalar_type) as second argument
8180         to type_for_mode langhook.
8182 2013-02-25  Matt Turner  <mattst88@gmail.com>
8184         * doc/invoke.texi: Document r4700.
8186 2013-02-25  Richard Biener  <rguenther@suse.de>
8188         PR tree-optimization/56175
8189         * tree-ssa-forwprop.c (hoist_conversion_for_bitop_p): New predicate,
8190         split out from ...
8191         (simplify_bitwise_binary): ... here.  Also guard the conversion
8192         of (type) X op CST to (type) (X op ((type-x) CST)) with it.
8194 2013-02-25  Catherine Moore  <clm@codesourcery.com>
8196         Revert:
8197         2013-02-24  Catherine Moore  <clm@codesourcery.com>
8198             Maciej W. Rozycki  <macro@codesourcery.com>
8199             Tom de Vries  <tom@codesourcery.com>
8200             Nathan Sidwell  <nathan@codesourcery.com>
8201             Iain Sandoe  <iain@codesourcery.com>
8202             Nathan Froyd  <froydnj@codesourcery.com>
8203             Chao-ying Fu  <fu@mips.com>
8205         * doc/extend.texi (micromips, nomicromips, nocompression):
8206         Document new function attributes.
8207         * doc/invoke.texi (minterlink-compressed, mmicromips,
8208         m14k, m14ke, m14kec): Document new options.
8209         (minterlink-mips16): Update documentation.
8210         * doc/md.texi (ZC, ZD): Document new constraints.
8211         * configure.ac (gcc_cv_as_micromips): Check if linker
8212         supports the .set micromips directive.
8213         * configure: Regenerate.
8214         * config.in: Regenerate.
8215         * config/mips/mips-tables.opt: Regenerate.
8216         * config/mips/micromips.md: New file.
8217         * constraints.md (ZC, AD): New constraints.
8218         * config/mips/predicates.md (movep_src_register): New predicate.
8219         (movep_src_operand): New predicate.
8220         (non_volatile_mem_operand): New predicate.
8221         * config/mips/mips.md (multimem): New type.
8222         (length): Differentiate between 17-bit and 18-bit branch offsets.
8223         (MOVEP1, MOVEP2): New mode iterator.
8224         (mov_<load>l): Use ZC constraint.
8225         (mov_<load>r): Likewise.
8226         (mov_<store>l): Likewise.
8227         (mov_<store>r): Likewise.
8228         (*branch_equality<mode>_inverted): Add microMIPS support.
8229         (*branch_equality<mode>): Likewise.
8230         (*jump_absolute): Likewise.
8231         (indirect_jump_<mode>): Likewise.
8232         (tablejump_<mode>): Likewise.
8233         (<optab>_internal): Likewise.
8234         (sibcall_internal): Likewise.
8235         (sibcall_value_internal): Likewise.
8236         (prefetch): Use constraint ZD.
8237         * config/mips/mips.opt (minterlink-compressed): New option.
8238         (minterlink-mips16): Now an alias for minterlink-compressed.
8239         (mmicromips): New option.
8240         * config/mips/sync.md (sync_compare_and_swap<mode>): Use ZR constraint.
8241         (compare_and_swap_12): Likewise.
8242         (sync_add<mode>): Likewise.
8243         (sync_<optab>_12): Likewise.
8244         (sync_old_<optab>_12): Likewise.
8245         (sync_new_<optab>_12): Likewise.
8246         (sync_nand_12): Likewise.
8247         (sync_old_nand_12): Likewise.
8248         (sync_new_nand_12): Likewise.
8249         (sync_sub<mode>): Likewise.
8250         (sync_old_add<mode>): Likewise.
8251         (sync_old_sub<mode>): Likewise.
8252         (sync_new_add<mode>): Likewise.
8253         (sync_new_sub<mode>): Likewise.
8254         (sync_<optab><mode>): Likewise.
8255         (sync_old_<optab><mode>): Likewise.
8256         (sync_new_<optab><mode>): Likewise.
8257         (sync_nand<mode>): Likewise.
8258         (sync_old_nand<mode>): Likewise.
8259         (sync_new_nand<mode>): Likewise.
8260         (sync_lock_test_and_set<mode>): Likewise.
8261         (test_and_set_12): Likewise.
8262         (atomic_compare_and_swap<mode>): Likewise.
8263         (atomic_exchange<mode>_llsc): Likewise.
8264         (atomic_fetch_add<mode>_llsc): Likewise.
8265         * config/mips/mips-cpus.def (m14kc, m14k): New processors.
8266         * config/mips/mips-protos.h (umips_output_save_restore): New prototype.
8267         (umips_save_restore_pattern_p): Likewise.
8268         (umips_load_store_pair_p): Likewise.
8269         (umips_output_load_store_pair): Likewise.
8270         (umips_movep_target_p): Likewise.
8271         (umips_12bit_offset_address_p): Likewise.
8272         * config/mips/mips.c (MIPS_MAX_FIRST_STEP): Update for microMIPS.
8273         (mips_base_mips16): Rename this...
8274         (mips_base_compression_flags): ...to this. Update all uses.
8275         (mips_attribute_table): Add micromips, nomicromips and nocompression.
8276         (mips_mips16_decl_p): Delete.
8277         (mips_nomips16_decl_p): Delete.
8278         (mips_get_compress_on_flags): New function.
8279         (mips_get_compress_off_flags): New function.
8280         (mips_get_compress_mode): New function.
8281         (mips_get_compress_on_name): New function.
8282         (mips_get_compress_off_name): New function.
8283         (mips_insert_attributes): Support multiple compression types.
8284         (mips_merge_decl_attributes): Likewise.
8285         (umips_12bit_offset_address_p): New function.
8286         (mips_start_function_definition): Emit .set micromips directive.
8287         (mips_call_may_need_jalx_p): New function.
8288         (mips_function_ok_for_sibcall): Add microMIPS support.
8289         (mips_print_operand_punctuation): Support short delay slots and
8290         compact jumps.
8291         (umips_swm_mask, umips_swm_encoding): New.
8292         (umips_build_save_restore): New function.
8293         (mips_for_each_saved_gpr_and_fpr): Add microMIPS support.
8294         (was_mips16_p): Remove.
8295         (old_compression_mode): New.
8296         (mips_set_compression_mode): New function.
8297         (mips_set_current_function): Add microMIPS support.
8298         (mips_option_override): Likewise.
8299         (umips_save_restore_pattern_p): New function.
8300         (umips_output_save_restore): New function.
8301         (umips_load_store_pair_p_1): New function.
8302         (umips_load_store_pair_p): New function.
8303         (umips_output_load_store_pair_1): New function.
8304         (umips_output_load_store_pair): New function.
8305         (umips_movep_target_p) New function.
8306         (mips_prepare_pch_save): Add microMIPS support.
8307         * config/mips/mips.h (TARGET_COMPRESSION): New.
8308         (TARGET_CPU_CPP_BUILTINS): Update macro
8309         to use new compression flags and to support microMIPS.
8310         (MIPS_ISA_LEVEL_SPEC): Add m14k processors.
8311         (MIPS_ARCH_FLOAT_SPEC): Likewise.
8312         (ISA_HAS_LWXS): Include TARGET_MICROMIPS.
8313         (ISA_HAS_LOAD_DELAY): Exclude TARGET_MICROMIPS.
8314         (ASM_SPEC): Support mmicromips and mno-micromips.
8315         (M16STORE_REG_P): New macro.
8316         (MIPS_CALL): Support TARGET_MICROMIPS.
8317         (MICROMIPS_J): New macro.
8318         (mips_base_mips16): Rename this...
8319         (mips_base_compression_flags): ...to this.
8320         (UMIPS_12BIT_OFFSET_P): New macro.
8321         * config/mips/t-sde: (MULTILIB_OPTIONS): Add microMIPS.
8322         (MULTILIB_DIRNAMES): Likewise.
8324 2013-02-25  Tom de Vries  <tom@codesourcery.com>
8326         PR rtl-optimization/56131
8327         * insn-notes.def (INSN_NOTE_BASIC_BLOCK): Update comment.
8328         * cfgrtl.c (delete_insn): Don't reorder NOTE_INSN_DELETED_LABEL and
8329         NOTE_INSN_BASIC_BLOCK if BLOCK_FOR_INSN == NULL.
8331 2013-02-25  Tobias Burnus  <burnus@net-b.de>
8333         * doc/invoke.texi (-fsanitize=): Move from optimization
8334         to debugging options.
8336 2013-02-25  Andrey Belevantsev  <abel@ispras.ru>
8338         * sched-deps.c (sched_analyze_insn): Fix typo in comment.
8340 2013-02-25  Andrey Belevantsev  <abel@ispras.ru>
8341             Alexander Monakov  <amonakov@ispras.ru>
8343         PR middle-end/56077
8344         * sched-deps.c (sched_analyze_insn): When reg_pending_barrier,
8345         flush pending lists also on non-jumps.  Adjust comment.
8347 2013-02-24  Catherine Moore  <clm@codesourcery.com>
8348             Maciej W. Rozycki  <macro@codesourcery.com>
8349             Tom de Vries  <tom@codesourcery.com>
8350             Nathan Sidwell  <nathan@codesourcery.com>
8351             Iain Sandoe  <iain@codesourcery.com>
8352             Nathan Froyd  <froydnj@codesourcery.com>
8353             Chao-ying Fu  <fu@mips.com>
8355         * doc/extend.texi (micromips, nomicromips, nocompression):
8356         Document new function attributes.
8357         * doc/invoke.texi (minterlink-compressed, mmicromips,
8358         m14k, m14ke, m14kec): Document new options.
8359         (minterlink-mips16): Update documentation.
8360         * doc/md.texi (ZC, ZD): Document new constraints.
8361         * configure.ac (gcc_cv_as_micromips): Check if linker
8362         supports the .set micromips directive.
8363         * configure: Regenerate.
8364         * config.in: Regenerate.
8365         * config/mips/mips-tables.opt: Regenerate.
8366         * config/mips/micromips.md: New file.
8367         * constraints.md (ZC, AD): New constraints.
8368         * config/mips/predicates.md (movep_src_register): New predicate.
8369         (movep_src_operand): New predicate.
8370         (non_volatile_mem_operand): New predicate.
8371         * config/mips/mips.md (multimem): New type.
8372         (length): Differentiate between 17-bit and 18-bit branch offsets.
8373         (MOVEP1, MOVEP2): New mode iterator.
8374         (mov_<load>l): Use ZC constraint.
8375         (mov_<load>r): Likewise.
8376         (mov_<store>l): Likewise.
8377         (mov_<store>r): Likewise.
8378         (*branch_equality<mode>_inverted): Add microMIPS support.
8379         (*branch_equality<mode>): Likewise.
8380         (*jump_absolute): Likewise.
8381         (indirect_jump_<mode>): Likewise.
8382         (tablejump_<mode>): Likewise.
8383         (<optab>_internal): Likewise.
8384         (sibcall_internal): Likewise.
8385         (sibcall_value_internal): Likewise.
8386         (prefetch): Use constraint ZD.
8387         * config/mips/mips.opt (minterlink-compressed): New option.
8388         (minterlink-mips16): Now an alias for minterlink-compressed.
8389         (mmicromips): New option.
8390         * config/mips/sync.md (sync_compare_and_swap<mode>): Use ZR constraint.
8391         (compare_and_swap_12): Likewise.
8392         (sync_add<mode>): Likewise.
8393         (sync_<optab>_12): Likewise.
8394         (sync_old_<optab>_12): Likewise.
8395         (sync_new_<optab>_12): Likewise.
8396         (sync_nand_12): Likewise.
8397         (sync_old_nand_12): Likewise.
8398         (sync_new_nand_12): Likewise.
8399         (sync_sub<mode>): Likewise.
8400         (sync_old_add<mode>): Likewise.
8401         (sync_old_sub<mode>): Likewise.
8402         (sync_new_add<mode>): Likewise.
8403         (sync_new_sub<mode>): Likewise.
8404         (sync_<optab><mode>): Likewise.
8405         (sync_old_<optab><mode>): Likewise.
8406         (sync_new_<optab><mode>): Likewise.
8407         (sync_nand<mode>): Likewise.
8408         (sync_old_nand<mode>): Likewise.
8409         (sync_new_nand<mode>): Likewise.
8410         (sync_lock_test_and_set<mode>): Likewise.
8411         (test_and_set_12): Likewise.
8412         (atomic_compare_and_swap<mode>): Likewise.
8413         (atomic_exchange<mode>_llsc): Likewise.
8414         (atomic_fetch_add<mode>_llsc): Likewise.
8415         * config/mips/mips-cpus.def (m14kc, m14k): New processors.
8416         * config/mips/mips-protos.h (umips_output_save_restore): New prototype.
8417         (umips_save_restore_pattern_p): Likewise.
8418         (umips_load_store_pair_p): Likewise.
8419         (umips_output_load_store_pair): Likewise.
8420         (umips_movep_target_p): Likewise.
8421         (umips_12bit_offset_address_p): Likewise.
8422         * config/mips/mips.c (MIPS_MAX_FIRST_STEP): Update for microMIPS.
8423         (mips_base_mips16): Rename this...
8424         (mips_base_compression_flags): ...to this. Update all uses.
8425         (mips_attribute_table): Add micromips, nomicromips and nocompression.
8426         (mips_mips16_decl_p): Delete.
8427         (mips_nomips16_decl_p): Delete.
8428         (mips_get_compress_on_flags): New function.
8429         (mips_get_compress_off_flags): New function.
8430         (mips_get_compress_mode): New function.
8431         (mips_get_compress_on_name): New function.
8432         (mips_get_compress_off_name): New function.
8433         (mips_insert_attributes): Support multiple compression types.
8434         (mips_merge_decl_attributes): Likewise.
8435         (umips_12bit_offset_address_p): New function.
8436         (mips_start_function_definition): Emit .set micromips directive.
8437         (mips_call_may_need_jalx_p): New function.
8438         (mips_function_ok_for_sibcall): Add microMIPS support.
8439         (mips_print_operand_punctuation): Support short delay slots and
8440         compact jumps.
8441         (umips_swm_mask, umips_swm_encoding): New.
8442         (umips_build_save_restore): New function.
8443         (mips_for_each_saved_gpr_and_fpr): Add microMIPS support.
8444         (was_mips16_p): Remove.
8445         (old_compression_mode): New.
8446         (mips_set_compression_mode): New function.
8447         (mips_set_current_function): Add microMIPS support.
8448         (mips_option_override): Likewise.
8449         (umips_save_restore_pattern_p): New function.
8450         (umips_output_save_restore): New function.
8451         (umips_load_store_pair_p_1): New function.
8452         (umips_load_store_pair_p): New function.
8453         (umips_output_load_store_pair_1): New function.
8454         (umips_output_load_store_pair): New function.
8455         (umips_movep_target_p) New function.
8456         (mips_prepare_pch_save): Add microMIPS support.
8457         * config/mips/mips.h (TARGET_COMPRESSION): New.
8458         (TARGET_CPU_CPP_BUILTINS): Update macro
8459         to use new compression flags and to support microMIPS.
8460         (MIPS_ISA_LEVEL_SPEC): Add m14k processors.
8461         (MIPS_ARCH_FLOAT_SPEC): Likewise.
8462         (ISA_HAS_LWXS): Include TARGET_MICROMIPS.
8463         (ISA_HAS_LOAD_DELAY): Exclude TARGET_MICROMIPS.
8464         (ASM_SPEC): Support mmicromips and mno-micromips.
8465         (M16STORE_REG_P): New macro.
8466         (MIPS_CALL): Support TARGET_MICROMIPS.
8467         (MICROMIPS_J): New macro.
8468         (mips_base_mips16): Rename this...
8469         (mips_base_compression_flags): ...to this.
8470         (UMIPS_12BIT_OFFSET_P): New macro.
8471         * config/mips/t-sde: (MULTILIB_OPTIONS): Add microMIPS.
8472         (MULTILIB_DIRNAMES): Likewise.
8474 2013-02-24  Jakub Jelinek  <jakub@redhat.com>
8476         PR target/52555
8477         * target-globals.c (save_target_globals): For init_reg_sets and
8478         target_reinit remporarily set this_fn_optabs to this_target_optabs.
8480 2013-02-22  James Grennahlgh  <james.greenhalgh@arm.com>
8482         * config/aarch64/aarch64-simd-builtins.def: Add copyright header.
8483         * config/aarch64/t-aarch64
8484         (aarch64-builtins.o): Depend on aarch64-simd-builtins.def.
8486 2013-02-22  Vladimir Makarov  <vmakarov@redhat.com>
8488         PR inline-asm/56148
8489         * lra-constraints.c (process_alt_operands): Reload operand
8490         conflicting with earlier clobber only if no more other conflicting
8491         operands.
8493 2013-02-22  Jakub Jelinek  <jakub@redhat.com>
8495         PR sanitizer/56393
8496         * config/gnu-user.h (LIBASAN_EARLY_SPEC): Link in libasan_preinit.o
8497         if not linking a shared library.
8499 2013-02-22  Seth LaForge  <sethml@google.com>
8501         * config.gcc (arm*-*-eabi*): Treat arm*eb as big-endian.
8503 2013-02-22  Greta Yorsh  <Greta.Yorsh@arm.com>
8505         * config/arm/arm.md (split for extendsidi): Update condition.
8506         (zero_extend<mode>di2,extend<mode>di2): Add an alternative.
8507         * config/arm/iterators.md (qhs_extenddi_cstr): Likewise.
8508         (qhs_zextenddi_cstr): Likewise.
8510 2013-02-21  Jakub Jelinek  <jakub@redhat.com>
8512         PR middle-end/56420
8513         * expmed.c (EXACT_POWER_OF_2_OR_ZERO_P): Do subtraction in uhwi, to
8514         avoid signed wrapping.
8515         (expand_mult): Handle properly multiplication by
8516         ((dword_type) -1) << (BITS_PER_WORD - 1).  Improve multiplication by
8517         ((dword_type) 1) << (BITS_PER_WORD - 1).  Avoid undefined behavior
8518         in the compiler if coeff is HOST_WIDE_INT_MIN.
8519         (expand_divmod): Don't make ext_op1 static, change it's type to uhwi.
8520         Avoid undefined behavior in -INTVAL (op1).
8522         PR rtl-optimization/50339
8523         * lower-subreg.h (struct lower_subreg_choices): Add splitting_ashiftrt
8524         field.
8525         * lower-subreg.c (compute_splitting_shift): Handle ASHIFTRT.
8526         (compute_costs): Call compute_splitting_shift also for ASHIFTRT
8527         into splitting_ashiftrt field.
8528         (find_decomposable_shift_zext, resolve_shift_zext): Handle also
8529         ASHIFTRT.
8530         (dump_choices): Fix up printing LSHIFTRT choices, print ASHIFTRT
8531         choices.
8533 2013-02-20  Aldy Hernandez  <aldyh@redhat.com>
8535         PR middle-end/56108
8536         * trans-mem.c (execute_tm_mark): Do not expand transactions that
8537         are sure to go irrevocable.
8539 2013-02-21  Hans-Peter Nilsson  <hp@axis.com>
8541         * doc/rtl.texi (vec_concat, vec_duplicate): Mention that
8542         scalars are valid operands.
8544 2013-02-21  Martin Jambor  <mjambor@suse.cz>
8546         PR tree-optimization/56310
8547         * ipa-cp.c (agg_replacements_to_vector): New parameter index, copy
8548         only matching indices and non-negative final offsets.
8549         (intersect_aggregates_with_edge): Pass src_idx to
8550         agg_replacements_to_vector.  Pass src_idx insstead of index to
8551         intersect_with_agg_replacements.
8553 2013-02-21  Martin Jambor  <mjambor@suse.cz>
8555         * ipa-cp.c (good_cloning_opportunity_p): Dump the real threshold
8556         instead of hard-wired defaults.
8558 2013-02-21  Maciej W. Rozycki  <macro@codesourcery.com>
8560         * doc/invoke.texi (MIPS Options): Update documentation of the
8561         floating-point multiply-accumulate instruction restrictions.
8563 2013-02-21  Kostya Serebryany  <kcc@google.com>
8565         * config/i386/i386.c (ix86_asan_shadow_offset): Use 0x7fff8000 as
8566         asan_shadow_offset on x86_64 linux.
8568 2013-02-21  Richard Biener  <rguenther@suse.de>
8570         PR tree-optimization/56415
8571         Revert
8572         2013-02-11  Richard Biener  <rguenther@suse.de>
8574         PR tree-optimization/56273
8575         * tree-vrp.c (simplify_cond_using_ranges): Disable for the
8576         first VRP run.
8578 2013-02-21  Jakub Jelinek  <jakub@redhat.com>
8580         PR bootstrap/56258
8581         * doc/invoke.texi (-fdump-rtl-pro_and_epilogue): Use @item
8582         instead of @itemx.
8584         PR inline-asm/56405
8585         * expr.c (expand_expr_real_1) <case TARGET_MEM_REF, MEM_REF>: Don't
8586         use movmisalign or extract_bit_field for EXPAND_MEMORY modifier.
8588 2013-02-20  Jan Hubicka  <jh@suse.cz>
8590         PR tree-optimization/56265
8591         * ipa-prop.c (ipa_make_edge_direct_to_target): Fixup callgraph when
8592         target is referenced for first time.
8594 2013-02-20  Richard Biener  <rguenther@suse.de>
8596         * tree-call-cdce.c (tree_call_cdce): Do not remove unused locals.
8597         * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Likewise.
8598         * tree-ssa-dce.c (perform_tree_ssa_dce): Likewise.
8599         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Do
8600         not return anything.
8601         (rename_ssa_copies): Do not remove unused locals.
8602         * tree-ssa-ccp.c (do_ssa_ccp): Likewise.
8603         * tree-ssanames.c (pass_release_ssa_names): Remove unused locals first.
8604         * passes.c (execute_function_todo): Do not schedule unused locals
8605         removal if cleanup_tree_cfg did something.
8606         * tree-ssa-live.c (remove_unused_locals): Dump statistics
8607         about the number of removed locals.
8609 2013-02-20  Richard Biener  <rguenther@suse.de>
8611         PR tree-optimization/56398
8612         * tree-vect-loop-manip.c (adjust_debug_stmts): Skip
8613         SSA default defs.
8615 2013-02-20  Martin Jambor  <mjambor@suse.cz>
8617         PR tree-optimization/55334
8618         * ipa-cp.c (initialize_node_lattices): Disable IPA-CP through and to
8619         restricted pointers to arrays.
8621 2013-02-20  Richard Biener  <rguenther@suse.de>
8622         Jakub Jelinek  <jakub@redhat.com>
8624         PR tree-optimization/56396
8625         * tree-ssa-ccp.c (n_const_val): New static variable.
8626         (get_value): Return NULL for SSA names we don't have a lattice
8627         entry for.
8628         (ccp_initialize): Initialize n_const_val.
8629         * tree-ssa-copy.c (n_copy_of): New static variable.
8630         (init_copy_prop): Initialize n_copy_of.
8631         (get_value): Return NULL_TREE for SSA names we don't have a
8632         lattice entry for.
8634 2013-02-20  Martin Jambor  <mjambor@suse.cz>
8636         * ipa-cp.c (initialize_node_lattices): Fix dumping condition.
8638 2013-02-20  Richard Biener  <rguenther@suse.de>
8640         * genpreds.c (write_lookup_constraint): Do not compare first
8641         letter of the constraint again.
8643 2013-02-20  Richard Biener  <rguenther@suse.de>
8645         * tree-ssa-loop-ivopts.c (alloc_use_cost_map): Use bitmap_count_bits
8646         and ceil_log2.
8647         (get_use_iv_cost): Terminate hashtable walk when coming across
8648         an empty entry.
8650 2013-02-20  Igor Zamyatin  <igor.zamyatin@intel.com>
8652         * config/i386/i386.c (initial_ix86_tune_features): Turn on fp
8653         reassociation for avx2 targets.
8655 2012-02-19  Edgar E. Iglesias  <edgar.iglesias@gmail.com>
8657         * config/microblaze/microblaze.c: microblaze_has_clz = 0
8658         Add version check for v8.10.a to enable microblaze_has_clz
8659         * config/microblaze/microblaze.h: Add TARGET_HAS_CLZ as combined
8660         version and TARGET_PATTERN_COMPARE check
8661         * config/microblaze/microblaze.md: New clzsi2 instruction
8663 2012-02-19  Edgar E. Iglesias  <edgar.iglesias@gmail.com>
8665         * config/microblaze/microblaze.md (call_value_intern): Check symbol is
8666         function before branching.
8668 2012-02-19  Andrey Belevantsev  <abel@ispras.ru>
8670         * sel-sched-dump.c (dump_insn_rtx_flags): Explicitly set
8671         DUMP_INSN_RTX_UID.
8672         (dump_insn_rtx_1): Pass PATTERN (insn) to str_pattern_slim.
8674 2012-02-19  Andrey Belevantsev  <abel@ispras.ru>
8676         PR middle-end/55889
8677         * sel-sched.c: Include ira.h.
8678         (implicit_clobber_conflict_p): New function.
8679         (moveup_expr): Use it.
8680         * Makefile.in (sel-sched.o): Depend on ira.h.
8682 2013-02-19  Richard Biener  <rguenther@suse.de>
8684         PR tree-optimization/56384
8685         * tree-ssa-sccvn.h (struct vn_phi_s): Add type member.
8686         (vn_hash_type): Split out from ...
8687         (vn_hash_constant_with_type): ... here.
8688         * tree-ssa-sccvn.c (vn_phi_compute_hash): Use vn_hash_type.
8689         (vn_phi_eq): Compare types from vn_phi_s structure.
8690         (vn_phi_lookup): Populate vn_phi_s type.
8691         (vn_phi_insert): Likewise.
8693 2013-02-19  Jakub Jelinek  <jakub@redhat.com>
8695         PR tree-optimization/56350
8696         * tree-vect-loop.c (vectorizable_reduction): If orig_stmt, return false
8697         if haven't found reduction or nested cycle operand, rather than
8698         asserting we must find it.
8700         PR tree-optimization/56381
8701         * tree-ssa-pre.c (create_expression_by_pieces): Fix up last argument
8702         to fold_build3.
8704 2013-02-18  Aldy Hernandez  <aldyh@redhat.com>
8705             Jakub Jelinek  <jakub@redhat.com>
8707         PR target/52555
8708         * genopinit.c (raw_optab_handler): Use this_fn_optabs.
8709         (swap_optab_enable): Same.
8710         (init_all_optabs): Use argument instead of global.
8711         * tree.h (struct tree_optimization_option): New field target_optabs.
8712         * expr.h (init_all_optabs): Add argument to prototype.
8713         (TREE_OPTIMIZATION_OPTABS): New.
8714         (save_optabs_if_changed): Protoize.
8715         * optabs.h: Declare this_fn_optabs.
8716         * optabs.c (save_optabs_if_changed): New.
8717         Declare this_fn_optabs.
8718         (init_optabs): Add argument to init_all_optabs() call.
8719         * function.c (invoke_set_current_function_hook): Handle per
8720         function optabs.
8721         * function.h (struct function): New field optabs.
8722         * config/mips/mips.c (mips_set_mips16_mode): Handle when
8723         optimization_current_node has changed.
8724         * target-globals.h (save_target_globals_default_opts): Protoize.
8725         * target-globals.c (save_target_globals_default_opts): New.
8727 2013-02-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8729         PR target/56347
8730         * config/pa/pa.c (pa_conditional_register_usage): On HP-UX, mark
8731         registers %fr12 and %fr12R as call used.
8733         PR target/56214
8734         * config/pa/predicates.md (base14_operand): Except for BLKmode, QImode
8735         and HImode, require all displacements to be an integer multiple of
8736         their mode size.
8737         * config/pa/pa.c (pa_legitimate_address_p): For REG+BASE addresses,
8738         only allow QImode and HImode when reload is in progress and strict is
8739         true.  Likewise for symbolic addresses.  Use base14_operand to check
8740         displacements in REG+BASE addresses.
8742 2013-02-18  Richard Biener  <rguenther@suse.de>
8744         PR tree-optimization/56366
8745         * tree-vect-loop.c (get_initial_def_for_induction): Properly
8746         handle sign-conversion of outer-loop initial induction value.
8748 2013-02-18  Richard Biener  <rguenther@suse.de>
8750         PR middle-end/56349
8751         * cfghooks.c (merge_blocks): If we merge a latch into another
8752         block adjust references to it.
8753         * cfgloop.c (flow_loops_find): Reset latch before recomputing it.
8754         (verify_loop_structure): Verify that a recorded latch is in fact
8755         a latch.
8757 2013-02-18  Richard Biener  <rguenther@suse.de>
8759         PR tree-optimization/56321
8760         * tree-ssa-reassoc.c (propagate_op_to_single_use): Properly
8761         order SSA name release and virtual operand unlinking.
8763 2013-02-17  Edgar E. Iglesias  <edgar.iglesias@gmail.com>
8765         * config/microblaze/microblaze.md (save_stack_block): Define.
8766         (restore_stack_block): Likewise.
8768 2013-02-16  Edgar E. Iglesias  <edgar.iglesias@gmail.com>
8770         * config/microblaze/linux.h (TARGET_SUPPORTS_PIC): Define as 1.
8771         * config/microblaze/microblaze.h (TARGET_SUPPORTS_PIC): Define as 1.
8772         * config/microblaze/microblaze.c (microblaze_option_override):
8773         Bail out early for PIC modes when target does not support PIC.
8775 2013-02-16  Edgar E. Iglesias  <edgar.iglesias@gmail.com>
8777         * config/microblaze/microblaze.c (microblaze_asm_trampoline_template):
8778         Replace with a microblaze version.
8779         (microblaze_trampoline_init): Adapt for microblaze.
8780         * config/microblaze/microblaze.h (TRAMPOLINE_SIZE): Adapt for
8781         microblaze.
8783 2013-02-16  Jakub Jelinek  <jakub@redhat.com>
8784             Dodji Seketeli  <dodji@redhat.com>
8786         PR asan/56330
8787         * asan.c (get_mem_refs_of_builtin_call): White space and style
8788         cleanup.
8789         (instrument_mem_region_access): Do not forget to always put
8790         instrumentation of the of 'base' and 'base + len' in a "if (len !=
8791         0) statement, even for cases where either 'base' or 'base + len'
8792         are not instrumented -- because they have been previously
8793         instrumented.  Simplify the logic by putting all the statements
8794         instrument 'base + len' inside a sequence, and then insert that
8795         sequence right before the current insertion point.  Then, to
8796         instrument 'base + len', just get an iterator on that statement.
8797         And do not forget to update the pointer to iterator the function
8798         received as argument.
8800 2013-02-15  Vladimir Makarov  <vmakarov@redhat.com>
8802         PR rtl-optimization/56348
8803         * lra-assigns.c (reload_pseudo_compare_func): Prefer bigger pseudos.
8805 2013-02-15  Steven Bosscher  <steven@gcc.gnu.org>
8807         * graph.c (start_graph_dump): Print dumpfile base as digraph label.
8808         (clean_graph_dump_file): Pass base to start_graph_dump.
8810 2013-02-14  Richard Henderson  <rth@redhat.com>
8812         PR target/55941
8813         * lower-subreg.c (simple_move): Check dest mode instead of src mode.
8815 2013-02-14  Steven Bosscher  <steven@gcc.gnu.org>
8817         * collect2-aix.h: Define F_LOADONLY.
8819 2013-02-14  Richard Biener  <rguenther@suse.de>
8821         PR lto/50494
8822         * varasm.c (output_constant_def_1): Get the decl representing
8823         the constant as argument.
8824         (output_constant_def): Wrap output_constant_def_1.
8825         (make_decl_rtl): Use output_constant_def_1 with the decl
8826         representing the constant.
8827         (build_constant_desc): Optionally re-use a decl already
8828         representing the constant.
8829         (tree_output_constant_def): Adjust.
8831 2013-02-14  Dodji Seketeli  <dodji@redhat.com>
8833         Fix an asan crash
8834         * asan.c (instrument_builtin_call):  Really put the length of the
8835         second source argument into src1_len.
8837 2013-02-13  Jakub Jelinek  <jakub@redhat.com>
8839         * asan.c (create_cond_insert_point): Add create_then_fallthru_edge
8840         argument.  If it is false, don't create edge from then_bb to
8841         fallthru_bb.
8842         (insert_if_then_before_iter): Pass true to it.
8843         (build_check_stmt): Pass false to it.
8844         (transform_statements): Flush hash table only on extended basic
8845         block boundaries, rather than at the beginning of every bb.
8846         Don't flush hash table on nonfreeing_call_p calls.
8847         * tree-flow.h (nonfreeing_call_p): New prototype.
8848         * tree-ssa-phiopt.c (nonfreeing_call_p): No longer static.
8850 2013-02-13  David S. Miller  <davem@davemloft.net>
8852         * expmed.c (expand_shift_1): Only strip scalar integer subregs.
8854 2013-02-13  Vladimir Makarov  <vmakarov@redhat.com>
8856         PR target/56184
8857         * ira.c (max_regno_before_ira): Move from ...
8858         (ira): ... here.
8859         (fix_reg_equiv_init): Use max_regno_before_ira instead of
8860         vec_safe_length.
8862 2013-02-13  Jakub Jelinek  <jakub@redhat.com>
8864         * config/i386/i386.c (ix86_asan_shadow_offset): Revert last change.
8866 2013-02-13  Richard Biener  <rguenther@suse.de>
8868         PR lto/56295
8869         * gimple-streamer-out.c (output_gimple_stmt): Undo wrapping
8870         globals in MEM_REFs.
8872 2013-02-13  Richard Biener  <rguenther@suse.de>
8874         * loop-init.c (loop_optimizer_init): Clear loop state when
8875         re-initializing preserved loops.
8876         * loop-unswitch.c (unswitch_single_loop): Return whether
8877         we unswitched the loop.  Do not verify loop state here.
8878         (unswitch_loops): When we unswitched a loop discover new
8879         loops.
8881 2013-02-13  Kostya Serebryany  <kcc@google.com>
8883         * config/i386/i386.c: Use 0x7fff8000 as asan_shadow_offset on x86_64
8884         linux.
8885         * sanitizer.def: Rename __asan_init to __asan_init_v1.
8887 2013-02-12  Dodji Seketeli  <dodji@redhat.com>
8889         Avoid instrumenting duplicated memory access in the same basic block
8890         * Makefile.in (asan.o): Add new dependency on hash-table.h
8891         * asan.c (struct asan_mem_ref, struct mem_ref_hasher): New types.
8892         (asan_mem_ref_init, asan_mem_ref_get_end, get_mem_ref_hash_table)
8893         (has_stmt_been_instrumented_p, empty_mem_ref_hash_table)
8894         (free_mem_ref_resources, has_mem_ref_been_instrumented)
8895         (has_stmt_been_instrumented_p, update_mem_ref_hash_table)
8896         (get_mem_ref_of_assignment): New functions.
8897         (get_mem_refs_of_builtin_call): Extract from
8898         instrument_builtin_call and tweak a little bit to make it fit with
8899         the new signature.
8900         (instrument_builtin_call): Use the new
8901         get_mem_refs_of_builtin_call.  Use gimple_call_builtin_p instead
8902         of is_gimple_builtin_call.
8903         (instrument_derefs, instrument_mem_region_access): Insert the
8904         instrumented memory reference into the hash table.
8905         (maybe_instrument_assignment): Renamed instrument_assignment into
8906         this, and change it to advance the iterator when instrumentation
8907         actually happened and return true in that case.  This makes it
8908         homogeneous with maybe_instrument_assignment, and thus give a
8909         chance to callers to be more 'regular'.
8910         (transform_statements): Clear the memory reference hash table
8911         whenever we enter a new BB, when we cross a function call, or when
8912         we are done transforming statements.  Use
8913         maybe_instrument_assignment instead of instrumentation.  No more
8914         need to special case maybe_instrument_assignment and advance the
8915         iterator after calling it; it's now handled just like
8916         maybe_instrument_call.  Update comment.
8918 2013-02-13  Richard Biener  <rguenther@suse.de>
8920         * config/mn10300/mn10300.c (mn10300_scan_for_setlb_lcc):
8921         Fix loop discovery code.
8923 2013-02-12  Vladimir Makarov  <vmakarov@redhat.com>
8925         PR inline-asm/56148
8926         * lra-constraints.c (process_alt_operands): Match early clobber
8927         operand with itself.  Check conflicts with earlyclobber only if
8928         the operand is not reloaded.  Prefer to reload conflicting operand
8929         if earlyclobber and matching operands are the same.
8931 2013-02-12  Richard Biener  <rguenther@suse.de>
8933         PR lto/56297
8934         * lto-streamer-out.c (write_symbol): Do not output symbols
8935         for hard register variables.
8937 2013-02-12  Georg-Johann Lay  <avr@gjlay.de>
8939         PR target/54222
8940         * config/avr/avr-dimode.md (umulsidi3, mulsidi3): New expanders.
8941         (umulsidi3_insn, mulsidi3_insn): New insns.
8943 2013-02-12  Christophe Lyon  <christophe.lyon@linaro.org>
8945         * config/arm/arm-protos.h (struct cpu_vec_costs): New struct type.
8946         (struct tune_params): Add vec_costs field.
8947         * config/arm/arm.c (arm_builtin_vectorization_cost)
8948         (arm_add_stmt_cost): New functions.
8949         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST)
8950         (TARGET_VECTORIZE_ADD_STMT_COST): Define.
8951         (arm_default_vec_cost): New struct of type cpu_vec_costs.
8952         (arm_slowmul_tune, arm_fastmul_tune, arm_strongarm_tune)
8953         (arm_xscale_tune, arm_9e_tune, arm_v6t2_tune, arm_cortex_tune)
8954         (arm_cortex_a15_tune, arm_cortex_a5_tune, arm_cortex_a9_tune)
8955         (arm_v6m_tune, arm_fa726te_tune): Define new vec_costs field.
8957 2013-02-12  Richard Biener  <rguenther@suse.de>
8959         PR lto/56295
8960         * gimple-streamer-in.c (input_gimple_stmt): Strip MEM_REFs off
8961         decls again if possible.
8963 2013-02-12  Richard Biener  <rguenther@suse.de>
8965         PR middle-end/56288
8966         * tree-ssa.c (verify_ssa_name): Fix check, move
8967         SSA_NAME_IN_FREE_LIST check up.
8969 2013-02-12  Jakub Jelinek  <jakub@redhat.com>
8970             Steven Bosscher   <steven@gcc.gnu.org>
8972         PR rtl-optimization/56151
8973         * optabs.c (add_equal_note): Don't return 0 if target is a MEM,
8974         equal to op0 or op1, and last_insn pattern is CODE operation
8975         with MEM dest and one of the operands matches that MEM.
8977 2013-02-11  Sriraman Tallam  <tmsriramgoogle.com>
8979         * doc/extend.texi: Document Function Multiversioning and "default"
8980         parameter string to target attribute.
8981         * config/i386/i386.c (get_builtin_code_for_version): Return 0 if
8982         target attribute parameter is "default".
8983         (ix86_compare_version_priority): Remove checks for target attribute.
8984         (ix86_mangle_function_version_assembler_name): Change error to sorry.
8985         Remove check for target attribute equal to NULL. Add assert.
8986         (ix86_generate_version_dispatcher_body): Change error to sorry.
8988 2013-02-11  Iain Sandoe  <iain@codesourcery.com>
8989             Jack Howarth  <howarth@bromo.med.uc.edu>
8990             Patrick Marlier  <patrick.marlier@gmail.com>
8992         PR libitm/55693
8993         * config/darwin.h: Replace ENDFILE_SPEC with TM_DESTRUCTOR and
8994         define ENDFILE_SPEC as TM_DESTRUCTOR.
8995         * config/i386/darwin.h (ENDFILE_SPEC): Use TM_DESTRUCTOR.
8997 2013-02-11  Alexander Potapenko  <glider@google.com>
8998             Jack Howarth  <howarth@bromo.med.uc.edu>
8999             Jakub Jelinek  <jakub@redhat.com>
9001         PR sanitizer/55617
9002         * config/darwin.c (cdtor_record): Rename ctor_record.
9003         (sort_cdtor_records): Rename sort_ctor_records.
9004         (finalize_dtors): New routine to sort destructors by
9005         priority before use in assemble_integer.
9006         (machopic_asm_out_destructor): Use finalize_dtors if needed.
9008 2013-02-11  Uros Bizjak  <ubizjak@gmail.com>
9010         PR rtl-optimization/56275
9011         * simplify-rtx.c (avoid_constant_pool_reference): Check that
9012         offset is non-negative and less than cmode size before
9013         calling simplify_subreg.
9015 2013-02-11  Richard Biener  <rguenther@suse.de>
9017         PR tree-optimization/56264
9018         * cfgloop.h (fix_loop_structure): Adjust prototype.
9019         * loop-init.c (fix_loop_structure): Return the number of
9020         newly discovered loops.
9021         * tree-cfgcleanup.c (repair_loop_structures): When new loops
9022         are discovered, do a full loop-closed SSA rewrite.
9024 2013-02-11  Richard Biener  <rguenther@suse.de>
9026         PR tree-optimization/56273
9027         * tree-vrp.c (simplify_cond_using_ranges): Disable for the
9028         first VRP run.
9029         (check_array_ref): Fix missing newline in dumps.
9030         (search_for_addr_array): Likewise.
9032 2013-02-09  David Edelsohn  <dje.gcc@gmail.com>
9034         * config/rs6000/aix61.h (OS_MISSING_ALTIVEC): Undefine.
9036 2013-02-09  Jakub Jelinek  <jakub@redhat.com>
9038         PR target/56256
9039         * config/rs6000/rs6000.h (ASSEMBLER_DIALECT): Define.
9041 2013-02-08  Vladimir Makarov  <vmakarov@redhat.com>
9043         PR rtl-optimization/56246
9044         * lra-constraints.c (simplify_operand_subreg): Try to reuse
9045         reload pseudo.
9046         * lra.c (lra): Clear lra_optional_reload_pseudos only when all
9047         constraints are satisfied.
9049 2013-02-08  Jeff Law  <law@redhat.com>
9051         PR debug/53948
9052         * emit-rtl.c (reg_is_parm_p): New function.
9053         * regs.h (reg_is_parm_p): New prototype.
9054         * ira-conflicts.c (ira_build_conflicts): Allow parameters in
9055         callee-clobbered registers.
9057 2013-02-08  Michael Meissner  <meissner@linux.vnet.ibm.com>
9059         PR target/56043
9060         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_libmass):
9061         If there is no implicit builtin declaration, just return NULL.
9063 2013-02-08  Uros Bizjak  <ubizjak@gmail.com>
9065         * config/i386/sse.md (FMAMODEM): New mode iterator.
9066         (fma<mode>4, fms<mode>4, fnma<mode>4, fnms<mode>4): Use FMAMODEM
9067         mode iterator. Do not use TARGET_SSE_MATH in insn constraint.
9069 2013-02-08  Uros Bizjak  <ubizjak@gmail.com>
9071         * config/i386/gnu-user.h (TARGET_CAN_SPLIT_STACK): Define only
9072         when HAVE_GAS_CFI_PERSONALITY_DIRECTIVE is set.
9073         * config/i386/gnu-user64.h (TARGET_CAN_SPLIT_STACK): Ditto.
9075 2013-02-08  Edgar E. Iglesias  <edgar.iglesias@gmail.com>
9077         * config.gcc (microblaze*-linux*): Add TARGET_BIG_ENDIAN_DEFAULT.
9078         (microblaze*-*-elf): Likewise.
9079         * config/microblaze/linux.h: Add -mbig-endian / -mlittle-endian to
9080         LINK_SPEC.
9081         * config/microblaze/microblaze-c.c: Add builtin defines for
9082         _LITTLE_ENDIAN and _BIG_ENDIAN.
9083         * config/microblaze/microblaze.h: Add TARGET_ENDIAN_DEFAULT and
9084         add to TARGET_DEFAULT flags.
9085         Expand ASM_SPEC and LINK_SPEC.
9086         Update BYTES_BIG_ENDIAN and WORDS_BIG_ENDIAN.
9087         * config/microblaze/microblaze.md: Update extendsidi2 and
9088         movdi_internal instructions to use low-order / high-order reg
9089         print_operands.
9090         * config/microblaze/microblaze.opt: Add mbig-endian and mlittle-endian
9091         options and inversemask / mask of LITTLE_ENDIAN.
9092         * config/microblaze/t-microblaze: Expand multilib options to
9093         include mlittle-endian (le) and update exceptions patterns.
9095 2013-02-08  Jakub Jelinek  <jakub@redhat.com>
9097         PR rtl-optimization/56195
9098         * lra-constraints.c (get_reload_reg): Don't reuse regs
9099         if they have smaller mode than requested, if they have
9100         wider mode than requested, try to return a SUBREG.
9102         PR tree-optimization/56250
9103         * fold-const.c (extract_muldiv_1) <case NEGATE_EXPR>: Don't optimize
9104         if type is unsigned and code isn't MULT_EXPR.
9106 2013-02-08  Georg-Johann Lay  <avr@gjlay.de>
9108         PR tree-optimization/56064
9109         * fixed-value.c (fixed_from_double_int): Sign/zero extend payload
9110         bits according to mode.
9111         * fixed-value.h (fixed_from_double_int)
9112         (const_fixed_from_double_int): Adjust comments.
9114 2013-02-08  Richard Biener  <rguenther@suse.de>
9116         PR lto/56231
9117         * lto-streamer.h (struct data_in): Remove current_file, current_line
9118         and current_col members.
9119         * lto-streamer-out.c (lto_output_location): Stream changed bits
9120         en-block for efficiency.
9121         * lto-streamer-in.c (clear_line_info): Remove.
9122         (lto_input_location): Cache current file, line and column
9123         globally via local statics.  Read changed bits en-block.
9124         (input_function): Do not call clear_line_info.
9125         (lto_read_body): Likewise.
9126         (lto_input_toplevel_asms): Likewise.
9128 2013-02-08  Michael Matz  <matz@suse.de>
9130         PR tree-optimization/52448
9131         * tree-ssa-phiopt.c (struct name_to_bb): Add phase member.
9132         (nt_call_phase): New static.
9133         (add_or_mark_expr): Only mark accesses with newer phase than any
9134         call seen.
9135         (nonfreeing_call_p): New.
9136         (nt_init_block): Update nt_call_phase, mark blocks as visited.
9137         (nt_fini_block): Keep blocks marked as visited.
9138         (get_non_trapping): Initialize nt_call_phase, and reset aux pointer.
9140 2013-02-08  Richard Biener  <rguenther@suse.de>
9142         * ira.c (ira): Free broken dominator information.
9144 2013-02-08  Uros Bizjak  <ubizjak@gmail.com>
9146         * config/i386/i386.c (ix86_spill_class): Use INTEGER_CLASS_P macro.
9148 2013-02-08  Marek Polacek  <polacek@redhat.com>
9150         * cfgloop.c (verify_loop_structure): Add more checking of headers.
9152 2013-02-08  Richard Biener  <rguenther@suse.de>
9154         PR middle-end/56181
9155         * cfgloop.h (flow_loops_find): Adjust.
9156         (bb_loop_header_p): Declare.
9157         * cfgloop.c (bb_loop_header_p): New function split out from ...
9158         (flow_loops_find): ... here.  Adjust function signature,
9159         support incremental loop structure update.
9160         (verify_loop_structure): Cleanup.  Verify a loop is a loop.
9161         * cfgloopmanip.c (fix_loop_structure): Move ...
9162         * loop-init.c (fix_loop_structure): ... here.
9163         (apply_loop_flags): Split out from ...
9164         (loop_optimizer_init): ... here.
9165         (fix_loop_structure): Use apply_loop_flags.  Use flow_loops_find
9166         in incremental mode, only remove dead loops here.
9168 2013-02-08  Georg-Johann Lay  <avr@gjlay.de>
9170         PR target/54222
9171         * config/avr/avr.md (unspec) <UNSPEC_ROUND>: Add.
9172         * config/avr/avr-fixed.md (ALL4QA, ALL124QA): New mode iterators.
9173         (round<mode>3, round<mode>3_const): New expanders for fixed-mode.
9174         (*round<mode>3.libgcc): New insns for fixed-modes.
9175         * config/avr/builtins.def (ABSxx): Use a non-NULL LIBNAME.
9176         (ROUNDxx, COUNTLSxx, BITSxx, xxBITS): New DEF_BUILTINs.
9177         (ROUNDFX, COUNTLSFX, ABSFX): New DEF_BUILTINs.
9178         * config/avr/stdfix.h (absFX, bitsFX, FXbits): Remove inline
9179         implementations.  Define to __builtin_avr_absFX,
9180         __builtin_avr_bitsFX, __builtin_avr_FXbits, respectively.
9181         (roundFX, countlsFX): Define to __builtin_avr_roundFX,
9182         __builtin_avr_countlsFX, respectively.
9183         * config/avr/avr-c.c (target.h): Include it.
9184         (enum avr_builtin_id): New enum.
9185         (avr_resolve_overloaded_builtin): New static function.
9186         (avr_register_target_pragmas): Use it to set
9187         targetm.resolve_overloaded_builtin.
9188         * config/avr/avr.c (avr_init_builtins): Supply myriads of local
9189         tree nodes used by DEF_BUILTIN.
9190         (avr_expand_builtin) <AVR_BUILTIN_ROUNDxx>: Sanity-check them.
9191         (avr_fold_builtin) <AVR_BUILTIN_BITSxx>: Fold to VIEW_COVERT_EXPR.
9192         <AVR_BUILTIN_xxBITS>: Same.
9194 2013-02-08  Richard Biener  <rguenther@suse.de>
9196         * cfgloop.c (verify_loop_structure): Properly handle
9197         a loop exiting to another loop header.
9198         * ira-int.h (ira_loops): Remove.
9199         * ira.c (ira_loops): Remove.
9200         (ira): Use loop_optimizer_init and loop_optimizer_finalize.
9201         (do_reload): Use loop_optimizer_finalize.
9202         * ira-build.c (create_loop_tree_nodes): Use get_loops and
9203         number_of_loops to access the loop tree.
9204         (more_one_region_p): Likewise.
9205         (finish_loop_tree_nodes): Likewise.
9206         (rebuild_regno_allocno_maps): Likewise.
9207         (mark_loops_for_removal): Likewise.
9208         (mark_all_loops_for_removal): Likewise.
9209         (remove_unnecessary_regions): Likewise.
9210         (ira_build): Likewise.
9211         * ira-emit.c (setup_entered_from_non_parent_p): Likewise.
9213 2013-02-08  Richard Biener  <rguenther@suse.de>
9215         * Makefile.in (tree-tailcall.o): Add $(CFGLOOP_H) dependency.
9216         * ipa-pure-const.c (analyze_function): Avoid calling
9217         mark_irreducible_loops twice.
9218         * tree-tailcall.c (tree_optimize_tail_calls_1): Mark loops for fixup.
9220 2013-02-07  David S. Miller  <davem@davemloft.net>
9222         * dwarf2out.c (based_loc_descr): Perform leaf register remapping
9223         on 'reg'.
9224         * var-tracking.c (vt_add_function_parameter): Test the presence of
9225         HAVE_window_save properly and do not remap argument registers when
9226         we have a leaf function.
9228 2013-02-07  Uros Bizjak  <ubizjak@gmail.com>
9230         PR bootstrap/56227
9231         * ggc-page.c (ggc_print_statistics): Use HOST_LONG_LONG_FORMAT
9232         instead of "ll".
9233         * config/i386/i386.c (ix86_print_operand): Ditto.
9235 2013-02-07  Vladimir Makarov  <vmakarov@redhat.com>
9237         * lra-constraints.c (process_alt_operands): Fix recently added comment.
9239 2013-02-07  Vladimir Makarov  <vmakarov@redhat.com>
9241         PR rtl-optimization/56225
9242         * lra-constraints.c (process_alt_operands): Check that reload hard
9243         reg can hold value for strict_low_part.
9245 2013-02-07  Jakub Jelinek  <jakub@redhat.com>
9247         PR debug/56154
9248         * dwarf2out.c (dwarf2_debug_hooks): Set end_function hook to
9249         dwarf2out_end_function.
9250         (in_first_function_p, maybe_at_text_label_p,
9251         first_loclabel_num_not_at_text_label): New variables.
9252         (dwarf2out_var_location): In the first function find out
9253         lowest loclabel_num N where .LVLN is known not to be equal to .Ltext0.
9254         (find_empty_loc_ranges_at_text_label, dwarf2out_end_function): New
9255         functions.
9257 2013-02-07  Eric Botcazou  <ebotcazou@adacore.com>
9259         PR rtl-optimization/56178
9260         * cse.c (cse_insn): Do not create a REG_EQUAL note if the source is a
9261         SUBREG of a register.  Tidy up related block of code.
9262         * fwprop.c (forward_propagate_and_simplify): Do not create a REG_EQUAL
9263         note if the source is a register or a SUBREG of a register.
9265 2013-02-07  Jakub Jelinek  <jakub@redhat.com>
9267         PR target/56228
9268         * config/rs6000/rs6000.md (ptrm): New mode attr.
9269         (call_indirect_aix<ptrsize>, call_indirect_aix<ptrsize>_nor11,
9270         call_value_indirect_aix<pttrsize>,
9271         call_value_indirect_aix<pttrsize>_nor11): Use <ptrm> instead of
9272         m in constraints.
9274 2013-02-07  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
9276         * collect2.c (main): Set aix64_flag for -G and -bsvr4 too, disable
9277         if -bnortl. Convert to strcmp and strncmp.
9279 2013-02-07  Alan Modra  <amodra@gmail.com>
9281         PR target/54009
9282         * config/rs6000/rs6000.c (mem_operand_gpr): Check that LO_SUM
9283         addresses won't wrap when offsetting.
9284         (rs6000_secondary_reload): Provide secondary reloads needed for
9285         wrapping LO_SUM addresses.
9287 2013-02-06  Thomas Schwinge  <thomas@codesourcery.com>
9289         * config/gnu.h (GNU_USER_TARGET_OS_CPP_BUILTINS): Never define
9290         MACH, just __MACH__.
9292 2013-02-06  Richard Biener  <rguenther@suse.de>
9294         * tracer.c (tracer): Mark loops with LOOPS_NEED_FIXUP
9295         instead of calling fix_loop_structure.
9297 2013-02-06  Jakub Jelinek  <jakub@redhat.com>
9299         PR middle-end/56217
9300         * omp-low.c (use_pointer_for_field): Return false if
9301         lower_send_shared_vars doesn't generate any copy-out code.
9303 2013-02-06  Tom de Vries  <tom@codesourcery.com>
9305         PR rtl-optimization/56131
9306         * cfgrtl.c (delete_insn): Use NOTE_BASIC_BLOCK instead of BLOCK_FOR_INSN
9307         to get the bb of a NOTE_INSN_BASIC_BLOCK.  Handle the case that the bb
9308         of the label is NULL.  Add comment.
9310 2013-02-05  Jakub Jelinek  <jakub@redhat.com>
9312         * tree.h (struct tree_decl_with_vis): Remove thread_local field.
9314         PR sanitizer/55374
9315         * config/gnu-user.h (LIBTSAN_EARLY_SPEC): Define.
9316         (STATIC_LIBTSAN_LIBS): Likewise.
9317         * gcc.c (ADD_STATIC_LIBTSAN_LIBS, LIBTSAN_EARLY_SPEC): Define.
9318         (LIBTSAN_SPEC): Add ADD_STATIC_LIBTSAN_LIBS, if LIBTSAN_EARLY_SPEC
9319         is defined, don't add anything else beyond that.
9320         (SANITIZER_EARLY_SPEC, SANITIZER_SPEC): Define.
9321         (LINK_COMMAND_SPEC): Use them.
9323         PR tree-optimization/56205
9324         * tree-stdarg.c (check_all_va_list_escapes): Return true if
9325         there are any PHI nodes that set non-va_list_escape_vars SSA_NAME
9326         and some va_list_escape_vars SSA_NAME appears in some PHI argument.
9328 2013-02-05  Richard Biener  <rguenther@suse.de>
9330         PR tree-optimization/53342
9331         PR tree-optimization/53185
9332         * tree-vectorizer.h (vect_check_strided_load): Remove.
9333         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Do
9334         not disallow peeling for vectorized strided loads.
9335         (vect_check_strided_load): Make static and simplify.
9336         (vect_analyze_data_refs): Adjust.
9337         * tree-vect-stmts.c (vectorizable_load): Handle peeled loops
9338         correctly when vectorizing strided loads.
9340 2013-02-05  Richard Biener  <rguenther@suse.de>
9342         * doc/install.texi: Refer to ISL, not PPL.
9344 2013-02-05  Jan Hubicka  <jh@suse.cz>
9346         PR tree-optimization/55789
9347         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): Drop to 1.
9349 2013-02-05  Jan Hubicka  <jh@suse.cz>
9351         PR tree-optimization/55789
9352         * cgraphclones.c (cgraph_remove_node_and_inline_clones): Remove
9353         the dead call anyway.
9355 2013-02-05  Eric Botcazou  <ebotcazou@adacore.com>
9357         PR sanitizer/55374
9358         * config/gnu-user.h (LIBASAN_EARLY_SPEC): Add missing guard.
9360 2013-02-04  Alexander Potapenko  <glider@google.com>
9361             Jack Howarth  <howarth@bromo.med.uc.edu>
9362             Jakub Jelinek  <jakub@redhat.com>
9364         PR sanitizer/55617
9365         * config/darwin.c (sort_ctor_records): Stabilized qsort
9366         on constructor priority by using original position.
9367         (finalize_ctors): New routine to sort constructors by
9368         priority before use in assemble_integer.
9369         (machopic_asm_out_constructor): Use finalize_ctors if needed.
9371 2013-02-04  Jakub Jelinek  <jakub@redhat.com>
9373         PR libstdc++/54314
9374         * config/i386/winnt.c (i386_pe_assemble_visibility): Don't warn
9375         about visibility on artificial decls.
9376         * config/sol2.c (solaris_assemble_visibility): Likewise.
9378 2013-02-04  Kai Tietz  <ktietz@redhat.com>
9380         PR target/56186
9381         * config/i386/i386.c (function_value_ms_64): Add additional valtype
9382         argument and improve checking of return-argument types for 16-byte
9383         modes.
9384         (ix86_function_value_1): Add additional valtype argument on call
9385         of function_value_64.
9386         (return_in_memory_ms_64): Sync 16-byte sized mode handling with
9387         handling infunction_value_64 function.
9389 2013-02-04  Matthew Gretton-Dann  <matthew.gretton-dann@linaro.org>
9391         * reload.c (subst_reloads): Fix DEBUG_RELOAD build issue.
9393 2013-02-04  Richard Biener  <rguenther@suse.de>
9395         PR tree-optimization/56188
9396         * tree-ssa-structalias.c (label_visit): Consider case with
9397         initially non-empty points-to set.
9398         (perform_var_substitution): Dump node mapping and clean up.
9400 2013-02-04  Richard Guenther  <rguenther@suse.de>
9402         PR lto/56168
9403         * lto-symtab.c (lto_symtab_merge_decls_1): Make non-builtin
9404         node prevail as last resort.
9405         (lto_symtab_merge_decls): Remove guard on LTRANS here.
9406         (lto_symtab_prevailing_decl): Builtins are their own prevailing decl.
9408 2013-02-04  Richard Biener  <rguenther@suse.de>
9410         PR tree-optimization/56113
9411         * tree-ssa-structalias.c (equiv_class_lookup, equiv_class_add):
9412         Merge into ...
9413         (equiv_class_lookup_or_add): ... this.
9414         (label_visit): Adjust and fix error in previous patch.
9415         (perform_var_substitution): Adjust.
9417 2013-02-03  Oleg Endo  <olegendo@gcc.gnu.org>
9419         * config/sh/divtab.c: Fix formatting and comments throughout the file.
9420         * config/sh/sh4-300.md: Likewise.
9421         * config/sh/sh4a.md: Likewise.
9422         * config/sh/constraints.md: Likewise.
9423         * config/sh/sh.md: Likewise.
9424         * config/sh/netbsd-elf.h: Likewise.
9425         * config/sh/predicates.md: Likewise.
9426         * config/sh/sh-protos.h: Likewise.
9427         * config/sh/ushmedia.h: Likewise.
9428         * config/sh/linux.h: Likewise.
9429         * config/sh/sh.c: Likewise.
9430         * config/sh/superh.h: Likewise.
9431         * config/sh/elf.h: Likewise.
9432         * config/sh/sh4.md: Likewise.
9433         * config/sh/sh.h: Likewise.
9435 2013-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9437         * config/pa/constraints.md: Adjust unused letters.  Change "T"
9438         constraint to match_test floating_point_store_memory_operand().
9439         * config/pa/predicates.md (reg_plus_base_memory_operand): New.
9440         (base14_operand): New.
9441         (floating_point_store_memory_operand): New.
9442         (integer_store_memory_operand): Revise to use base14_operand and
9443         reg_plus_base_memory_operand.
9444         (move_dest_operand): Allow symbolic_memory_operands.
9445         (symbolic_memory_operand): Check for LO_SOM.
9446         (symbolic_operand): Change default case to break.
9447         * config/pa/pa.md: Remove unamed DFmode and SFmode patterns to force
9448         CONST_DOUBLE values to be reloaded by putting them into memory when
9449         the destination is a floating point register.
9450         (movdf): Remove code to handle CONST_DOUBLE.
9451         (movsf): Likewise.
9452         (reload_indf_r1): New.
9453         (reload_insf_r1): New.
9454         Consistently use "Q" and "T" constraints with integer and floating
9455         point move instructions, respectively.
9456         (movdi): Remove FAIL.
9457         Change predicate for source operand unamed DImode move from
9458         general_operand to move_src_operand.
9459         (umulsidi3): Change predicate for destination operand to
9460         register_operand.
9461         Likewise for similar unamed patterns.
9462         * config/pa/pa-protos.h (pa_legitimize_reload_address): Declare.
9463         * config/pa/pa.c (pa_symbolic_expression_p): Remove extra parenthesis.
9464         (hppa_legitimize_address): Simplify mask calculation.
9465         (pa_emit_move_sequence): Revised handling of secondary reloads from
9466         REG+D addresses for floating point loads and stores.  Directly handle
9467         loading CONST0_RTX (mode) to a floating point register.
9468         (pa_secondary_reload): Handle reloading DF and SFmode constant values
9469         to floating point registers.  Don't restrict secondary reloads to
9470         floating point registers to integer modes.  Revise some comments and
9471         cleanup some code.
9472         (TARGET_LEGITIMATE_ADDRESS_P): Define.
9473         (pa_legitimate_address_p): New.
9474         (pa_legitimize_reload_address): New.
9475         * config/pa/pa.h (STRICT_REG_OK_FOR_INDEX_P): New.
9476         (STRICT_REG_OK_FOR_BASE_P): New.
9477         (GO_IF_LEGITIMATE_ADDRESS): Delete.  Update some related comments.
9478         (LEGITIMIZE_RELOAD_ADDRESS): Revise to use pa_legitimize_reload_address.
9480 2013-02-03  David Edelsohn  <dje.gcc@gmail.com>
9481             Andrew Dixie  <andrewd@gentrack.com>
9483         * collect2.c (GCC_CHECK_HDR): Do not scan objects with F_LOADONLY
9484         flag set.
9486 2013-02-03  Richard Sandiford  <rdsandiford@googlemail.com>
9488         * expmed.c (extract_bit_field_1): Pass the full width of the
9489         structure to get_best_reg_extraction_insn.
9491 2013-02-01  David Edelsohn  <dje.gcc@gmail.com>
9493         PR target/54601
9494         * configure.ac (use_cxa_atexit): Add AIX.
9495         * configure: Regenerate.
9497         * config/rs6000/aix61.h (STARTFILE_SPEC): Add crtcxa.o.
9499 2013-02-01  Jakub Jelinek  <jakub@redhat.com>
9501         PR debug/54793
9502         * final.c (need_profile_function): New variable.
9503         (final_start_function): Drop ATTRIBUTE_UNUSED from first argument.
9504         If first of NOTE_INSN_BASIC_BLOCK or NOTE_INSN_FUNCTION_BEG
9505         is only preceeded by NOTE_INSN_VAR_LOCATION or NOTE_INSN_DELETED
9506         notes, targetm.asm_out.function_prologue doesn't emit anything,
9507         HAVE_prologue and profiler should be emitted before prologue,
9508         set need_profile_function instead of emitting it.
9509         (final_scan_insn): If need_profile_function, emit
9510         profile_function on the first NOTE_INSN_BASIC_BLOCK or
9511         NOTE_INSN_FUNCTION_BEG note.
9513 2013-02-01  Richard Henderson  <rth@redhat.com>
9515         * config/rs6000/rs6000.md (smulditi3): New.
9516         (umulditi3): New.
9518         * config/alpha/alpha.md (umulditi3): New.
9520 2013-02-01  David Edelsohn  <dje.gcc@gmail.com>
9522         * config/rs6000/xcoff.h (ASM_OUTPUT_ALIGNED_COMMON): Use floor_log2.
9523         (ASM_OUTPUT_ALIGNED_LOCAL): New.
9525 2013-02-01  Richard Biener  <rguenther@suse.de>
9527         PR tree-optimization/56113
9528         * tree-ssa-structalias.c (label_visit): Reduce work for
9529         single-predecessor nodes.
9531 2013-02-01  Eric Botcazou  <ebotcazou@adacore.com>
9533         * fold-const.c (make_range_step) <TRUTH_NOT_EXPR>: Bail out if the
9534         range isn't testing for zero.
9536 2013-01-31  Steven Bosscher  <steven@gcc.gnu.org>
9538         PR middle-end/56113
9539         * fwprop.c (fwprop_init): Set up loops without CFG modifications.
9541 2013-01-31  Hiroyuki Ono  <hiroyuki.ono.jc@renesas.com>
9542             Nick Clifton  <nickc@redhat.com>
9544         * config/v850/constraints.md (Q): Define as a memory constraint.
9545         * config/v850/predicates.md (label_ref_operand): New predicate.
9546         (e3v5_shift_operand): New predicate.
9547         (ior_operator): New predicate.
9548         * config/v850/t-v850: Add e3v5 multilib.
9549         * config/v850/v850-protos.h (v850_adjust_insn_length): Prototype.
9550         (v850_gen_movdi): Prototype.
9551         * config/v850/v850.c: Add support for e3v5 architecture.
9552         Rename all uses of TARGET_V850E || TARGET_V850E2_ALL to
9553         TARGET_V850E_UP.
9554         (construct_save_jarl): Add e3v5 long JARL support.
9555         (v850_adjust_insn_length): New function.  Adjust length of call
9556         insns when using e3v5 instructions.
9557         (v850_gen_movdi): New function: Generate instructions to move a
9558         DImode value.
9559         * config/v850/v850.h (TARGET_CPU_v850e3v5): Define.
9560         (CPP_SPEC): Define __v850e3v5__ as appropriate.
9561         (TARGET_USE_FPU): Enable for e3v5.
9562         (CONST_OK_FOR_W): New macro.
9563         (ADJUST_INSN_LENGTH): Define.
9564         * config/v850/v850.md (UNSPEC_LOOP): Define.
9565         (attr cpu): Add v850e3v5.
9566         Rename all uses of TARGET_V850E2 to TARGET_V850E2V3_UP.
9567         (movdi): New pattern.
9568         (movdi_internal): New pattern.
9569         (cbranchsf4): Conditionalize on TARGET_USE_FPU.
9570         (cbranchdf4): Conditionalize on TARGET_USE_FPU.
9571         (cstoresf4): Likewise.
9572         (cstoredf4): Likewise.
9573         (insv): New pattern.
9574         (rotlso3_a): New pattern.
9575         (rotlsi3_b): New pattern
9576         (rotlsi3_v850e3v5): New pattern.
9577         (doloop_begin): New pattern.
9578         (fix_loop_counter): New pattern.
9579         (doloop_end): New pattern.
9580         (branch_normal): Add e3v5 long branch support.
9581         (branch_invert): Likewise.
9582         (branch_z_normal): Likewise.
9583         (branch_z_invert): Likewise.
9584         (branch_nz_normal): Likewise.
9585         (branch_nz_invert): Likewise.
9586         (call_internal_short): Add e3v5 register-indirect JARL support.
9587         (call_internal_long): Likewise.
9588         (call_value_internal_short): Likewise.
9589         (call_value_internal_long): Likewise.
9590         * config/v850/v850.opt (mv850e3v5, mv850e2v4): New options.
9591         (mloop): New option.
9592         * config.gcc: Add support for configuring v840e3v5 target.
9593         * doc/invoke.texi: Document new v850 specific command line options.
9595 2013-01-31  Paul Koning  <ni1d@arrl.net>
9597         PR debug/55059
9598         PR debug/54508
9599         * dwarf2out.c (prune_unused_types_mark): Mark all of parent's
9600         children if parent is a class.
9601         (prune_unused_types_prune): Don't add DW_AT_declaration.
9603 2013-01-31  Richard Biener  <rguenther@suse.de>
9605         PR tree-optimization/56157
9606         * tree-vect-slp.c (vect_get_slp_defs): More thoroughly try to
9607         match up operand with SLP child.
9609 2013-01-31  Jason Merrill  <jason@redhat.com>
9611         PR debug/54410
9612         * dwarf2out.c (gen_struct_or_union_type_die): Always schedule template
9613         parameters the first time.
9614         (gen_scheduled_generic_parms_dies): Check completeness here.
9616 2013-01-31  Richard Biener  <rguenther@suse.de>
9618         PR middle-end/53073
9619         * common.opt (faggressive-loop-optimizations): New flag,
9620         enabled by default.
9621         * doc/invoke.texi (faggressive-loop-optimizations): Document.
9622         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Guard
9623         infer_loop_bounds_from_undefined by it.
9625 2013-01-31  Richard Biener  <rguenther@suse.de>
9627         PR tree-optimization/56150
9628         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Do not
9629         visit virtual operands.
9630         (find_uses_to_rename_bb): Likewise.
9632 2013-01-31  Richard Biener  <rguenther@suse.de>
9634         PR tree-optimization/56150
9635         * tree-ssa-tail-merge.c (gimple_equal_p): Properly handle
9636         mixed store non-store stmts.
9638 2013-01-30  Jakub Jelinek  <jakub@redhat.com>
9640         PR sanitizer/55374
9641         * gcc.c (LIBASAN_SPEC): Define just to ADD_STATIC_LIBASAN_LIBS if
9642         LIBASAN_EARLY_SPEC is defined.
9643         (LIBASAN_EARLY_SPEC): Define to empty string if not already defined.
9644         (LINK_COMMAND_SPEC): Add LIBASAN_EARLY_SPEC for -fsanitize=address,
9645         before %o.
9646         * config/gnu-user.h (LIBASAN_EARLY_SPEC): Define.
9648         PR c++/55742
9649         * config/i386/i386.c (ix86_valid_target_attribute_inner_p): Diagnose
9650         invalid args instead of ICEing on it.
9651         (ix86_valid_target_attribute_tree): Return error_mark_node if
9652         ix86_valid_target_attribute_inner_p failed.
9653         (ix86_valid_target_attribute_p): Return false only if
9654         ix86_valid_target_attribute_tree returned error_mark_node.  Allow
9655         target("default") attribute.
9656         (sorted_attr_string): Change argument from const char * to tree,
9657         merge in all target attribute arguments rather than just one.
9658         Formatting fix.  Use XNEWVEC instead of xmalloc and XDELETEVEC
9659         instead of free.  Avoid using strcat.
9660         (ix86_mangle_function_version_assembler_name): Mangle
9661         target("default") as if no target attribute is present.  Adjust
9662         sorted_attr_string caller.  Avoid leaking memory.  Use XNEWVEC
9663         instead of xmalloc and XDELETEVEC instead of free.
9664         (ix86_function_versions): Don't return true if one of the decls
9665         doesn't have target attribute.  If they don't and one of the decls
9666         is DECL_FUNCTION_VERSIONED, report an error.  Adjust
9667         sorted_attr_string caller.  Use XDELETEVEC instead of free.
9668         (ix86_supports_function_versions): Remove.
9669         (make_name): Fix up formatting.
9670         (make_dispatcher_decl): Remove resolver_name and its initialization.
9671         Avoid leaking memory.
9672         (is_function_default_version): Return true if there is
9673         target("default") attribute rather than no target attribute at all.
9674         (make_resolver_func): Avoid leaking memory.
9675         (ix86_generate_version_dispatcher_body): Likewise.
9676         (TARGET_OPTION_SUPPORTS_FUNCTION_VERSIONS): Remove.
9677         * target.def (supports_function_versions): Remove.
9678         * doc/tm.texi.in (SUPPORTS_FUNCTION_VERSIONS): Remove.
9679         * doc/tm.texi: Regenerated.
9681 2013-01-30  Vladimir Makarov  <vmakarov@redhat.com>
9683         PR rtl-optimization/56144
9684         * lra-constraints.c (get_reload_reg): Don't reuse reload pseudo
9685         for values with side effects.
9687 2013-01-30  Richard Biener  <rguenther@suse.de>
9689         * sparseset.h (sparseset_bit_p): Use gcc_checking_assert.
9690         (sparseset_pop): Likewise.
9691         * cfganal.c (compute_idf): Likewise.  Increase work-stack size
9692         to be able to use quick_push in the worker loop.
9694 2013-01-30  Marek Polacek  <polacek@redhat.com>
9696         * cfgcleanup.c (cleanup_cfg): Don't mark affected BBs.
9698 2013-01-30  Richard Biener  <rguenther@suse.de>
9700         PR lto/56147
9701         * lto-symtab.c (lto_symtab_merge_decls_1): Guard DECL_BUILT_IN check.
9703 2013-01-30  Georg-Johann Lay  <avr@gjlay.de>
9705         PR tree-optimization/56064
9706         * fixed-value.c (fixed_from_double_int): New function.
9707         * fixed-value.h (fixed_from_double_int): New prototype.
9708         (const_fixed_from_double_int): New static inline function.
9709         * fold-const.c (native_interpret_fixed): New static function.
9710         (native_interpret_expr) <FIXED_POINT_TYPE>: Use it.
9711         (can_native_interpret_type_p) <FIXED_POINT_TYPE>: Return true.
9712         (native_encode_fixed): New static function.
9713         (native_encode_expr) <FIXED_CST>: Use it.
9714         (native_interpret_int): Move double_int worker code to...
9715         * double-int.c (double_int::from_buffer): ...this new static method.
9716         * double-int.h (double_int::from_buffer): Prototype it.
9718 2013-01-30  Richard Biener  <rguenther@suse.de>
9720         * tree-ssa-structalias.c (final_solutions, final_solutions_obstack):
9721         New pointer-map and obstack.
9722         (init_alias_vars): Allocate pointer-map and obstack.
9723         (delete_points_to_sets): Free them.
9724         (find_what_var_points_to): Cache result.
9725         (find_what_p_points_to): Adjust for changed interface of
9726         find_what_var_points_to.
9727         (compute_points_to_sets): Likewise.
9728         (ipa_pta_execute): Likewise.
9730 2013-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9732         * configure.ac (HAVE_AS_SPARC_NOBITS): New test.
9733         * configure: Regenerate.
9734         * config.in: Regenerate.
9735         * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section): Emit
9736         #nobits/#progbits if supported.
9738 2013-01-29  Oleg Endo  <olegendo@gcc.gnu.org>
9740         PR target/56121
9741         * config/sh/sh.md (bclr_m2a, bset_m2a, bst_m2a, bld_m2a, bldsign_m2a,
9742         bld_reg, *bld_regqi, band_m2a, bandreg_m2a, bor_m2a, borreg_m2a,
9743         bxor_m2a, bxorreg_m2a): Add satisfies_constraint_K03 condition.
9745 2013-01-29  Greta Yorsh  <Greta.Yorsh@arm.com>
9747         * config/arm/cortex-a7.md (cortex_a7_neon, cortex_a7_all): Remove.
9748         (cortex_a7_idiv): Use cortex_a7_both instead of cortex_a7_all.
9750 2013-01-29  Greta Yorsh  <Greta.Yorsh@arm.com>
9752         * config/arm/arm.c (cortexa7_younger): Return true for TYPE_CALL.
9753         * config/arm/cortex-a7.md (cortex_a7_call): Update required units.
9755 2013-01-29  Greta Yorsh  <Greta.Yorsh@arm.com>
9757         * config/arm/arm-protos.h (arm_mac_accumulator_is_result): New
9758         declaration.
9759         * config/arm/arm.c (arm_mac_accumulator_is_result): New function.
9760         * config/arm/cortex-a7.md: New bypasses using
9761         arm_mac_accumulator_is_result.
9763 2013-01-29  Greta Yorsh  <Greta.Yorsh@arm.com>
9765         * config/arm/cortex-a7.md (cortex_a7_neon_mul):  New reservation.
9766         (cortex_a7_neon_mla): Likewise.
9767         (cortex_a7_fpfmad): New reservation.
9768         (cortex_a7_fpmacs): Use ffmas and update required units.
9769         (cortex_a7_fpmuld): Update required units and latency.
9770         (cortex_a7_fpmacd): Likewise.
9771         (cortex_a7_fdivs, cortex_a7_fdivd): Likewise.
9772         (cortex_a7_neon). Likewise.
9773         (bypass) Update participating units.
9775 2013-01-29  Greta Yorsh  <Greta.Yorsh@arm.com>
9777         * config/arm/arm.md (type): Add ffmas and ffmad to "type" attribute.
9778         * config/arm/vfp.md (fma,fmsub,fnmsub,fnmadd): Change type
9779         from fmac to ffma.
9780         * config/arm/vfp11.md (vfp_farith): Use ffmas.
9781         (vfp_fmul): Use ffmad.
9782         * config/arm/cortex-r4f.md (cortex_r4_fmacs): Use ffmas.
9783         (cortex_r4_fmacd): Use ffmad.
9784         * config/arm/cortex-m4-fpu.md (cortex_m4_fmacs): Use ffmas.
9785         * config/arm/cortex-a9.md (cortex_a9_fmacs):  Use ffmas.
9786         (cortex_a9_fmacd): Use ffmad.
9787         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_macs): Use ffmas.
9788         (cortex_a8_vfp_macd): Use ffmad.
9789         * config/arm/cortex-a5.md (cortex_a5_fpmacs): Use ffmas.
9790         (cortex_a5_fpmacd): Use ffmad.
9791         * config/arm/cortex-a15-neon.md (cortex_a15_vfp_macs) Use ffmas.
9792         (cortex_a15_vfp_macd): Use ffmad.
9793         * config/arm/arm1020e.md (v10_fmul): Use ffmas and ffmad.
9795 2013-01-29  Jason Merrill  <jason@redhat.com>
9797         PR libstdc++/54314
9798         * varasm.c (default_assemble_visibility): Don't warn about
9799         visibility on artificial decls.
9801 2013-01-29  Richard Biener  <rguenther@suse.de>
9803         PR tree-optimization/56113
9804         * tree-ssa-structalias.c (equiv_class_lookup): Also return
9805         the bitmap leader.
9806         (label_visit): Free duplicate bitmaps and record the leader instead.
9807         (perform_var_substitution): Adjust.
9809 2013-01-29  Richard Biener  <rguenther@suse.de>
9811         PR tree-optimization/55270
9812         * tree-ssa-dom.c (eliminate_degenerate_phis): If we changed
9813         the CFG, schedule loops for fixup.
9815 2013-01-29  Nick Clifton  <nickc@redhat.com>
9817         * config/rl78/rl78.c (rl78_regno_mode_code_ok_for_base_p): Allow
9818         SP_REG.
9820 2013-01-28  Leif Ekblad  <leif@rdos.net>
9822         * config.gcc (i[34567]86-*-rdos*, x86_64-*-rdos*): New targets.
9823         * config/i386/i386.h (TARGET_RDOS): New macro.
9824         (DEFAULT_LARGE_SECTION_THRESHOLD): New macro.
9825         * config/i386/i386.c (ix86_option_override_internal): For 64bit
9826         TARGET_RDOS, set ix86_cmodel to CM_MEDIUM_PIC and flag_pic to 1.
9827         * config/i386/i386.opt (mlarge-data-threshold): Initialize to
9828         DEFAULT_LARGE_SECTION_THRESHOLD.
9829         * config/i386/i386.md (R14_REG, R15_REG): New constants.
9830         * config/i386/rdos.h: New file.
9831         * config/i386/rdos64.h: New file.
9833 2013-01-28  Bernd Schmidt  <bernds@codesourcery.com>
9835         PR other/54814
9836         * reload.c (find_valid_class_1): Use in_hard_reg_set_p instead of
9837         TEST_HARD_REG_BIT.
9839 2013-01-28  Jakub Jelinek  <jakub@redhat.com>
9841         PR rtl-optimization/56117
9842         * sched-deps.c (sched_analyze_2) <case PREFETCH>: For use_cselib
9843         call cselib_lookup_from_insn on the MEM before calling
9844         add_insn_mem_dependence.
9846 2013-01-28  Richard Biener  <rguenther@suse.de>
9848         * tree-inline.c (remap_gimple_stmt): Do not assing a BLOCK
9849         to a stmt that didn't have one.
9850         (copy_phis_for_bb): Likewise for PHI arguments.
9851         (copy_debug_stmt): Likewise for debug stmts.
9853 2013-01-28  Richard Biener  <rguenther@suse.de>
9855         PR tree-optimization/56034
9856         * tree-loop-distribution.c (enum partition_kind): Add PKIND_REDUCTION.
9857         (partition_builtin_p): Adjust.
9858         (generate_code_for_partition): Handle PKIND_REDUCTION.  Assert
9859         it is the last partition.
9860         (rdg_flag_uses): Check SSA_NAME_IS_DEFAULT_DEF before looking
9861         up the vertex for the definition.
9862         (classify_partition): Classify whether a partition is a
9863         PKIND_REDUCTION, thus has uses outside of the loop.
9864         (ldist_gen): Inherit PKIND_REDUCTION when merging partitions.
9865         Merge all PKIND_REDUCTION partitions into the last partition.
9866         (tree_loop_distribution): Seed partitions from reductions as well.
9868 2013-01-28  Jakub Jelinek  <jakub@redhat.com>
9870         PR tree-optimization/56125
9871         * tree-ssa-math-opts.c (gimple_expand_builtin_pow): Don't optimize
9872         pow(x,c) into sqrt(x) * powi(x, n/2) or
9873         1.0 / (sqrt(x) * powi(x, abs(n/2))) if c is an integer or when
9874         optimizing for size.
9875         Don't optimize pow(x,c) into powi(x, n/3) * powi(cbrt(x), n%3) or
9876         1.0 / (powi(x, abs(n)/3) * powi(cbrt(x), abs(n)%3)) if 2c is an
9877         integer.
9879         PR tree-optimization/56094
9880         * gimplify.c (force_gimple_operand_1): Temporarily set input_location
9881         to UNKNOWN_LOCATION while gimplifying expr.
9883 2013-01-27  Uros Bizjak  <ubizjak@gmail.com>
9885         PR target/56114
9886         * config/i386/i386.md (*movabs<mode>_1): Add square brackets around
9887         operand 0 in movabs insn template for -masm=intel asm alternative.
9888         (*movabs<mode>_2): Ditto for operand 1.
9890 2013-01-26  David Holsgrove  <david.holsgrove@xilinx.com>
9892         PR target/54663
9893         * config.gcc (microblaze*-linux*): Add tmake_file to allow building
9894         of microblaze-c.o
9896 2013-01-26  Edgar E. Iglesias  <edgar.iglesias@gmail.com>
9898         * config.gcc (microblaze*-*-*): Rename microblaze*-*-elf, update
9899         tm_file.
9901 2013-01-25  Naveen H.S  <Naveen.Hurugalawadi@caviumnetworks.com>
9903         * config/aarch64/aarch64.c (TARGET_FIXED_CONDITION_CODE_REGS):
9904         Undef to avoid warning.
9906 2013-01-25  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
9908         * configure.ac (gcc_cv_ld_static_dynamic): Define for AIX native ld.
9909         * configure: Regenerate.
9911 2013-01-25  Jakub Jelinek  <jakub@redhat.com>
9913         PR tree-optimization/56098
9914         * tree-ssa-phiopt.c (nt_init_block): Don't call add_or_mark_expr
9915         for stmts with volatile ops.
9916         (cond_store_replacement): Don't optimize if assign has volatile ops.
9917         (cond_if_else_store_replacement_1): Don't optimize if either
9918         then_assign or else_assign have volatile ops.
9919         (hoist_adjacent_loads): Don't optimize if either def1 or def2 have
9920         volatile ops.
9922 2013-01-25  Georg-Johann Lay  <avr@gjlay.de>
9924         * doc/invoke.texi (AVR Built-in Macros): Document __XMEGA__.
9926 2013-01-25  Georg-Johann Lay  <avr@gjlay.de>
9928         * doc/extend.texi (Example of asm with clobbered asm reg): Fix
9929         missing ':' in asm example.
9931 2013-01-25  Tejas Belagod  <tejas.belagod@arm.com>
9933         * config/aarch64/aarch64-simd-builtins.def: Separate sq<r>dmulh_lane
9934         entries into lane and laneq entries.
9935         * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh_lane<mode>):
9936         Remove AdvSIMD scalar modes.
9937         (aarch64_sq<r>dmulh_laneq<mode>): New.
9938         (aarch64_sq<r>dmulh_lane<mode>): New RTL pattern for Scalar AdvSIMD
9939         modes.
9940         * config/aarch64/arm_neon.h: Fix all the vq<r>dmulh_lane* intrinsics'
9941         builtin implementations to relfect changes in RTL in aarch64-simd.md.
9942         * config/aarch64/iterators.md (VCOND): New.
9943         (VCONQ): New.
9945 2013-01-25  Georg-Johann Lay  <avr@gjlay.de>
9947         PR target/54222
9948         * config/avr/builtins.def (DEF_BUILTIN): Add LIBNAME argument.
9949         Add NULL LIBNAME argument to existing definitions.
9950         (ABSHR, ABSR, ABSLR, ABSLLR, ABSHK, ABSK, ABSLK, ABSLLK): New.
9951         * config/avr/avr-c.c (DEF_BUILTIN): Add LIBNAME argument.
9952         * config/avr/avr.c (DEF_BUILTIN): Same.
9953         (avr_init_builtins): Pass down LIBNAME to add_builtin_function.
9954         (avr_expand_builtin): Expand to a vanilla call if a libgcc
9955         implementation is available (DECL_ASSEMBLER_NAME is set).
9956         (avr_fold_absfx): New static function.
9957         (avr_fold_builtin): Use it to handle: AVR_BUILTIN_ABSHR,
9958         AVR_BUILTIN_ABSR, AVR_BUILTIN_ABSLR, AVR_BUILTIN_ABSLLR,
9959         AVR_BUILTIN_ABSHK, AVR_BUILTIN_ABSK, AVR_BUILTIN_ABSLK,
9960         AVR_BUILTIN_ABSLLK.
9961         * config/avr/stdfix.h (abshr, absr, abslr, absllr)
9962         (abshk, absk, abslk, absllk): Provide as static inline functions.
9964 2013-01-25  Marek Polacek  <polacek@redhat.com>
9966         PR tree-optimization/56035
9967         * cfgloopmanip.c (fix_loop_structure): Remove redundant condition.
9969 2012-01-24  Uros Bizjak  <ubizjak@gmail.com>
9971         * config/i386/i386.md (*movti_internal_rex64): Add (o,e) alternative.
9972         (*movtf_internal_rex64): Add (!o,C) alternative
9973         (*movxf_internal_rex64): Ditto.
9974         (*movdf_internal_rex64): Add (?r,C) and (?m,C) alternatives.
9976 2013-01-24  Shenghou Ma  <minux.ma@gmail.com>
9978         * doc/invoke.texi: fix typo.
9979         * doc/objc.texi: fix typo.
9981 2013-01-24  Richard Sandiford  <rdsandiford@googlemail.com>
9983         * config/mips/mips.md (*and<mode>3_mips16): Use the "W" constraint
9984         for the first two alternatives.
9986 2013-01-24  Diego Novillo  <dnovillo@google.com>
9988         * Makefile.in (GGC): Remove.  Replace all instances with ggc-page.o.
9989         (ggc-zone.o): Remove.
9990         * configure.ac: Remove option --with-gc.
9991         * configure: Re-generate.
9992         * doc/install.texi: Remove documentation for --with-gc.
9993         * gengtype.c (write_enum_defn): Remove.  Update all users.
9994         (write_Types_process_field): Remove generation of gt_e_* argument.
9995         (output_type_enum): Remove.  Update all users.
9996         (write_enum_defn): Remove.  Update all users.
9997         (enum alloc_zone): Remove.  Update all users.
9998         (write_splay_tree_allocator_def): Remove generation of gt_e_* argument.
9999         * ggc-common.c (ggc_splay_alloc): Remove first argument.
10000         Update all callers.
10001         (struct ptr_data): Remove field TYPE.  Update all users.
10002         (gt_pch_note_object): Remove argument TYPE.  Update all users.
10003         * ggc-internal.h (ggc_pch_alloc_object): Remove last argument.
10004         Update all users.
10005         * ggc-none.c (ggc_alloc_typed_stat): Remove.
10006         (struct alloc_zone): Remove.
10007         (ggc_internal_alloc_zone_stat): Remove.
10008         (ggc_internal_cleared_alloc_zone_stat): Remove.
10009         * ggc-page.c (ggc_alloc_typed_stat): Remove.
10010         (ggc_pch_count_object): Remove last argument.  Update all users.
10011         (ggc_pch_alloc_object): Remove last argument.  Update all users.
10012         (struct alloc_zone): Remove.
10013         * ggc-zone.c: Remove.
10014         * ggc.h (gt_pch_note_object): Remove last argument.  Update all users.
10015         (struct alloc_zone): Remove.
10016         (ggc_alloc_typed_stat): Remove.
10017         (ggc_alloc_typed): Remove.
10018         (ggc_splay_alloc): Remove first argument.
10019         (rtl_zone): Remove.  Update all users.
10020         (tree_zone): Remove.  Update all users.
10021         (tree_id_zone): Remove.  Update all users.
10022         (ggc_internal_zone_alloc_stat): Remove.  Update all users.
10023         (ggc_internal_zone_cleared_alloc_stat): Remove.  Update all users.
10024         (ggc_internal_zone_vec_alloc_stat): Remove.  Update all users.
10025         * tree-ssanames.c: Remove references to zone allocator in comments.
10027 2013-01-24  Georg-Johann Lay  <avr@gjlay.de>
10029         * config/avr/avr.c (avr_out_fract): Make register numbers that
10030         might be outside of source operand signed.
10032 2013-01-24  Uros Bizjak  <ubizjak@gmail.com>
10034         * config/i386/constraints.md (Yf): New constraint.
10035         * config/i386/i386.md (*movdf_internal_rex64): Use Yf*f instead
10036         of f constraint to conditionaly disable x87 register preferences.
10037         (*movdf_internal): Ditto.
10038         (*movsf_internal): Ditto.
10040 2013-01-24  Steven Bosscher  <steven@gcc.gnu.org>
10042         PR inline-asm/55934
10043         * lra-assigns.c (assign_by_spills): Throw away the pattern of asms
10044         that have operands with impossible constraints.
10045         Add a FIXME for a speed-up opportunity.
10046         * lra-constraints.c (process_alt_operands): Verify that a class
10047         selected from constraints on asms is valid for the operand mode.
10048         (curr_insn_transform): Remove incorrect comment.
10050 2013-01-23  David Edelsohn  <dje.gcc@gmail.com>
10052         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Check that
10053         TOC operand is a valid symbol ref in the constant pool.
10055 2013-01-23  Edgar E. Iglesias  <edgar.iglesias@gmail.com>
10057         * config/microblaze/linux.h: Add TARGET_OS_CPP_BUILTINS
10059 2013-01-23  Georg-Johann Lay  <avr@gjlay.de>
10061         PR target/54222
10062         * config/avr/stdfix.h: New file.
10063         * t-avr (stdfix-gcc.h): New rule to build it.
10064         (EXTRA_HEADERS): Set it to install stdfix.h, stdfix-gcc.h.
10066 2013-01-23  Kostya Serebryany  <kcc@google.com>
10068         * config/darwin.h: remove dependency on
10069         CoreFoundation (asan on Mac OS).
10071 2013-01-23  Jakub Jelinek  <jakub@redhat.com>
10073         PR target/49069
10074         * config/arm/arm.md (cbranchdi4, cstoredi4): Use s_register_operand
10075         instead of cmpdi_operand for first comparison operand.
10076         Don't assert that comparison operands aren't both constants.
10078 2013-01-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
10080         * doc/install.texi (Downloading the Source): Update references to
10081         downloading separate components.
10083 2013-01-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
10085         * doc/extend.texi (__int128): Improve grammar.
10087 2013-01-22  Uros Bizjak  <ubizjak@gmail.com>
10089         PR target/56028
10090         * config/i386/i386.md (*movti_internal_rex64): Change (o,riF)
10091         alternative to (o,r).
10092         (*movdi_internal_rex64): Remove (!o,n) alternative.
10093         (DImode immediate->memory splitter): Remove.
10094         (DImode immediate->memory peephole2): Remove.
10095         (movtf): Enable for TARGET_64BIT || TARGET_SSE.
10096         (*movtf_internal_rex64): Rename from *movtf_internal. Change (!o,F*r)
10097         alternative to (!o,*r).
10098         (*movtf_internal_sse): New pattern.
10099         (*movxf_internal_rex64): New pattern.
10100         (*movxf_internal): Disable for TARGET_64BIT.
10101         (*movdf_internal_rex64): Remove (!o,F) alternative.
10103 2013-01-22  Jakub Jelinek  <jakub@redhat.com>
10105         PR middle-end/56074
10106         * dumpfile.c (dump_loc): Only print loc if LOCATION_LOCUS (loc)
10107         isn't UNKNOWN_LOCATION nor BUILTINS_LOCATION.
10108         * tree-vect-loop-manip.c (find_loop_location): Also ignore
10109         stmt locations where LOCATION_LOCUS of the stmt location is
10110         UNKNOWN_LOCATION or BUILTINS_LOCATION.
10112         PR target/55686
10113         * config/i386/i386.md (UNSPEC_STOS): New.
10114         (strset_singleop, *strsetdi_rex_1, *strsetsi_1, *strsethi_1,
10115         *strsetqi_1): Add UNSPEC_STOS.
10117 2013-01-22  Paolo Carlini  <paolo.carlini@oracle.com>
10119         PR c++/56067
10120         * doc/invoke.texi: Remove left over -Wsynth example.
10122 2013-01-21  Jakub Jelinek  <jakub@redhat.com>
10124         PR tree-optimization/56051
10125         * fold-const.c (fold_binary_loc): Don't fold
10126         X < (cast) (1 << Y) into (X >> Y) != 0 if cast is either
10127         a narrowing conversion, or widening conversion from signed
10128         to unsigned.
10130 2013-01-21  Uros Bizjak  <ubizjak@gmail.com>
10132         PR rtl-optimization/56023
10133         * haifa-sched.c (fix_inter_tick): Do not update ticks of instructions,
10134         dependent on debug instruction.
10136 2013-01-21  Martin Jambor  <mjambor@suse.cz>
10138         PR middle-end/56022
10139         * function.c (allocate_struct_function): Call
10140         invoke_set_current_function_hook earlier.
10142 2013-01-21  Jakub Jelinek  <jakub@redhat.com>
10144         * reload1.c (init_reload): Only initialize reload_obstack
10145         during the first call.
10147 2013-01-21  Marek Polacek  <polacek@redhat.com>
10149         * cfgloop.c (verify_loop_structure): Fix up grammar.
10151 2013-01-21  Yi-Hsiu Hsu  <ahsu@marvell.com>
10153         * config/arm/marvell-pj4.md (pj4_shift_conds, pj4_alu_shift,
10154         pj4_alu_shift_conds, pj4_shift): Handle simple_alu_shift.
10156 2013-01-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10158         PR target/56058
10159         * config/arm/marvell-pj4.md: Update copyright year.
10160         Fix up use of alu to alu_reg and simple_alu_imm.
10162 2013-01-21  Uros Bizjak  <ubizjak@gmail.com>
10164         * config/i386/i386.md (enabled): Do not disable fma4 for TARGET_FMA.
10166 2013-01-20  Vladimir Makarov  <vmakarov@redhat.com>
10168         PR target/55433
10169         * lra-constraints.c (curr_insn_transform): Don't reuse original
10170         insn for secondary memory move when memory mode should be different.
10172 2013-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10174         * config/pa/pa.md (atomic_loaddi, atomic_loaddi_1, atomic_storedi,
10175         atomic_storedi_1): New patterns.
10177 2013-01-20  Venkataramanan Kumar  <venkataramanan.kumar@amd.com>
10179         btver2 pipeline descriptions.
10180         * config/i386/i386.c: Enable CPU_BTVER2 to use btver2 pipeline
10181         descriptions.
10182         * config/i386/i386.md (btver2_decode): New type attributes.
10183         * config/i386/sse.md (btver2_decode, btver2_sse_attr): New
10184         type attributes.
10185         * config/i386/btver2.md: New file describing btver2 pipelines.
10187 2013-01-19  Andrew Pinski  <apinski@cavium.com>
10189         PR tree-optimization/52631
10190         * tree-ssa-sccvn (visit_use): Before looking up the original
10191         statement, try looking up the simplified expression.
10193 2013-01-19  Anthony Green  <green@moxielogic.com>
10195         * config/moxie/moxie.c (moxie_expand_prologue): Set
10196         current_function_static_stack_size.
10198 2013-01-18  Jakub Jelinek  <jakub@redhat.com>
10200         PR tree-optimization/56029
10201         * tree-phinodes.c (reserve_phi_args_for_new_edge): Set
10202         gimple_phi_arg_location for the new arg to UNKNOWN_LOCATION.
10204 2013-01-18  Sharad Singhai  <singhai@google.com>
10206         PR tree-optimization/55995
10207         * dumpfile.c (dump_loc): Print location only if available.
10208         * tree-vectorizer.c (increase_alignment): Intialize vect_location.
10210 2013-01-18  Vladimir Makarov  <vmakarov@redhat.com>
10212         PR target/55433
10213         * lra-constraints.c (curr_insn_transform): Reuse original insn for
10214         secondary memory move.
10215         (inherit_reload_reg): Use rclass instead of cl for
10216         check_secondary_memory_needed_p.
10218 2013-01-18  Jakub Jelinek  <jakub@redhat.com>
10220         PR middle-end/56015
10221         * expr.c (expand_expr_real_2) <case COMPLEX_EXPR>: Handle
10222         the case where writing real complex part of target modifies op1.
10224 2013-01-18  James Greenhalgh  <james.greenhalgh@arm.com>
10226         * config/aarch64/aarch64-simd.md
10227         (aarch64_vcond_internal<mode>): Handle unordered cases.
10228         * config/aarch64/iterators.md (v_cmp_result): New.
10230 2013-01-18  Yi-Hsiu Hsu  <ahsu@marvell.com>
10231             Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10233         * config/arm/marvell-pj4.md: New file.
10234         * config/arm/arm.c (arm_issue_rate): Add marvell_pj4.
10235         * config/arm/arm.md (generic_sched): Add marvell_pj4.
10236         (generic_vfp): Likewise.
10237         * config/arm/arm-cores.def: Add marvell-pj4.
10238         * config/arm/arm-tune.md: Regenerate.
10239         * config/arm/arm-tables.opt: Regenerate.
10240         * config/arm/bpabi.h (BE8_LINK_SPEC): Add marvell_pj4.
10241         * doc/invoke.texi: Document marvell-pj4.
10243 2013-01-18  Tejas Belagod  <tejas.belagod@arm.com>
10245         * config/aarch64/arm_neon.h: Map scalar types to standard types.
10247 2013-01-18  Alexandre Oliva  <aoliva@redhat.com>
10249         PR debug/54114
10250         PR debug/54402
10251         PR debug/49888
10252         * var-tracking.c (negative_power_of_two_p): New.
10253         (global_get_addr_cache, local_get_addr_cache): New.
10254         (get_addr_from_global_cache, get_addr_from_local_cache): New.
10255         (vt_canonicalize_addr): Rewrite using the above.  Adjust the
10256         heading comment.
10257         (vt_stack_offset_p): Remove.
10258         (vt_canon_true_dep): Always canonicalize loc's address.
10259         (clobber_overlapping_mems): Make sure we have a MEM.
10260         (local_get_addr_clear_given_value): New.
10261         (val_reset): Clear local cached entries.
10262         (compute_bb_dataflow): Create and release the local cache.
10263         Disable duplicate MEMs clobbering.
10264         (emit_notes_in_bb): Clobber MEMs likewise.
10265         (vt_emit_notes): Create and release the local cache.
10266         (vt_initialize, vt_finalize): Create and release the global
10267         cache, respectively.
10268         * alias.c (rtx_equal_for_memref_p): Compare operands of ENTRY_VALUEs.
10270 2013-01-18  Alexandre Oliva  <aoliva@redhat.com>
10272         PR libmudflap/53359
10273         * tree-mudflap.c (mudflap_finish_file): Skip deferred decls
10274         not found in the symtab.
10276 2013-01-18  Alexandre Oliva  <aoliva@redhat.com>
10278         PR debug/56006
10279         PR rtl-optimization/55547
10280         PR rtl-optimization/53827
10281         PR debug/53671
10282         PR debug/49888
10283         * alias.c (offset_overlap_p): New, factored out of...
10284         (memrefs_conflict_p): ... this.  Use absolute sizes.  Retain
10285         the conservative special case for symbolic constants.  Don't
10286         adjust zero sizes on alignment.
10288 2013-01-18  Bernd Schmidt  <bernds@codesourcery.com>
10290         PR rtl-optimization/52573
10291         * regrename.c (build_def_use): Ignore REG_DEAD notes if there is a
10292         REG_UNUSED for the same register.
10294 2013-01-17  Richard Biener  <rguenther@suse.de>
10295             Marek Polacek  <polacek@redhat.com>
10297         PR rtl-optimization/55833
10298         * loop-unswitch.c (unswitch_loops): Move loop verification...
10299         (unswitch_single_loop): ...here.  Call mark_irreducible_loops.
10300         * cfgloopmanip.c (fix_loop_placement): Add IRRED_INVALIDATED parameter.
10301         Set it to true when we're removing a loop from hierarchy tree in
10302         an irreducible region.
10303         (fix_bb_placements): Adjust caller.
10304         (fix_loop_placements): Likewise.
10306 2013-01-17  Georg-Johann Lay  <avr@gjlay.de>
10308         * config/avr/builtins.def (DEF_BUILTIN): Factor out
10309         "__builtin_avr_" from NAME, turn NAME to an uppercase identifier.
10310         Factor out 'CODE_FOR_' from ICODE, use 'nothing' instead of '-1'.
10311         Remove ID.  Adjust comments.
10312         * config/avr/avr-c.c (avr_builtin_name): Remove.
10313         (avr_cpu_cpp_builtins): Use DEF_BUILTIN instead of for-loop.
10314         * config/avr/avr.c (avr_tolower): New static function.
10315         (DEF_BUILTIN): Remove parameter ID.  Prefix ICODE by 'CODE_FOR_'.
10316         Stringify NAME, prefix it with "__builtin_avr_" and lowercase it.
10317         (avr_expand_builtin): Assert insn_code != CODE_FOR_nothing for
10318         default expansion.
10320 2013-01-17  Jan Hubicka  <jh@suse.cz>
10322         PR tree-optimization/55273
10323         * loop-iv.c (iv_number_of_iterations): Consider zero iteration case.
10325 2013-01-17  Uros Bizjak  <ubizjak@gmail.com>
10327         PR target/55981
10328         * config/i386/sync.md (atomic_store<mode>): Always generate SWImode
10329         store through atomic_store<mode>_1.
10330         (atomic_store<mode>_1): Macroize insn using SWI mode iterator.
10332 2013-01-17  Martin Jambor  <mjambor@suse.cz>
10334         PR tree-optimizations/55264
10335         * ipa-inline-transform.c (can_remove_node_now_p_1): Never return true
10336         for virtual methods.
10337         * ipa.c (symtab_remove_unreachable_nodes): Never return true for
10338         virtual methods before inlining is over.
10339         * cgraph.h (cgraph_only_called_directly_or_aliased_p): Return false for
10340         virtual functions.
10341         * cgraphclones.c (cgraph_create_virtual_clone): Mark clones as
10342         non-virtual.
10344 2013-01-16  Vladimir Makarov  <vmakarov@redhat.com>
10346         PR rtl-optimization/56005
10347         * sched-deps.c (sched_analyze_2): Check deps->readonly for adding
10348         pending reads for prefetch.
10350 2013-01-16  Ian Bolton  <ian.bolton@arm.com>
10352         * config/aarch64/aarch64.md
10353         (*cstoresi_neg_uxtw): New pattern.
10354         (*cmovsi_insn_uxtw): New pattern.
10355         (*<optab>si3_uxtw): New pattern.
10356         (*<LOGICAL:optab>_<SHIFT:optab>si3_uxtw): New pattern.
10357         (*<optab>si3_insn_uxtw): New pattern.
10358         (*bswapsi2_uxtw): New pattern.
10360 2013-01-16  Richard Biener  <rguenther@suse.de>
10362         * tree-inline.c (tree_function_versioning): Remove set but
10363         never used variable.
10365 2013-01-16  Richard Biener  <rguenther@suse.de>
10367         PR tree-optimization/55964
10368         * tree-flow.h (rename_variables_in_loop): Remove.
10369         (rename_variables_in_bb): Likewise.
10370         * tree-loop-distribution.c (update_phis_for_loop_copy): Remove.
10371         (copy_loop_before): Adjust and delete update-ssa status.
10372         * tree-vect-loop-manip.c (rename_variables_in_bb): Make static.
10373         (rename_variables_in_bb): Likewise.  Properly walk over predecessors.
10374         (rename_variables_in_loop): Remove.
10375         (slpeel_update_phis_for_duplicate_loop): Likewise.
10376         (slpeel_tree_duplicate_loop_to_edge_cfg): Handle nested loops,
10377         use available cfg machinery instead of duplicating it.
10378         Update PHI nodes and perform poor-mans SSA update here.
10379         (slpeel_tree_peel_loop_to_edge): Adjust.
10381 2013-01-16  Richard Biener  <rguenther@suse.de>
10383         PR tree-optimization/54767
10384         PR tree-optimization/53465
10385         * tree-vrp.c (vrp_meet_1): Revert original fix for PR53465.
10386         (vrp_visit_phi_node): For PHI arguments coming via backedges
10387         drop all symbolical range information.
10388         (execute_vrp): Compute backedges.
10390 2013-01-16  Richard Biener  <rguenther@suse.de>
10392         * doc/install.texi: Update CLooG and ISL requirements to
10393         0.18.0 and 0.11.1.
10395 2013-01-16  Christian Bruel  <christian.bruel@st.com>
10397         PR target/55301
10398         * config/sh/sh.c (sh_expand_prologue): Postpone new_stack mem symbol.
10399         (broken_move): Handle UNSPECV_SP_SWITCH_B.
10400         * config/sh/sh.md (sp_switch_1): Use set (reg:SI SP_REG).
10402 2013-01-16  DJ Delorie  <dj@redhat.com>
10404         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
10405         (UNSPECV_SP_SWITCH_E): New.
10406         (sp_switch_1): Change to an unspec.
10407         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
10408         replace $r15.
10410 2013-01-16  Uros Bizjak  <ubizjak@gmail.com>
10412         * emit-rtl.c (need_atomic_barrier_p): Mask memory model argument
10413         with MEMMODEL_MASK before comparing with MEMMODEL_* memory types.
10414         * optabs.c (maybe_emit_sync_lock_test_and_set): Ditto.
10415         (expand_mem_thread_fence): Ditto.
10416         (expand_mem_signal_fence): Ditto.
10417         (expand_atomic_load): Ditto.
10418         (expand_atomic_store): Ditto.
10420 2013-01-16  Alexandre Oliva  <aoliva@redhat.com>
10422         PR rtl-optimization/55547
10423         PR rtl-optimization/53827
10424         PR debug/53671
10425         PR debug/49888
10426         * alias.c (memrefs_conflict_p): Set sizes to negative after
10427         AND adjustments.
10429 2013-01-15  Jakub Jelinek  <jakub@redhat.com>
10431         PR target/55940
10432         * function.c (thread_prologue_and_epilogue_insns): Always
10433         add crtl->drap_reg to set_up_by_prologue.set, even if
10434         stack_realign_drap is false.
10436 2013-01-15  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
10438         * config/vax/vax.md (add<mode>3, sub<mode>3, mul<mode>3, div<mode>3,
10439         and<mode>3, *and<mode>_const_int, ior<mode>3, xor<mode>3, ashrsi3,
10440         *call): Fix indention.
10442 2013-01-15  Tom de Vries  <tom@codesourcery.com>
10444         PR target/55876
10445         * optabs.c (widen_operand): Use gen_lowpart instead of gen_rtx_SUBREG.
10446         Update comment.
10448 2013-01-15  Vladimir Makarov  <vmakarov@redhat.com>
10450         PR rtl-optimization/55153
10451         * sched-deps.c (sched_analyze_2): Add pending reads for prefetch.
10453 2013-01-15  Martin Jambor  <mjambor@suse.cz>
10455         PR tree-optimization/55920
10456         * tree-sra.c (analyze_access_subtree): Do not mark non-removable
10457         accesses as grp_to_be_debug_replaced.
10459 2013-01-15  Jakub Jelinek  <jakub@redhat.com>
10461         PR tree-optimization/55920
10462         * tree-sra.c (sra_modify_assign): If for lacc->grp_to_be_debug_replaced
10463         there is non-useless type conversion needed from debug rhs to lhs,
10464         use build_debug_ref_for_model and/or VIEW_CONVERT_EXPR.
10466 2013-01-15  Joseph Myers  <joseph@codesourcery.com>
10467             Mikael Pettersson  <mikpe@it.uu.se>
10469         PR target/43961
10470         * config/arm/arm.h (ADDR_VEC_ALIGN): Align SImode jump tables for
10471         Thumb.
10472         (ASM_OUTPUT_CASE_LABEL): Remove.
10473         (ASM_OUTPUT_BEFORE_CASE_LABEL): Define to empty.
10474         * final.c (shorten_branches): Update alignment of labels before
10475         jump tables if CASE_VECTOR_SHORTEN_MODE.
10477 2013-01-15  Richard Biener  <rguenther@suse.de>
10479         PR bootstrap/55961
10480         * system.h: Do not include gmp.h for building host tools.
10482 2013-01-15  Richard Biener  <rguenther@suse.de>
10484         PR middle-end/55882
10485         * emit-rtl.c (set_mem_attributes_minus_bitpos): Correctly
10486         account for bitpos when computing alignment.
10488 2013-01-15  Vladimir Yakovlev  <vladimir.b.yakovlev@intel.com>
10490         * config/i386/i386-c.c (ix86_target_macros_internal): New case.
10491         (ix86_target_macros_internal): Likewise.
10493         * config/i386/i386.c (m_CORE2I7): Removed.
10494         (m_CORE_HASWELL): New macro.
10495         (m_CORE_ALL): Likewise.
10496         (initial_ix86_tune_features): m_CORE2I7 is replaced by m_CORE_ALL.
10497         (initial_ix86_arch_features): Likewise.
10498         (processor_target_table): Initializations for Core avx2.
10499         (cpu_names): New names "core-avx2".
10500         (ix86_option_override_internal): Changed PROCESSOR_COREI7 by
10501         PROCESSOR_CORE_HASWELL.
10502         (ix86_issue_rate): New case.
10503         (ia32_multipass_dfa_lookahead): Likewise.
10504         (ix86_sched_init_global): Likewise.
10506         * config/i386/i386.h (TARGET_HASWELL): New macro.
10507         (target_cpu_default): New TARGET_CPU_DEFAULT_haswell.
10508         (processor_type): New PROCESSOR_HASWELL.
10510 2013-01-15  Jakub Jelinek  <jakub@redhat.com>
10512         PR tree-optimization/55955
10513         * tree-vect-loop.c (vectorizable_reduction): Give up early on
10514         *SHIFT_EXPR and *ROTATE_EXPR codes.
10516         PR tree-optimization/48766
10517         * opts.c (common_handle_option): For -fwrapv disable -ftrapv, for
10518         -ftrapv disable -fwrapv.
10520 2013-01-14  Georg-Johann Lay  <avr@gjlay.de>
10522         PR target/55974
10523         * config/avr/avr-c.c (avr_cpu_cpp_builtins): Define __FLASH
10524         etc. to 1 and not to __flash.
10525         Use LL suffix for __INT24_MAX__ with -mint8.
10526         Use ULL suffix for __UINT24_MAX__ with -mint8.
10528 2013-01-14  Georg-Johann Lay  <avr@gjlay.de>
10530         * config/avr/avr-arch.h
10531         (struct base_arch_s): Use typedef avr_arch_t instead.
10532         (struct arch_info_s): Use typedef avr_arch_info_t instead.
10533         (struct mcu_type_s): Use typedef avr_mcu_t instead.
10534         * config/avr/avr.c: Same.
10535         * config/avr/avr-devices.c: Same.
10536         * config/avr/driver-avr.c: Same.
10537         * config/avr/gen-avr-mmcu-texi.c: Same.
10538         * config/avr/avr-mcus.def: Adjust comment.
10540 2013-01-14  Tejas Belagod  <tejas.belagod@arm.com>
10542         * config/aarch64/aarch64-simd.md (*aarch64_simd_ld1r<mode>): New.
10543         * config/aarch64/iterators.md (VALLDI): New.
10545 2013-01-14  Uros Bizjak  <ubizjak@gmail.com>
10546             Andi Kleen  <ak@linux.intel.com>
10548         PR target/55948
10549         * config/i386/sync.md (atomic_store<mode>_1): New pattern.
10550         (atomic_store<mode>): Call atomic_store<mode>_1 for IX86_HLE_RELEASE
10551         memmodel flag.
10553 2013-01-14  Georg-Johann Lay  <avr@gjlay.de>
10555         * config/avr/avr-stdint.h: Remove trailing blanks.
10556         * config/avr/avr-log.h: Same.
10557         * config/avr/avr-arch.h: Same.
10558         * config/avr/avr-devices.c: Same.
10559         * config/avr/avr-dimode.md: Same.
10560         * config/avr/predicates.md: Same.
10561         * config/avr/avr-c.c: Same.  And fix typo.
10563         * config/avr/avr-protos.h: Same.  And:
10564         (function_arg_regno_p): Rename to avr_function_arg_regno_p.
10565         (init_cumulative_args): Rename to avr_init_cumulative_args.
10566         (expand_prologue): Rename to avr_expand_prologue.
10567         (expand_epilogue): Rename to avr_expand_epilogue.
10568         (adjust_insn_length): Rename to avr_adjust_insn_length.
10569         (notice_update_cc): Rename to avr_notice_update_cc.
10570         (final_prescan_insn): Rename to avr_final_prescan_insn.
10571         * config/avr/avr.c: Same.
10572         * config/avr/avr.h: Same.
10573         * config/avr/avr.md: Remove trailing blanks.
10574         (prologue): Use avr_expand_prologue.
10575         (epilogue, sibcall_epilogue): Use avr_expand_epilogue.
10577 2013-01-14  Richard Biener  <rguenther@suse.de>
10579         * tree-cfg.c (verify_expr_location, verify_expr_location_1,
10580         verify_location, collect_subblocks): New functions.
10581         (verify_gimple_in_cfg): Verify that locations only reference
10582         BLOCKs in the functions BLOCK tree.
10584 2013-01-14  Richard Biener  <rguenther@suse.de>
10586         * tree-cfgcleanup.c (remove_forwarder_block): Unshare propagated
10587         PHI argument.
10588         * graphite-sese-to-poly.c (insert_out_of_ssa_copy): Properly
10589         unshare reference.
10590         (insert_out_of_ssa_copy_on_edge): Likewise.
10591         (rewrite_close_phi_out_of_ssa): Likewise.
10592         * tree-ssa.c (insert_debug_temp_for_var_def): Properly unshare
10593         debug expressions.
10594         * tree-ssa-pre.c (insert_into_preds_of_block): Properly unshare
10595         propagated constants.
10596         * tree-cfg.c (tree_node_can_be_shared): Handled component-refs
10597         can not be shared.
10599 2013-01-14  Georg-Johann Lay  <avr@gjlay.de>
10601         * config/avr/avr-modes.def: Add GPL copyright notice.
10603 2013-01-13  Uros Bizjak  <ubizjak@gmail.com>
10605         * config/i386/sync.md (mem_thread_fence): Mask operands[0] with
10606         MEMMODEL_MASK to determine memory model.
10607         (atomic_store<mode>): Ditto from operands[2].
10608         * config/i386/i386.c (ix86_memmodel_check): Declare "strong" as bool.
10610 2013-01-13  Jakub Jelinek  <jakub@redhat.com>
10612         PR fortran/55935
10613         * gimple-fold.c (get_symbol_constant_value): Call unshare_expr.
10614         (fold_gimple_assign): Don't call unshare_expr here.
10615         (fold_ctor_reference): Call unshare_expr.
10617 2013-01-13  Terry Guo  <terry.guo@arm.com>
10619         * Makefile.in (s-mlib): New argument MULTILIB_REUSE.
10620         * doc/fragments.texi: Document MULTILIB_REUSE.
10621         * gcc.c (multilib_reuse): New internal spec.
10622         (set_multilib_dir): Also search multilib from multilib_reuse.
10623         * genmultilib (tmpmultilib3): Refactor code.
10624         (tmpmultilib4): Ditto.
10625         (multilib_reuse): New multilib argument.
10627 2013-01-13  Richard Sandiford  <rdsandiford@googlemail.com>
10629         * Makefile.in: Update copyright.
10631 2013-01-12  Tom de Vries  <tom@codesourcery.com>
10633         PR middle-end/55890
10634         * calls.c (expand_call): Check if arg_nr is valid.
10636 2013-01-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
10638         * doc/extend.texi (X86 Built-in Functions): Add whitespace in
10639         __builtin_ia32_paddb256 and __builtin_ia32_pavgb256
10640         documentation.  Add missing '__' in front of
10641         __builtin_ia32_packssdw256.
10643 2013-01-11  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10645         PR target/55719
10646         * config/s390/s390.c (s390_preferred_reload_class): Do not return
10647         NO_REGS for larl operands.
10648         (s390_reload_larl_operand): Use s390_load_address instead of
10649         emit_move_insn.
10651 2013-01-11  Richard Biener  <rguenther@suse.de>
10653         * tree-cfg.c (verify_node_sharing_1): Split out from ...
10654         (verify_node_sharing): ... here.
10655         (verify_gimple_in_cfg): Use verify_node_sharing_1 for walk_tree.
10657 2013-01-11  Eric Botcazou  <ebotcazou@adacore.com>
10659         * configure.ac (Tree checking): Set TREECHECKING to yes if enabled.
10660         Substitute TREECHECKING.
10661         * configure: Regenerate.
10662         * Makefile.in (TREECHECKING): New.
10664 2013-01-11  Richard Guenther  <rguenther@suse.de>
10666         PR tree-optimization/44061
10667         * tree-vrp.c (extract_range_basic): Compute zero as
10668         value-range for __builtin_constant_p of function parameters.
10670 2013-01-10  Richard Sandiford  <rdsandiford@googlemail.com>
10672         Update copyright years.
10674 2013-01-10  Vladimir Makarov  <vmakarov@redhat.com>
10676         PR rtl-optimization/55672
10677         * lra-eliminations.c (mark_not_eliminable): Permit addition with
10678         const to be eliminable.
10680 2013-01-10  David Edelsohn  <dje.gcc@gmail.com>
10682         * configure.ac (HAVE_AS_TLS): Add check for powerpc-ibm-aix.
10683         * configure: Regenerate.
10685 2013-01-10  Richard Biener  <rguenther@suse.de>
10687         * builtins.c (expand_builtin_init_trampoline): Use set_mem_attributes.
10689 2013-01-10  Richard Biener  <rguenther@suse.de>
10691         PR bootstrap/55792
10692         * tree-into-ssa.c (rewrite_add_phi_arguments): Do not set
10693         locations for virtual PHI arguments.
10694         (rewrite_update_phi_arguments): Likewise.
10696 2013-01-10  Joel Sherrill  <joel.sherrill@OARcorp.com>
10698         * config/v850/rtems.h (ASM_SPEC): Pass -m8byte-align and -mgcc-abi
10699         on to assembler.
10701 2013-01-10  Jakub Jelinek  <jakub@redhat.com>
10703         PR tree-optimization/55921
10704         * tree-complex.c (expand_complex_asm): New function.
10705         (expand_complex_operations_1): Call it for GIMPLE_ASM.
10707 2013-01-10  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10709         PR target/55718
10710         * config/s390/s390.c (s390_symref_operand_p)
10711         (s390_loadrelative_operand_p): Merge the two functions.
10712         (s390_check_qrst_address, print_operand_address): Add parameters
10713         to s390_loadrelative_operand_p invokation.
10714         (s390_check_symref_alignment): Use s390_loadrelative_operand_p.
10715         (s390_reload_larl_operand, s390_secondary_reload): Use
10716         s390_loadrelative_operand_p instead of s390_symref_operand_p.
10717         (legitimize_pic_address): Handle @GOTENT and @PLT + addend.
10719 2013-01-09  Mike Stump  <mikestump@comcast.net>
10721         * dse.c (record_store): Remove unnecessary assert.
10723 2013-01-09  Jan Hubicka  <jh@suse.cz>
10725         PR tree-optimization/55569
10726         * cfgloopmanip.c (scale_loop_profile): Make ITERATION_BOUND gcov_type.
10727         * cfgloop.h (scale_loop_profile): Likewise.
10729 2013-01-09  Jan Hubicka  <jh@suse.cz>
10731         PR lto/45375
10732         * ipa-inline.c (ipa_inline): Remove extern inlines and virtual
10733         functions.
10734         * cgraphclones.c (cgraph_clone_node): Cpoy also LTO file data.
10736 2013-01-09  Richard Sandiford  <rdsandiford@googlemail.com>
10738         PR middle-end/55114
10739         * expr.h (maybe_emit_group_store): Declare.
10740         * expr.c (maybe_emit_group_store): New function.
10741         * builtins.c (expand_builtin_int_roundingfn): Call it.
10742         (expand_builtin_int_roundingfn_2): Likewise.
10744 2013-01-09  Vladimir Makarov  <vmakarov@redhat.com>
10746         PR rtl-optimization/55829
10747         * lra-constraints.c (match_reload): Add code for absent output.
10748         (curr_insn_transform): Add code for reloads of matched inputs
10749         without output.
10751 2013-01-09  Uros Bizjak  <ubizjak@gmail.com>
10753         * config/i386/sse.md (*vec_interleave_highv2df): Change mode
10754         attribute of movddup insn to DF.
10755         (*vec_interleave_lowv2df): Ditto.
10756         (vec_dupv2df): Ditto.
10758 2013-01-09  Jan Hubicka  <jh@suse.cz>
10760         PR tree-optimiation/55875
10761         * tree-ssa-loop-niter.c (number_of_iterations_cond): Add
10762         EVERY_ITERATION parameter.
10763         (number_of_iterations_exit): Check if exit is executed every iteration.
10764         (idx_infer_loop_bounds): Similarly here.
10765         (n_of_executions_at_most): Simplify
10766         to only test for cases where statement is dominated by the
10767         particular bound; handle correctly the "postdominance" test.
10768         (scev_probably_wraps_p): Use max loop iterations info
10769         as a global bound first.
10771 2013-01-09  Nguyen Duy Dat  <dat.nguyen.yn@rvc.renesas.com>
10772             Nick Clifton  <nickc@redhat.com>
10774         * config/v850/v850.md (cbranchsf4): New pattern.
10775         (cstoresf4): New pattern.
10776         (cbranchdf4): New pattern.
10777         (cstoredf4): New pattern.
10778         (movsicc): Disallow floating point comparisons.
10779         (cmpsf_le_insn): Fix order of operators.
10780         (cmpsf_lt_insn): Likewise.
10781         (cmpsf_eq_insn): Likewise.
10782         (cmpdf_le_insn): Likewise.
10783         (cmpdf_lt_insn): Likewise.
10784         (cmpdf_eq_insn): Likewise.
10785         (cmpsf_ge_insn): Use LE comparison.
10786         (cmpdf_ge_insn): Likewise.
10787         (cmpsf_gt_insn): Use LT comparison.
10788         (cmpdf_gt_insn): Likewise.
10789         (cmpsf_ne_insn): Delete pattern.
10790         (cmpdf_ne_insn): Delete pattern.
10791         * config/v850/v850.c (v850_gen_float_compare): Use
10792         gen_cmpdf_eq_insn for NE comparison.
10793         (v850_float_z_comparison_operator)
10794         (v850_float_nz_comparison_operator): Move from here ...
10795         * config/v850/predicates.md: ... to here.  Move GT and GE
10796         comparisons into v850_float_z_comparison_operator.
10797         * config/v850/v850-protos.h (v850_float_z_comparison_operator):
10798         Delete prototype.
10799         (v850_float_nz_comparison_operator): Likewise.
10801 2013-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10803         * config/pa/pa.c (pa_emit_move_sequence): Replace calls to gen_insv
10804         with calls to gen_insvsi/gen_insvdi.
10806 2013-01-09  Venkataramanan Kumar  <venkataramanan.kumar@amd.com>
10808         * config/i386/i386.c (initial_ix86_tune_features): Set up
10809         X86_TUNE_AVX128_OPTIMAL for m_BTVER2.
10811 2013-01-09  Steven Bosscher  <steven@gcc.gnu.org>
10812             Jakub Jelinek  <jakub@redhat.com>
10814         PR tree-optimization/48189
10815         * predict.c (predict_loops): If max is 0, don't call compare_tree_int.
10816         If nitercst is 0, don't predict the exit edge.
10818 2013-01-08  Naveen H.S  <Naveen.Hurugalawadi@caviumnetworks.com>
10820         * config/aarch64/aarch64.c (aarch64_print_operand): Replace %r
10821         in asm_fprintf with reg_names.
10822         (aarch64_print_operand_address): Likewise.
10823         (aarch64_return_addr): Likewise.
10824         * config/aarch64/aarch64.h (ASM_FPRINTF_EXTENSIONS): Remove.
10826 2013-01-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10828         * config/pa/pa.h (VAL_U6_BITS_P): Define.
10829         (INT_U6_BITS): Likewise.
10830         * config/pa/predicates.md (uint6_operand): New predicate.
10831         (shift5_operand, shift6_operand): Likewise.
10832         * config/pa/pa.md (lshrsi3, rotrsi3): Use shift5_operand instead of
10833         arith32_operand.
10834         (lshrdi3): Use shift6_operand.
10835         (shrpsi4, shrpdi4): New insn patterns.
10836         (extzv): Delete expander.
10837         (extzvsi, extzvdi): New expanders.  Use uint5_operand and uint6_operand
10838         predicates in unamed zero extract patterns.  Tighten common constraint.
10839         (extv): Delete expander.
10840         (extvsi, extvdi): New expanders.  Use uint5_operand and uint6_operand
10841         predicates in unamed sign extract patterns.  Tighten common constraint.
10842         (insv): Delete expander.
10843         (insvsi, insvdi): New expanders.  Use uint5_operand and uint6_operand
10844         predicates in unamed insert patterns.  Tighten common constraint.
10845         Change uint32_operand predicate to uint6_operand predicate in unamed
10846         DImode pattern to insert constant values of type 1...1xxxx.
10848 2013-01-04  Jan Hubicka  <jh@suse.cz>
10850         PR tree-optimization/55823
10851         * ipa-prop.c (update_indirect_edges_after_inlining): Fix ordering
10852         issue.
10854 2013-01-08  Jakub Jelinek  <jakub@redhat.com>
10855             Uros Bizjak  <ubizjak@gmail.com>
10857         PR rtl-optimization/55845
10858         * df-problems.c (can_move_insns_across): Stop scanning at
10859         volatile_insn_p source instruction or give up if
10860         across_from .. across_to range contains any volatile_insn_p
10861         instructions.
10863 2013-01-08  Tejas Belagod  <tejas.belagod@arm.com>
10865         * config/aarch64/aarch64-simd.md (vec_init<mode>): New.
10866         * config/aarch64/aarch64-protos.h (aarch64_expand_vector_init):
10867         Declare.
10868         * config/aarch64/aarch64.c (aarch64_simd_dup_constant,
10869         aarch64_simd_make_constant, aarch64_expand_vector_init): New.
10871 2013-01-08  Jakub Jelinek  <jakub@redhat.com>
10873         PR fortran/55341
10874         * asan.c (asan_clear_shadow): New function.
10875         (asan_emit_stack_protection): Use it.
10877 2013-01-08  Tejas Belagod  <tejas.belagod@arm.com>
10879         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_<su>mult_lo_<mode>,
10880         aarch64_simd_vec_<su>mult_hi_<mode>): Separate instruction and operand
10881         with tab instead of space.
10883 2013-01-08  Nick Clifton  <nickc@redhat.com>
10885         * config/rl78/rl78.c (rl78_expand_prologue): Always select
10886         register bank 0 at the start of an interrupt handler.
10887         * config/rl78/rl78.md (mulsi3_g13): Correct values for MDBL and
10888         MDBH registers.
10890 2013-01-08  James Greenhalgh  <james.greenhalgh@arm.com>
10892         * config/aarch64/aarch64-simd.md
10893         (aarch64_simd_bsl<mode>_internal): Add floating-point modes.
10894         (aarch64_simd_bsl): Likewise.
10895         (aarch64_vcond_internal<mode>): Likewise.
10896         (vcond<mode><mode>): Likewise.
10897         (aarch64_cm<cmp><mode>): Fix constraints, add new modes.
10898         * config/aarch64/iterators.md (V_cmp_result): Add V2DF.
10900 2013-01-08  James Greenhalgh  <james.greenhalgh@arm.com>
10902         * config/aarch64/aarch64-builtins.c
10903         (aarch64_builtin_vectorized_function): Handle sqrt, sqrtf.
10905 2013-01-08  Martin Jambor  <mjambor@suse.cz>
10907         PR debug/55579
10908         * tree-sra.c (analyze_access_subtree): Return true also after
10909         potentially creating a debug-only replacement.
10911 2013-01-08  Jakub Jelinek  <jakub@redhat.com>
10913         PR middle-end/55890
10914         * tree-ssa-ccp.c (evaluate_stmt): Use gimple_call_builtin_p.
10916         PR tree-optimization/54120
10917         * tree-vrp.c (range_fits_type_p): Don't allow
10918         src_precision < precision from signed vr to unsigned_p
10919         if vr->min or vr->max is negative.
10920         (simplify_float_conversion_using_ranges): Test can_float_p
10921         against CODE_FOR_nothing.
10923 2013-01-08  Jakub Jelinek  <jakub@redhat.com>
10924             Richard Biener  <rguenther@suse.de>
10926         PR middle-end/55851
10927         * fold-const.c (int_binop_types_match_p): Allow all INTEGRAL_TYPE_P
10928         types instead of just INTEGER_TYPE types.
10930 2013-01-07  Mark Kettenis  <kettenis@openbsd.org>
10932         * config/i386/openbsdelf.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT,
10933         TF_SIZE): Define.
10935 2013-01-07  Steve Ellcey  <sellcey@mips.com>
10937         PR target/42661
10938         * config/mips/mips.opt: Change mad to mmad to match documentation.
10940 2013-01-07  Georg-Johann Lay  <avr@gjlay.de>
10942         PR target/55897
10943         * doc/extend.texi (AVR Named Address Spaces): __memx goes into
10944         .progmemx.data now.
10946 2013-01-07  Georg-Johann Lay  <avr@gjlay.de>
10948         PR target/55897
10949         * config/avr/avr.h (ADDR_SPACE_COUNT): New enum.
10950         (avr_addrspace_t): Add .section_name field.
10951         * config/avr/avr.c (progmem_section): Use ADDR_SPACE_COUNT as
10952         array size.
10953         (avr_addrspace): Same.  Initialize .section_name.  Remove last
10954         NULL entry.  Put __memx into .progmemx.data.
10955         (progmem_section_prefix): Remove.
10956         (avr_asm_init_sections): No need to initialize progmem_section.
10957         (avr_asm_named_section): Use avr_addrspace[].section_name to get
10958         section name prefix.
10959         (avr_asm_select_section): Ditto.  And use get_unnamed_section to
10960         retrieve the progmem section.
10961         * avr-c.c (avr_cpu_cpp_builtins): Use ADDR_SPACE_COUNT as loop
10962         boundary to run over avr_addrspace[].
10963         (avr_register_target_pragmas): Ditto.
10965 2013-01-06  Jakub Jelinek  <jakub@redhat.com>
10967         * varasm.c (output_constant_def_contents): For asan_protect_global
10968         protected strings, adjust DECL_ALIGN if needed, before testing for
10969         anchored symbols.
10970         (place_block_symbol): Adjust size for asan protected STRING_CSTs if
10971         TREE_CONSTANT_POOL_ADDRESS_P.  Increase alignment for asan protected
10972         normal decls.
10973         (output_object_block): For asan protected decls, emit asan padding
10974         after their contents.
10975         * asan.c (asan_protect_global): Don't check TREE_ASM_WRITTEN here.
10976         (asan_finish_file): Test it here instead.
10978 2013-01-07  Nick Clifton  <nickc@redhat.com>
10979             Matthias Klose  <doko@debian.org>
10980             Doug Kwan  <dougkwan@google.com>
10981             H.J. Lu  <hongjiu.lu@intel.com>
10983         PR driver/55470
10984         * collect2.c (main): Support -fuse-ld=bfd and -fuse-ld=gold.
10986         * common.opt: Add fuse-ld=bfd and fuse-ld=gold.
10988         * gcc.c (LINK_COMMAND_SPEC): Pass -fuse-ld=* to collect2.
10990         * opts.c (comman_handle_option): Ignore -fuse-ld=bfd and -fuse-ld=gold.
10992         * doc/invoke.texi: Document -fuse-ld=bfd and -fuse-ld=gold.
10994 2013-01-07  Georg-Johann Lay  <avr@gjlay.de>
10996         PR target/54461
10997         * doc/install.texi (Cross-Compiler-Specific Options): Document
10998         --with-avrlibc.
11000 2013-01-07  Tejas Belagod  <tejas.belagod@arm.com>
11002         * config/aarch64/arm_neon.h (vmovn_high_is16, vmovn_high_s32,
11003         vmovn_high_s64, vmovn_high_u16, vmovn_high_u32, vmovn_high_u64,
11004         vqmovn_high_s16, vqmovn_high_s32, vqmovn_high_s64, vqmovn_high_u16,
11005         vqmovn_high_u32, vqmovn_high_u64, vqmovun_high_s16, vqmovun_high_s32,
11006         vqmovun_high_s64): Fix source operand number and update copyright.
11008 2013-01-07  Richard Biener  <rguenther@suse.de>
11010         PR middle-end/55890
11011         * gimple.h (gimple_call_builtin_p): New overload.
11012         * gimple.c (validate_call): New function.
11013         (gimple_call_builtin_p): Likewise.
11014         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
11015         Use gimple_call_builtin_p.
11016         (find_func_clobbers): Likewise.
11017         * tree-ssa-strlen.c (adjust_last_stmt): Likewise.
11018         (strlen_optimize_stmt): Likewise.
11020 2013-01-07  James Greenhalgh  <james.greenhalgh@arm.com>
11022         * config/aarch64/arm_neon.h (vld1_dup_*): Make argument const.
11023         (vld1q_dup_*): Likewise.
11024         (vld1_*): Likewise.
11025         (vld1q_*): Likewise.
11026         (vld1_lane_*): Likewise.
11027         (vld1q_lane_*): Likewise.
11029 2013-01-07  Richard Biener  <rguenther@suse.de>
11031         * lto-streamer.h (LTO_minor_version): Bump to 2.
11033 2013-01-07  James Greenhalgh  <james.greenhalgh@arm.com>
11035         * config/aarch64/aarch64-protos.h
11036         (aarch64_const_double_zero_rtx_p): Rename to...
11037         (aarch64_float_const_zero_rtx_p): ...this.
11038         (aarch64_float_const_representable_p): New.
11039         (aarch64_output_simd_mov_immediate): Likewise.
11040         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>): Refactor
11041         move immediate case.
11042         * config/aarch64/aarch64.c
11043         (aarch64_const_double_zero_rtx_p): Rename to...
11044         (aarch64_float_const_zero_rtx_p): ...this.
11045         (aarch64_print_operand): Allow printing of new constants.
11046         (aarch64_valid_floating_const): New.
11047         (aarch64_legitimate_constant_p): Check for valid floating-point
11048         constants.
11049         (aarch64_simd_valid_immediate): Likewise.
11050         (aarch64_vect_float_const_representable_p): New.
11051         (aarch64_float_const_representable_p): Likewise.
11052         (aarch64_simd_imm_zero_p): Also allow for floating-point 0.0.
11053         (aarch64_output_simd_mov_immediate): New.
11054         * config/aarch64/aarch64.md (*movsf_aarch64): Add new alternative.
11055         (*movdf_aarch64): Likewise.
11056         * config/aarch64/constraints.md (Ufc): New.
11057         (Y): call aarch64_float_const_zero_rtx.
11058         * config/aarch64/predicates.md (aarch64_fp_compare_operand): New.
11060 2013-01-07  Richard Biener  <rguenther@suse.de>
11062         PR tree-optimization/55888
11063         PR tree-optimization/55862
11064         * tree-ssa-pre.c (phi_translate_1): Revert previous change.
11065         (valid_in_sets): Check if a NAME has a leader in AVAIL_OUT,
11066         not if it is contained therein.
11068 2013-01-07  Georg-Johann Lay  <avr@gjlay.de>
11070         * config/avr/t-avr: Typo.
11072 2013-01-07  Georg-Johann Lay  <avr@gjlay.de>
11074         PR55243
11075         * config/avr/t-avr: Don't automatically rebuild
11076         $(srcdir)/config/avr/t-multilib
11077         $(srcdir)/config/avr/avr-tables.opt
11078         $(srcdir)/doc/avr-mmcu.texi
11079         (avr-mcus): New phony target to build them on request.
11080         (s-avr-mlib, s-avr-mmcu-texi): Remove.
11081         * avr/avr-mcus.def: Adjust comments.
11083 2013-01-07  Uros Bizjak  <ubizjak@gmail.com>
11085         * config/i386/i386.c (DEFAULT_PCC_STRUCT_RETURN): Remove.
11087 2013-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
11089         * file-find.c, file-find.h, realmpfr.c: Add FSF as copyright holder.
11091 2013-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
11093         * config/tilepro/gen-mul-tables.cc: Put copyright on one line.
11095 2013-01-05  David Edelsohn  <dje.gcc@gmail.com>
11097         * config/rs6000/aix53.h (LIB_SPEC): Add -lpthreads when compiling
11098         to generate profiling.
11099         * config/rs6000/aix64.h (LIB_SPEC): Same.
11101 2013-01-04  Andrew Pinski  <apinski@cavium.com>
11103         * config/aarch64/aarch64.c (aarch64_fixed_condition_code_regs):
11104         New function.
11105         (TARGET_FIXED_CONDITION_CODE_REGS): Define.
11107 2013-01-04  Uros Bizjak  <ubizjak@gmail.com>
11109         * config/i386/i386.c (ix86_legitimize_address): Call convert_to_mode
11110         unconditionally.
11111         (ix86_expand_move): Ditto.
11112         (ix86_zero_extend_to_Pmode): Ditto.
11113         (ix86_expand_call): Ditto.
11114         (ix86_expand_special_args_builtin): Ditto.
11115         (ix86_expand_builtin): Ditto.
11117 2013-01-04  Richard Biener  <rguenther@suse.de>
11119         PR tree-optimization/55862
11120         * tree-ssa-pre.c (phi_translate_1): Valueize SSA names after
11121         translating them through PHI nodes.
11123 2013-01-04  Martin Jambor  <mjambor@suse.cz>
11125         PR tree-optimization/55755
11126         * tree-sra.c (sra_modify_assign): Do not check that an access has no
11127         children when trying to avoid producing a VIEW_CONVERT_EXPR.
11129 2013-01-04  Marek Polacek  <polacek@redhat.com>
11131         PR middle-end/55859
11132         * opts.c (default_options_optimization): Clarify error message.
11134 2013-01-04  Richard Biener  <rguenther@suse.de>
11136         PR middle-end/55863
11137         * fold-const.c (split_tree): Undo -X - 1 to ~X folding for
11138         reassociation.
11140 2013-01-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11142         PR target/53789
11143         * config/pa/pa.md (movsi): Revert previous change.
11144         * config/pa/pa.c (pa_legitimate_constant_p): Reject all TLS symbol
11145         references.
11147 2013-01-03  Richard Henderson  <rth@redhat.com>
11149         * config/i386/i386.c (ix86_expand_move): Always assign to op1
11150         after eliminating TLS symbols.
11152 2013-01-03  Marc Glisse  <marc.glisse@inria.fr>
11154         PR bootstrap/50167
11155         * graphite-interchange.c (pdr_stride_in_loop): Use gmp_fprintf.
11156         * graphite-poly.c (debug_gmp_value): Likewise.
11158 2013-01-03  Uros Bizjak  <ubizjak@gmail.com>
11160         PR target/55712
11161         * config/i386/i386-c.c (ix86_target_macros_internal): Depending on
11162         selected code model, define __code_mode_small__, __code_model_medium__,
11163         __code_model_large__, __code_model_32__ or __code_model_kernel__.
11164         * config/i386/cpuid.h (__cpuid, __cpuid_count) [__i386__]: Prefix
11165         xchg temporary register with %k.  Declare temporary register as
11166         early clobbered.
11167         [__x86_64__]: For medium and large code models, preserve %rbx register.
11169 2013-01-03  Richard Biener  <rguenther@suse.de>
11171         * tree-data-ref.c (dump_conflict_function): Use less vertical spacing.
11172         (dump_subscript): Adjust.
11173         (finalize_ddr_dependent): Do not dump redundant info.
11174         (analyze_siv_subscript): Adjust.
11175         (subscript_dependence_tester): Likewise.
11176         (compute_affine_dependence): Likewise.
11178 2013-01-03  Richard Biener  <rguenther@suse.de>
11180         Revert
11181         2013-01-03  Richard Biener  <rguenther@suse.de>
11183         PR tree-optimization/55857
11184         * tree-vect-stmts.c (vectorizable_load): Do not setup
11185         re-alignment for invariant loads.
11187         2013-01-02  Richard Biener  <rguenther@suse.de>
11189         * tree-vect-stmts.c (vectorizable_load): When vectorizing an
11190         invariant load do not generate a vector load from the scalar location.
11192 2013-01-03  Richard Biener  <rguenther@suse.de>
11194         * tree-vect-loop.c (vect_analyze_loop_form): Clarify reason
11195         for not vectorizing.
11196         * tree-vect-data-refs.c (vect_create_addr_base_for_vector_ref): Do
11197         not build INDIRECT_REFs, call get_name once only.
11198         (vect_create_data_ref_ptr): Likewise.  Dump base object kind
11199         based on DR_BASE_OBJECT, not DR_BASE_ADDRESS.
11201 2013-01-03  Richard Biener  <rguenther@suse.de>
11203         PR tree-optimization/55857
11204         * tree-vect-stmts.c (vectorizable_load): Do not setup
11205         re-alignment for invariant loads.
11207 2013-01-03  Richard Biener  <rguenther@suse.de>
11209         PR lto/55848
11210         * lto-symtab.c (lto_symtab_merge_decls_1): As last resort, always
11211         prefer a built-in decl.
11213 2013-01-03  Jakub Jelinek  <jakub@redhat.com>
11215         * gcc.c (process_command): Update copyright notice dates.
11216         * gcov.c (print_version): Likewise.
11217         * gcov-dump.c (print_version): Likewise.
11219         PR rtl-optimization/55838
11220         * loop-iv.c (iv_number_of_iterations): Call lowpart_subreg on
11221         iv0.step, iv1.step and step.
11223 2013-01-03  Jakub Jelinek  <jakub@redhat.com>
11224             Marc Glisse  <marc.glisse@inria.fr>
11226         PR tree-optimization/55832
11227         * fold-const.c (fold_binary_loc): For ABS_EXPR<x> >= 0 and
11228         ABS_EXPR<x> < 0 folding use constant_boolean_node instead of
11229         integer_{one,zero}_node.
11231 2013-01-03  Jakub Jelinek  <jakub@redhat.com>
11233         PR debug/54402
11234         * params.def (PARAM_MAX_VARTRACK_REVERSE_OP_SIZE): New param.
11235         * var-tracking.c (reverse_op): Don't add reverse ops to
11236         VALUEs that have already
11237         PARAM_VALUE (PARAM_MAX_VARTRACK_REVERSE_OP_SIZE) or longer locs list.
11239 2013-01-02  Gerald Pfeifer  <gerald@pfeifer.com>
11241         * doc/contrib.texi: Note years as release manager for Mark Mitchell.
11243 2013-01-02  Teresa Johnson  <tejohnson@google.com>
11245         * dumpfile.c (dump_loc): Print filename with location.
11246         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Use
11247         new location_t parameter to emit complete unroll message with
11248         new dump framework.
11249         (canonicalize_loop_induction_variables): Compute loops location
11250         and pass to try_unroll_loop_completely.
11251         * loop-unroll.c (report_unroll_peel): New function.
11252         (peel_loops_completely): Use new dump format with location
11253         for main dumpfile message, and invoke report_unroll_peel on success.
11254         (decide_unrolling_and_peeling): Ditto.
11255         (decide_peel_once_rolling): Remove old dumpfile message subsumed
11256         by report_unroll_peel.
11257         (decide_peel_completely): Ditto.
11258         (decide_unroll_constant_iterations): Ditto.
11259         (decide_unroll_runtime_iterations): Ditto.
11260         (decide_peel_simple): Ditto.
11261         (decide_unroll_stupid): Ditto.
11262         * cfgloop.c (get_loop_location): New function.
11263         * cfgloop.h (get_loop_location): Declare.
11265 2013-01-02  Sriraman Tallam  <tmsriram@google.com>
11267         * config/i386/i386.c (fold_builtin_cpu): Remove unnecessary checks for
11268         NULL.
11270 2013-01-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11272         PR middle-end/55198
11273         * expr.c (expand_expr_real_1): Don't use bitfield extraction for non
11274         BLKmode objects when EXPAND_MEMORY is specified.
11276 2013-01-02  Sriraman Tallam  <tmsriram@google.com>
11278         * config/i386/i386.c (ix86_get_function_versions_dispatcher): Fix bug
11279         in loop predicate.
11280         (fold_builtin_cpu): Do not share cpu model decls across statements.
11282 2013-01-02  Jason Merrill  <jason@redhat.com>
11284         PR c++/55804
11285         * tree.c (build_array_type_1): Revert earlier change.
11287 2013-01-02  Yufeng Zhang  <yufeng.zhang@arm.com>
11289         * config/aarch64/aarch64-cores.def: Add entries for "cortex-a53" and
11290         "cortex-a57".
11291         * config/aarch64/aarch64-tune.md: Re-generate.
11293 2013-01-02  Richard Biener  <rguenther@suse.de>
11295         * tree-vect-stmts.c (vectorizable_load): When vectorizing an
11296         invariant load do not generate a vector load from the scalar location.
11298 2013-01-02  Richard Biener  <rguenther@suse.de>
11300         PR bootstrap/55784
11301         * configure.ac: Add $GMPINC to CFLAGS/CXXFLAGS.
11302         * configure: Regenerate.
11304 2013-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
11306         * builtins.c (expand_builtin_mathfn, expand_builtin_mathfn_2)
11307         (expand_builtin_mathfn_ternary, expand_builtin_mathfn_3)
11308         (expand_builtin_int_roundingfn_2): Keep the original target around
11309         for the fallback case.
11311 2013-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
11313         * tree-vrp.c (range_fits_type_p): Require the MSB of the double_int
11314         to be clear for sign changes.
11316 2013-01-01  Jan Hubicka  <jh@suse.cz>
11318         * ipa-inline-analysis.c: Fix formatting.
11320 2013-01-01  Jakub Jelinek  <jakub@redhat.com>
11322         PR tree-optimization/55831
11323         * tree-vect-loop.c (get_initial_def_for_induction): Use
11324         gsi_after_labels instead of gsi_start_bb.
11326 Copyright (C) 2013 Free Software Foundation, Inc.
11328 Copying and distribution of this file, with or without modification,
11329 are permitted in any medium without royalty provided the copyright
11330 notice and this notice are preserved.