OSDN Git Service

* common/config/c6x/c6x-common.c (c6x_option_optimization_table):
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
2
3         * common/config/c6x/c6x-common.c (c6x_option_optimization_table):
4         Enable -fmodulo-sched at -O2 and above.
5         * config/c6x/c6x.md (doloop_end): New expander.
6         (mvilc, sploop, spkernel, loop_end): New patterns.
7         (loop_end with memory destination splitter): New.
8         * config/c6x/c6x.c: Include "hw-doloop.h".
9         (enum unitreqs): New.
10         (unit_req_table): New typedef.
11         (unit_reqs): New static variable.
12         (unit_req_factor, get_unit_reqs, count_unit_reqs, merge_unit_reqs,
13         res_mii, split_delayed_nonbranch, undo_split_delayed_nonbranch,
14         hwloop_pattern_reg, bb_earliest_end_cycle, filter_insns_above,
15         hwloop_optimize, hwloop_fail, c6x_hwloops): New static functions.
16         (struct c6x_sched_context): New member last_scheduled_iter0.
17         (init_sched_state): Initialize it.
18         (c6x_variable_issue): Update it.
19         (sploop_max_uid_iter0): New static variable.
20         (c6x_sched_reorder_1): Be careful about issuing sploop.
21         (c6x_reorg): Call c6x_hwlooops before the final schedule.
22
23 2011-09-30  Georg-Johann Lay  <avr@gjlay.de>
24
25         PR target/50566
26         * config/avr/avr-protos.h (avr_log_t): New field address_cost.
27         * config/avr/avr.c (avr_address_cost): Use it.
28         * config/avr/avr-log.c (avr_log_set_avr_log): Initialize it.
29         (avr_log_vadump): Unknown %-codes finish printing.
30
31 2011-09-30  Jakub Jelinek  <jakub@redhat.com>
32
33         PR inline-asm/50571
34         * gimple-fold.c (fold_stmt_1) <case GIMPLE_ASM>: If
35         input constraints allow mem and not reg, pass true instead of
36         false as second argument to maybe_fold_reference.
37
38         PR tree-optimization/46309
39         * fold-const.c (make_range, merge_ranges): Remove prototypes.
40         (make_range_step): New function.
41         (make_range): Use it.
42         * tree.h (make_range_step): New prototypes.
43         * Makefile.in (tree-ssa-reassoc.o): Depend on $(DIAGNOSTIC_CORE_H).
44         * tree-ssa-reassoc.c: Include diagnostic-core.h.
45         (struct range_entry): New type.
46         (init_range_entry, range_entry_cmp, update_range_test,
47         optimize_range_tests): New functions.
48         (reassociate_bb): Call optimize_range_tests.
49
50 2011-09-30  Jakub Jelinek  <jakub@redhat.com>
51             Richard Guenther  <rguenther@suse.de>
52
53         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): Handle
54         BUILT_IN_STRDUP and BUILT_IN_STRNDUP.
55         * tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise.  Fix
56         handling of BUILT_IN_STRNCAT and BUILT_IN_STRNCAT_CHK.
57         (ref_maybe_used_by_call_p_1): Fix handling of BUILT_IN_STRCAT,
58         BUILT_IN_STRNCAT, BUILT_IN_STRCAT_CHK and BUILT_IN_STRNCAT_CHK.
59
60 2011-09-30  Jan Beulich  <jbeulich@suse.com>
61
62         * lto-cgraph.c (output_cgraph): Remove processing of
63         'cgraph_asm_nodes', call lto_output_toplevel_asms() instead.
64         (input_cgraph_1): Remove loop calling cgraph_add_asm_node(), call
65         lto_input_toplevel_asms() instead.
66         * lto-section-in.c (lto_section_name): Add "asm" entry.
67         * lto-streamer-in.c (lto_input_toplevel_asms): New.
68         * lto-streamer-out.c (lto_output_toplevel_asms): New.
69         * lto-streamer.h (LTO_minor_version): Bump.
70         (enum lto_section_type): Add LTO_section_asm.
71         (struct lto_asm_header): New.
72         (lto_input_toplevel_asms, lto_output_toplevel_asms): Declare.
73         * tree-streamer.h (streamer_write_string_cst): Declare.
74         * tree-streamer-out.c (write_string_cst): Rename to
75         streamer_write_string_cst and make global. Handle incoming string
76         being NULL.
77         (streamer_write_tree_header): Adjust call to renamed function.
78
79 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
80
81         * haifa-sched.c (modulo_ii, modulo_max_states, modulo_n_insns,
82         modulo_insns_scheduled, modulo_iter0_max_uid, modulo_backtracks_left,
83         modulo_last_stage): New static variables.
84         (set_modulo_params, discard_delay_pairs_above): New functions.
85         (struct delay_pair): New member stages.
86         (htab_i2_traverse, htab_i1_traverse): New static functions.
87         (record_delay_slot_pair): New arg stages.  All callers changed.
88         Record it.
89         (pair_delay): Take stages into account.
90         (add_delay_dependencies): Don't do so for stage pairs.
91         (struct sched_block_state): New member modulo_epilogue.
92         (save_backtrack_point): Don't set SHADOW_P for stage pairs.
93         (unschedule_insns_until): Decrease modulo_insns_scheduled.
94         Set HARD_DEP without using or.
95         (resolve_dependencies): New static function.
96         (prune_ready_list): New arg modulo_epilogue_p.  All callers changed.
97         If it is true, allow only insns with INSN_EXACT_TICK set.
98         (schedule_block): Return bool, always true for normal scheduling,
99         true or false depending on modulo scheduling success otherwise.
100         Add bookkeeping for modulo scheduling, and call resolve_dependencies
101         on everything left over after a modulo schedule.
102         (haifa_sched_init): Remove check_cfg call.  Clear modulo_ii.
103         * sched-int.h (schedule_block, record_delay_slot_pair): Adjust
104         declarations.
105         (set_modulo_params, discard_delay_pairs_above): Declare.
106         * params.def (PARAM_MAX_MODULO_BACKTRACK_ATTEMPS): New.
107         * doc/invoke.texi (--param): Document it.
108
109         * sched-ebb.c (schedule_ebb): No longer static.  Remove declaration.
110         New arg modulo_scheduling.  All callers changed.  Move note handling
111         code here from schedule_ebbs.
112         (schedule_ebbs_finish, schedule_ebbs_init): New functions, broken
113         out of schedule_ebbs.
114         (schedule_ebbs): Call them.  Remove note handling code moved to
115         schedule_ebb.
116         * sched-int.h (schedule_ebb, schedule_ebbs_init,
117         schedule_ebbs_finish): Declare.
118
119 2011-09-30  Richard Guenther  <rguenther@suse.de>
120
121         PR middle-end/50574
122         * tree-cfg.c (verify_gimple_comparison): Compare component
123         mode sizes for vector comparisons.
124
125 2011-09-30  Revital Eres  <revital.eres@linaro.org>
126
127         * ddg.c (autoinc_var_is_used_p): New function.
128         (create_ddg_dep_from_intra_loop_link,
129         add_cross_iteration_register_deps): Call it.
130         * ddg.h (autoinc_var_is_used_p): Declare.
131         * modulo-sched.c (generate_reg_moves): Call autoinc_var_is_used_p.
132         (sms_schedule): Handle instructions with REG_INC.
133
134 2011-09-30  Revital Eres  <revital.eres@linaro.org>
135
136         * modulo-sched.c (generate_reg_moves): Skip instructions that
137         do not set a register and verify no regmoves are created for
138         !single_set instructions.
139
140 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
141
142         * hw-doloop.c (scan_loop): Compute register usage only for non-debug
143         insns.
144
145 2011-09-30  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
146
147         PR target/50099
148         * config/arm/iterators.md (qhs_zextenddi_cstr): New.
149         (qhs_zextenddi_op): New.
150         * config/arm/arm.md ("zero_extend<mode>di2"): Use them.
151         * config/arm/predicates.md ("arm_extendqisi_mem_op"):
152         Distinguish between ARM and Thumb2 states.
153
154 2011-09-30  David S. Miller  <davem@davemloft.net>
155
156         * config/sparc/sparc.opt (VIS2): New option.
157         * doc/invoke.texi: Document it.
158         * config/sparc/sparc.md (UNSPEC_EDGE8N, UNSPEC_EDGE8LN,
159         UNSPEC_EDGE16N, UNSPEC_EDGE16LN, UNSPEC_EDGE32N,
160         UNSPEC_EDGE32LN, UNSPEC_BSHUFFLE): New unspecs.
161         (define_attr type): New insn type 'edgen'.
162         (bmask<P:mode>_vis, bshuffle<V64I:mode>_vis, edge8n<P:mode>_vis,
163         edge8ln<P:mode>_vis, edge16n<P:mode>_vis, edge16ln<P:mode>_vis,
164         edge32n<P:mode>_vis, edge32ln<P:mode>_vis): New insn VIS 2.0
165         patterns.
166         * niagara.md: Handle edgen.
167         * niagara2.md: Likewise.
168         * ultra1_2.md: Likewise.
169         * ultra3.md: Likewise.
170         * config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__
171         to 0x200 when TARGET_VIS2.
172         * config/sparc/sparc.c (sparc_option_override): Set MASK_VIS2 by
173         default when targetting capable cpus.  TARGET_VIS2 implies
174         TARGET_VIS, clear and it when TARGET_FPU is disabled.
175         (sparc_vis_init_builtins): Emit new VIS 2.0 builtins.
176         (sparc_expand_builtin): Fix predicate indexing when builtin returns
177         void.
178         (sparc_fold_builtin): Do not eliminate bmask when result is ignored.
179         * config/sparc/visintrin.h (__vis_bmask, __vis_bshuffledi,
180         __vis_bshufflev2si, __vis_bshufflev4hi, __vis_bshufflev8qi,
181         __vis_edge8n, __vis_edge8ln, __vis_edge16n, __vis_edge16ln,
182         __vis_edge32n, __vis_edge32ln): New VIS 2.0 interfaces.
183         * doc/extend.texi: Document new VIS 2.0 builtins.
184
185 2011-09-29  Nick Clifton  <nickc@redhat.com>
186             Bernd Schmidt  <bernds@codesourcery.com>
187
188         * config/frv/frvbegin.c: Fix location of unwind-dw2-fde.h header
189         file.
190         * config/frv/frvend.c: Likewise.
191         * config/frv/frv.c (frv_function_prologue): Move misplaced
192         CALL_ARG_LOCATION notes back to their proper locations.
193
194 2011-09-29  Georg-Johann Lay  <avr@gjlay.de>
195
196         PR target/50566
197         * config/avr/avr-log.c (avr_log_vadump): Use %b to print bool.
198         * config/avr/avr.c (avr_rtx_costs_1): New static function, renamed
199         from avr_rtx_costs.
200         (avr_legitimate_address_p): Use avr_edump to print log information
201         filtered by avr_log.
202         (extra_constraint_Q): Ditto.
203         (avr_legitimize_address): Ditto.
204         (avr_rtx_costs): Ditto.  Rewrite as wrapper for avr_rtx_costs_1.
205         (final_prescan_insn): Use avr_log.rtx_costs as filter.
206
207 2011-09-29  Richard Sandiford  <richard.sandiford@linaro.org>
208
209         * config/arm/arm-protos.h (arm_modes_tieable_p): Declare.
210         * config/arm/arm.h (MODES_TIEABLE_P): Use it.
211         * config/arm/arm.c (arm_modes_tieable_p): New function.  Allow
212         NEON vector and structure modes to be tied.
213
214 2011-09-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
215
216         * graphite-scop-detection.c (make_close_phi_nodes_unique):  New
217         forward declaration.
218         (remove_duplicate_close_phi): Detect and repair creation of
219         duplicate close-phis for a containing loop.
220
221 2011-09-27   Andi Kleen <ak@linux.intel.com>
222
223         * gcc.c (get_local_tick). Rename to get_random_number.
224         Read from /dev/urandom.
225         Add getpid call.
226         (compare_debug_dump_opt_spec_function): Drop getpid call.
227
228 2011-09-26   Andi Kleen <ak@linux.intel.com>
229
230         * toplev.c (init_local_tick): Try reading random seed from /dev/urandom
231
232 2011-09-26   Andi Kleen <ak@linux.intel.com>
233
234         * hwint.h (HOST_WIDE_INT_PRINT_HEX_PURE): Add.
235         * lto-streamer.c (lto_get_section_name): Remove crc32_string.
236         Handle numerical random seed.
237         * lto-streamer.h (lto_file_decl_data): Change id to unsigned HOST_WIDE_INT.
238         * toplev.c (random_seed): Add.
239         (init_random_seed): Change for numerical random seed.
240         (get_random_seed): Return as HOST_WIDE_INT.
241         (set_random_seed): Crc32 existing string.
242         * toplev.h (get_random_seed): Change to numercal return.
243         * tree.c (get_file_function_name): Remove CRC. Handle numerical random seed.
244
245 2011-09-29  Georg-Johann Lay  <avr@gjlay.de>
246
247         PR target/50566
248         * config.gcc (extra_objs): Add avr-log.o for $target in:
249         avr-*-rtems*, avr-*-*.
250         * config/avr/t-avr (avr-log.o): New rule to compile...
251         * config/avr/avr-log.c: ...this new file.
252         * config/avr/avr.opt (mlog=): New option.
253         * config/avr/avr-protos.h (avr_edump, avr_fdump): New macros.
254         (avr_log_set_caller_e, avr_log_set_caller_f): New prototypes.
255         (avr_log_set_avr_log): New prototype.
256         (avr_log_t): New typedef.
257         (avr_log): New declaration.
258         * config/avr/avr.c (avr_option_override): Call avr_log_set_avr_log.
259
260 2011-09-29  Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
261
262         * expr.c (do_store_flag): Expand vector comparison by
263         building an appropriate VEC_COND_EXPR.
264         * c-typeck.c (build_binary_op): Typecheck vector comparisons.
265         (c_objc_common_truthvalue_conversion): Adjust.
266         * tree-vect-generic.c (do_compare): Helper function.
267         (expand_vector_comparison): Check if hardware supports
268         vector comparison of the given type or expand vector
269         piecewise.
270         (expand_vector_operation): Treat comparison as binary
271         operation of vector type.
272         (expand_vector_operations_1): Adjust.
273
274 2011-09-29  Richard Guenther  <rguenther@suse.de>
275
276         * tree.c (build_opaque_vector_type): Make opaque vectors
277         variant types of the corresponding non-opaque type.  Make
278         sure to share opaque vector types properly.
279
280 2011-09-29  David S. Miller  <davem@davemloft.net>
281
282         * config/sparc/sparc.md (UNSPEC_ARRAY8, UNSPEC_ARRAY16,
283         UNSPEC_ARRAY32): New unspec.
284         (define_attr type): New type 'array'.
285         (array{8,16,32}<P:mode>_vis): New patterns.
286         * config/sparc/ultra1_2.md: Add reservations for 'array'.
287         * config/sparc/ultra3.md: Likewise.
288         * config/sparc/niagara.md: Likewise.
289         * config/sparc/niagara2.md: Likewise.
290         * config/sparc/sparc.c (sparc_vis_init_builtins): Build new
291         array builtins.
292         * config/sparc/visintrin.h (__vis_array8, __vis_array16,
293         __vis_array32): New.
294         * doc/extend.texi: Document new VIS builtins.
295
296         * config/sparc/sparc.md (gcond_name): Delete unnecessary code attr.
297         (VIS pixel-compare insn): Just use <gcond:name>.
298
299         * config/sparc/sparc.md (VIS pixel-compare insn): There is only one
300         code iterator used, so just use <code>.  There are two mode iterators
301         so explicitly use <GCM:gcm_name>.
302
303 2011-09-29  Iain Sandoe  <iains@gcc.gnu.org>
304
305         * config/darwin9.h (STACK_CHECK_STATIC_BUILTIN): Enable for
306         Darwin >= 9.
307
308 2011-09-28  David S. Miller  <davem@davemloft.net>
309
310         * config/sparc/sparc.md (UNSPEC_FCMPLE, UNSPEC_FCMPNE,
311         UNSPEC_FCMPGT, UNSPEC_FCMPEQ): Delete and reduce to...
312         (UNSPEC_FCMP): New unspec.
313         (gcond): New code iterator.
314         (gcond_name): New code attr.
315         (GCM): New mode iterator.
316         (gcm_name): New mode attr.
317         (fcmp{le,ne,gt,eq}{16,32}_vis): Reimplement using iterators.
318
319 2011-09-28  Oleg Endo  <oleg.endo@t-online.de>
320
321         PR target/49486
322         * config/sh/sh.md (negdi2): Move expansion into split to
323         allow more combination options.  Add T_REG clobber.
324         (abssi2): New expander.
325         (*negdi2, *abssi2, *negabssi2): New insns.
326         (cneg): Change from insn to insn_and_split.  Rename to
327         negsi_cond.  Add alternative for non-SH4.
328
329 2011-09-28  Richard Sandiford  <richard.sandiford@linaro.org>
330
331         * config/arm/neon.md (neon_move_lo_quad_<mode>): Delete.
332         (neon_move_hi_quad_<mode>): Likewise.
333         (move_hi_quad_<mode>, move_lo_quad_<mode>): Use subreg moves.
334
335 2011-09-28  Nick Clifton  <nickc@redhat.com>
336
337         * config/rx/predicates.md (rx_minmax_operand): New predicate.
338         Accepts immediates and a restricted subset of MEMs.
339         * config/rx/rx.md (int_modes): New iterator.
340         (smaxsi3, sminsi3): Delete and replace with...
341         (smax<int_mode>3, smin<int_mode>3): New patterns.
342         (umax<>3_u, umax<>3_ur, umax<>3, umin<>3): New patterns.
343
344 2011-09-28  Richard Guenther  <rguenther@suse.de>
345
346         PR middle-end/50460
347         * fold-const.c (try_move_mult_to_index): Handle &a.array the
348         same as &a.array[0].
349
350 2011-09-28  Kai Tietz  <ktietz@redhat.com>
351
352         * configure.ac: Add test for new section attribute
353         specifier "e" via define HAVE_GAS_SECTION_EXCLUDE.
354         * config.in: Regenerated.
355         * configure: Regenerated.
356         * config/i386/winnt.c (i386_pe_asm_named_section): Emit
357         new section flag "e" for excluded sections, if supported.
358         Otherwise we mark section withc SECTION_EXCLUDE flag as never-load.
359
360 2011-09-28  Richard Sandiford  <rdsandiford@googlemail.com>
361
362         * config/m32r/m32r.md: Use match_test rather than eq/ne symbol_ref
363         throughout file.
364
365 2011-09-28  Richard Sandiford  <rdsandiford@googlemail.com>
366
367         * config/iq2000/iq2000.md: Use match_test rather than eq/ne symbol_ref
368         throughout file.
369
370 2011-09-27  Sriraman Tallam  <tmsriram@google.com>
371
372         * output.h (SECTION_EXCLUDE): New macro.
373         * varasm.c (default_elf_asm_named_section): Check for SECTION_EXCLUDE.
374
375 2011-09-27  Richard Sandiford  <rdsandiford@googlemail.com>
376
377         * fwprop.c (forward_propagate_and_simplify): After checking
378         reg/subreg combinations, check whether the modes are the same.
379
380 2011-09-27  Bernd Schmidt  <bernds@codesourcery.com>
381             Richard Sandiford  <rdsandiford@googlemail.com>
382
383         * config/mips/mips.c (mips_add_cfa_restore): New function.
384         (mips16e_save_restore_reg): Use it.
385         (mips_restore_reg): Likewise.  Split double FPRs for
386         REG_CFA_RESTORE notes.
387
388 2011-09-27  Richard Sandiford  <rdsandiford@googlemail.com>
389
390         PR middle-end/50386
391         PR middle-end/50326
392         * tree-sra.c (build_ref_for_model): Use the type of the field as
393         the type of the COMPONENT_REF.
394
395 2011-09-27  Jeff Law  <law@redhat.com>
396
397         * ifcvt.c (cheap_bb_rtx_cost_p): Add SCALE argument.  Scale
398         non-jumping insns by REG_BR_PROB_BASE and the maximum cost by SCALE.
399         (find_if_case_1): Use the probability of the THEN clause when
400         determining if speculation is profitable.
401         (find_if_case_2): Similarly for the ELSE clause.
402
403 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
404
405         * common.opt: Add -foptimize-strlen option.
406         * Makefile.in (OBJS): Add tree-ssa-strlen.o.
407         (tree-sssa-strlen.o): Add dependencies.
408         * opts.c (default_options_table): Enable -foptimize-strlen
409         by default at -O2 if not -Os.
410         * passes.c (init_optimization_passes): Add pass_strlen
411         after pass_object_sizes.
412         * timevar.def (TV_TREE_STRLEN): New timevar.
413         * params.def (PARAM_MAX_TRACKED_STRLENS): New parameter.
414         * tree-pass.h (pass_strlen): Declare.
415         * tree-ssa-strlen.c: New file.
416         * c-decl.c (merge_decls): If compatible stpcpy prototype
417         is seen, set implicit_built_in_decls[BUILT_IN_STPCPY].
418
419 2011-09-27  Tom de Vries  <tom@codesourcery.com>
420
421         PR middle-end/43864
422         * tree-ssa-tail-merge.c: New file.
423         (struct same_succ_def): Define.
424         (same_succ, const_same_succ): New typedef.
425         (struct bb_cluster_def): Define.
426         (bb_cluster, const_bb_cluster): New typedef.
427         (struct aux_bb_info): Define.
428         (BB_SIZE, BB_SAME_SUCC, BB_CLUSTER, BB_VOP_AT_EXIT): Define.
429         (gvn_uses_equal): New function.
430         (same_succ_print, same_succ_print_traverse, update_dep_bb)
431         (stmt_update_dep_bb, local_def, same_succ_hash)
432         (inverse_flags, same_succ_equal, same_succ_alloc, same_succ_delete)
433         (same_succ_reset): New function.
434         (same_succ_htab, same_succ_edge_flags)
435         (deleted_bbs, deleted_bb_preds): New var.
436         (debug_same_succ): New function.
437         (worklist): New var.
438         (print_worklist, add_to_worklist, find_same_succ_bb, find_same_succ)
439         (init_worklist, delete_worklist, delete_basic_block_same_succ)
440         (same_succ_flush_bbs, purge_bbs, update_worklist): New function.
441         (print_cluster, debug_cluster, update_rep_bb)
442         (add_bb_to_cluster, new_cluster, delete_cluster): New function.
443         (all_clusters): New var.
444         (alloc_cluster_vectors, reset_cluster_vectors, delete_cluster_vectors)
445         (merge_clusters, set_cluster): New function.
446         (gimple_equal_p, gsi_advance_bw_nondebug_nonlocal, find_duplicate)
447         (same_phi_alternatives_1, same_phi_alternatives, bb_has_non_vop_phi)
448         (deps_ok_for_redirect_from_bb_to_bb, deps_ok_for_redirect)
449         (find_clusters_1, find_clusters): New function.
450         (update_vuses, vop_phi, vop_at_entry, replace_block_by): New function.
451         (update_bbs): New var.
452         (apply_clusters): New function.
453         (update_debug_stmt, update_debug_stmts): New function.
454         (tail_merge_optimize): New function.
455         tree-pass.h (tail_merge_optimize): Declare.
456         * tree-ssa-pre.c (execute_pre): Use tail_merge_optimize.
457         * Makefile.in (OBJS-common): Add tree-ssa-tail-merge.o.
458         (tree-ssa-tail-merge.o): New rule.
459         * opts.c (default_options_table): Set OPT_ftree_tail_merge by
460         default at OPT_LEVELS_2_PLUS.
461         * tree-ssa-sccvn.c (vn_valueize): Move to ...
462         * tree-ssa-sccvn.h (vn_valueize): Here.
463         * timevar.def (TV_TREE_TAIL_MERGE): New timevar.
464         * common.opt (ftree-tail-merge): New switch.
465         * params.def (PARAM_MAX_TAIL_MERGE_COMPARISONS)
466         (PARAM_MAX_TAIL_MERGE_ITERATIONS): New parameter.
467         * doc/invoke.texi (Optimization Options, -O2): Add -ftree-tail-merge.
468         (-ftree-tail-merge, max-tail-merge-comparisons)
469         (max-tail-merge-iterations): New item.
470
471 2011-09-27  Jan Hubicka  <jh@suse.cz>
472
473         * ipa-inline-analysis.c (MAX_TIME): Reduce to avoid overflows.
474
475 2011-09-27  Jan Hubicka  <jh@suse.cz>
476
477         * ipa-inline-analysis.c (eliminated_by_inlining_prob): Handle
478         parameters passed by reference; handle loads from non-SSA scalars
479         and update comments.
480
481 2011-09-27  Bernd Schmidt  <bernds@codesourcery.com>
482
483         PR rtl-optimization/50249
484         * reload1.c (reload_reg_reaches_end_p): Accept a reloadnum argument
485         instead of opnum and type.  All callers changed.  Remove useless
486         declaration.
487         Search forward for other reloads of the same type for the same operand
488         using the same register; if any are found, return false.
489         (reload_regs_reach_end_p): Same argument changes; all callers changed.
490
491 2011-09-27  Andi Kleen  <ak@linux.intel.com>
492             Jan Hubicka  <jh@suse.cz>
493
494         * doc/invoke.texi (ffat-lto-objects): Document.
495         * toplev.c (compile_file): Do not output assembly when doing slim lto;
496         Output __gnu_slim_lto when doing slim lto.
497         * cgraphunit.c (ipa_passes): Do only analysis when producing slim lto.
498         (cgraph_optimize): Return early when doing slim lto.
499         * opts.c (finish_options): Complain about lack of linker plugin
500         when doing slim lto.
501         * common.opt (ffat-lto-objects): New.
502
503 2011-09-27  Richard Sandiford  <richard.sandiford@linaro.org>
504
505         * ipa-inline-analysis.c (predicate_probability): Avoid comparison
506         between signed and unsigned.
507
508 2011-09-27  Ira Rosen  <ira.rosen@linaro.org>
509
510         * tree-vect-stmts.c (vectorizable_type_demotion): Handle basic block
511         vectorization.
512         (vectorizable_type_promotion): Likewise.
513         (vect_analyze_stmt): Call vectorizable_type_demotion and
514         vectorizable_type_promotion for basic blocks.
515         (supportable_widening_operation): Don't assume loop vectorization.
516         * tree-vect-slp.c (vect_build_slp_tree): Allow multiple types for
517         basic blocks.  Update vectorization factor for basic block
518         vectorization.
519         (vect_analyze_slp_instance): Allow multiple types for basic block
520         vectorization.  Recheck unrolling factor after construction of SLP
521         instance.
522
523 2011-09-27  Richard Guenther  <rguenther@suse.de>
524
525         * tree-object-size.c (compute_object_sizes): Fix dumping of
526         folded statement.
527
528 2011-09-27  Richard Guenther  <rguenther@suse.de>
529
530         PR tree-optimization/50363
531         * tree-ssa-pre.c (create_expression_by_pieces): Handle
532         pointer conversions in POINTER_PLUS_EXPRs properly.
533
534 2011-09-27  Richard Sandiford  <richard.sandiford@linaro.org>
535
536         * config/arm/neon.md (neon_vget_highv16qi, neon_vget_highv8hi)
537         (neon_vget_highv4si, neon_vget_highv4sf, neon_vget_highv2di)
538         (neon_vget_lowv16qi, neon_vget_lowv8hi, neon_vget_lowv4si)
539         (neon_vget_lowv4sf, neon_vget_lowv2di): Turn into define_expands
540         that produce subreg moves.  Define using VQX iterators.
541
542 2011-09-27  Georg-Johann Lay  <avr@gjlay.de>
543
544         * config/avr/avr.md (ashrqi3): Split alternative "n"
545         into its remaining parts C03, C04, C05, C06, C07 and describe
546         impact in CC by attribute "cc" appropriately.
547         * config/avr/avr.c (notice_update_cc): Clean-up: Don't patch CC0
548         by digging RTX.
549
550 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
551
552         * rtl.h (const_tiny_rtx): Change into array of 4 x MAX_MACHINE_MODE
553         from 3 x MAX_MACHINE_MODE.
554         (CONSTM1_RTX): Define.
555         * emit-rtl.c (const_tiny_rtx): Change into array of
556         4 x MAX_MACHINE_MODE from 3 x MAX_MACHINE_MODE.
557         (gen_rtx_CONST_VECTOR): Use CONSTM1_RTX if all inner constants are
558         CONSTM1_RTX.
559         (init_emit_once): Initialize CONSTM1_RTX for MODE_INT and
560         MODE_VECTOR_INT modes.
561         * simplify-rtx.c (simplify_binary_operation_1) <case IOR, XOR, AND>:
562         Optimize if one operand is CONSTM1_RTX.
563         * config/i386/i386.c (ix86_expand_sse_movcc): Optimize mask ? -1 : x
564         into mask | x.
565
566 2011-09-26  David S. Miller  <davem@davemloft.net>
567
568         * config/sparc/sparc.md (edge{8,16,32}{,l}): Return Pmode.
569         (fcmp{le,ne,gt,eq}{16,32}): Likewise.
570         * config/sparc/visintrin.h: Update edge and pixel-compare
571         intrinsics to return 'long' instead of 'int'.
572         * doc/extend.texi: Update documentation to match.
573         * config/sparc/sparc.c (eligible_for_return_delay): When leaf or
574         flat, allow any instruction.  Otherwise, when V9 allow parallels
575         which consist only of sets to registers outside of %o0 to %o5.
576         (sparc_vis_init_builtins): Update VIS builtin types for edge
577         and pixel-compare.
578
579         * config/sparc/sparc.c (sparc_conditional_register_usage): When VIS
580         is enabled, mark %gsr as global.
581         * config/sparc/sparc.md (UNSPEC_WRGSR): Delete.
582         (wrgsr_vis, *wrgsr_sp64, wrgsr_v8plus): Don't wrap in an unspec.
583
584         * config/sparc/sparc-c.c: New file implementing sparc_target_macros,
585         which will now define __VIS and __VIS__ when -mvis is enabled.
586         * config/sparc/t-sparc: Likewise.
587         * config.gcc: Add sparc-c.o to c_target_objs and cxx_target_objs,
588         and add t-sparc to tmake_file for all sparc targets.
589         * config/sparc/sparc-protos.h (sparc_target_macros): Declare.
590         * config/sparc/sparc.h (TARGE_CPU_CPP_BUILTINS): Call it.
591
592         * config/sparc/sparc.c (sparc_vis_init_builtins): Add explicit
593         builtins for VIS vector addition and subtraction.
594         * config/sparc/visintrin.h (__vis_fpadd16, __vis_fpadd16s,
595         __vis_fpadd32, __vis_fpadd32s, __vis_fpsub16, __vis_fpsub16s,
596         __vis_fpsub32, __vis_fpsub32s): New.
597         * doc/extend.texi: Document new VIS intrinsics.
598
599 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
600
601         * config/avr/avr.md (peephole casesi+2): Use -1 instead of 65536.
602         * config/avr/avr.c (avr_out_compare): Print shorter sequence for
603         EQ/NE comparisons against +/-1 in the case of unused-after,
604         non-ld-regs target.
605
606 2011-09-26  Jakub Jelinek  <jakub@redhat.com>
607
608         * gimple-fold.c (gimplify_and_update_call_from_tree): Set
609         gctx.into_ssa after push_gimplify_context.
610
611         * gimple.c (gimple_build_call_valist): New function.
612         * gimple.h (gimple_build_call_valist): New prototype.
613         * tree-ssa-propagate.c (finish_update_gimple_call): New function.
614         (update_gimple_call): Likewise.
615         (update_call_from_tree): Use finish_update_gimple_call.
616         * tree-ssa-propagate.h (update_gimple_call): New prototype.
617
618 2011-09-26  Richard Guenther  <rguenther@suse.de>
619
620         PR tree-optimization/50472
621         * gimple-fold.c (fold_const_aggregate_ref_1): Do not fold
622         volatile references.
623
624 2011-09-26  Bingfeng Mei <bmei@broadcom.com>
625
626         * doc/tm.texi: Correct documentation for TARGET_ADDR_SPACE_SUBSET_P.
627         * target.def: (addr_space_subset_p): Likewise.
628
629 2011-09-26  Tom de Vries  <tom@codesourcery.com>
630
631         * tree-ssa-alias.h (pt_solution_singleton_p): Declare.
632         * tree-ssa-structalias.c (pt_solution_singleton_p): New function.
633         * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Set points-to solution
634         of new var.
635
636 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
637
638         PR target/50465
639         * config/avr/avr-protos.h (output_reload_insisf): Don't pass insn.
640         * config/avr/avr.md (*reload_insi, *reload_insf): Change call to
641         output_reload_insisf.
642         (adjust_len): Set default to "no".
643         Remove alternative "yes".  Add alternatives: "mov8", "mov16",
644         "mov32", "ashlqi", "ashrqi", "lshrqi", "ashlhi", "ashrhi",
645         "lshrhi", "ashlsi, "ashrsi", "lshrsi".
646         (*movqi, *movhi, *movsi, *ashlqi3, ashlhi3, ashlsi3,
647         *ashlhi3_const, *ashlsi3_const, ashrqi3, ashrhi3, ashrsi3,
648         *ashrhi3_const, *ashrsi3_const, *lshrqi3, lshrhi3, *lshrhi3_const,
649         *lshrsi3_const): Set attribute "adjust_len".
650         * config/avr/avr.c (output_reload_insisf): Remove parameter "insn".
651         (output_movsisf): Don't pass insn to output_reload_insisf.
652         (adjust_insn_length): Handle new alternatives to adjust_len.
653         Remove handling of ADJUST_LEN_YES.  Clean-up code.
654
655 2011-09-26  Eric Botcazou  <ebotcazou@adacore.com>
656
657         * ifcvt.c (noce_try_cmove_arith): Use may_trap_or_fault_p in lieu of
658         may_trap_p to detect loads that may trap of fault.
659
660 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
661
662         * config/avr/avr-protos.h (output_reload_inhi): Change prototype.
663         * config/avr/avr.md (adjust_len): Add "reload_in16" alternative.
664         (*reload_inhi): Use it.  Adapt call to output_reload_inhi to new
665         prototype.
666         (*movhi): Split constraint alternative "r,rL" into "r,r" and "r,L".
667         * config/avr/avr.c: Rename output_reload_insisf_1 to
668         output_reload_in_const.
669         (avr_popcount_each_byte): Handle SFmode, too.
670         (output_reload_in_const): Change so it can handle HI loads, too.
671         Use avr_popcount_each_byte to work out if scratch register must be
672         created on the fly.
673         (output_reload_inhi): Rewrite using output_reload_in_const and...
674         (output_movhi): ...use it to print constants' loads.
675         (adjust_insn_length): New case ADJUST_LEN_RELOAD_IN16. Cleanup code.
676
677 2011-09-25  David S. Miller  <davem@davemloft.net>
678
679         * config/sparc/constraints.md (C, P, Z): New constraints for
680         const_doube, const_int, and const_vector "all ones" values.
681         Make unused constraint letters comment match reality.
682         * config/sparc/predicates.md (const_all_ones_operand,
683         register_or_zero_or_all_ones_operand): New predicates.
684         * config/sparc/sparc.c (sparc_expand_move): Allow all ones
685         as well as zero constants when VIS.
686         (sparc_legitimate_constant_p): Likewise.
687         * config/sparc/sparc.md (movsi_insn): Add fones alternative.
688         (movsf_insn): Likewise
689         (movdi_insn_sp64): Add fone alternative.
690         (movdf_insn_sp32_v9): Likewise.
691         (movdf_insn_sp64): Likewise.
692
693         * configure.ac: Add feature check to make sure the assembler
694         supports the FMAF, HPC, and VIS 3.0 instructions found on
695         Niagara-3 and later cpus.
696         * configure: Rebuild.
697         * config.in: Likewise.
698         * config/sparc/sparc.opt: New option '-mfmaf'.
699         * config/sparc/sparc.md: Add float fused multiply-add patterns.
700         * config/sparc/sparc.h (AS_NIAGARA3_FLAG): New macro.
701         (ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Use it, as needed.
702         * config/sparc/sol2.h (ASM_CPU32_DEFAULT_SPEC,
703         ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Likewise.
704         * config/sparc/sparc.c (sparc_option_override): Turn MASK_FMAF on
705         by default for Niagara-3 and later.  Turn it off if TARGET_FPU is
706         disabled.
707         (sparc_rtx_costs): Handle 'FMA'.
708         * doc/invoke.texi: Document -mfmaf.
709
710 2011-09-25  Jakub Jelinek  <jakub@redhat.com>
711
712         * tree-ssa-structalias.c (intra_create_variable_infos): Treat
713         TYPE_RESTRICT REFERENCE_TYPE parameters like restricted
714         DECL_BY_REFERENCE parameters.
715
716 2011-09-25  Eric Botcazou  <ebotcazou@adacore.com>
717
718         * tree-eh.c (cleanup_empty_eh): Allow a call to __builtin_stack_restore
719         if there is no outgoing edge.
720
721         * tree-scalar-evolution.c (simple_iv): Accept all kinds of pointer and
722         integral types.
723
724 2011-09-25  Ira Rosen  <ira.rosen@linaro.org>
725
726         * tree-vect-slp.c (vect_slp_analyze_bb_1): Split out core part
727         of vect_analyze_bb here.
728         (vect_analyze_bb): Loop over vector sizes calling vect_analyze_bb_1.
729
730 2011-09-25  Ira Rosen  <ira.rosen@linaro.org>
731
732         * tree-data-ref.c (dr_analyze_innermost): Add new argument.
733         Allow not simple iv if analyzing basic block.
734         (create_data_ref): Update call to dr_analyze_innermost.
735         (stmt_with_adjacent_zero_store_dr_p, ref_base_address): Likewise.
736         * tree-loop-distribution.c (generate_memset_zero): Likewise.
737         * tree-predcom.c (find_looparound_phi): Likewise.
738         * tree-data-ref.h (dr_analyze_innermost): Add new argument.
739
740 2011-09-24  David S. Miller  <davem@davemloft.net>
741
742         * config/sparc/sparc.h (FIRST_PSEUDO_REGISTER): Bump to 103.
743         (SPARC_GSR_REG): Define.
744         (FIXED_REGISTERS): Mark GSR as fixed.
745         (CALL_USED_REGISTERS): Mark GSR as call used.
746         (HARD_REGNO_NREGS): GSR is always 1 register.
747         (REG_CLASS_CONTENTS): Add GSR to ALL_REGS.
748         (REG_ALLOC_ORDER, REG_LEAF_ALLOC_ORDER): Add GSR to the end.
749         (REGISTER_NAMES): Add "%gsr".
750         * config/sparc/sparc.md (UNSPEC_ALIGNADDR, UNSPEC_ALIGNADDRL): Delete.
751         (UNSPEC_WRGSR): New unspec.
752         (GSR_REG): New constant.
753         (type): Add new insn type 'gsr'.
754         (fpack16_vis, fpackfix_vis, fpack32_vis,
755         faligndata<V64I:MODE>_vis)): Add use of GSR_REG.
756         (wrgsr_vis, *wrgsr_sp64, wrgsr_v8plus, rdgsr_vis, *rdgsr_sp64,
757         rdgsr_v8plus): New expanders and insns.
758         (alignaddr<P:mode>_vis, alignaddrl<P:mode>_vis): Reimplement
759         using patterns which show that this is a plus in addition to a
760         modification of GSR_REG, instead of an unspec.
761         * config/sparc/ultra1_2.md: Handle 'gsr'.
762         * config/sparc/ultra3.md: Likewise.
763         * config/sparc/niagara.md: Likewise.
764         * config/sparc/niagara2.md: Likewise.
765         * config/sparc/sparc.c (leaf_reg_remap, sparc_leaf_regs): Fill out
766         end of table.
767         (sparc_option_override): Make -mvis imply -mv8plus.
768         (hard_32bit_mode_classes, hard_64bit_mode_classes): Add entries
769         for %gsr.
770         (sparc_vis_init_builtins): Build __builtin_vis_write_gsr and
771         __builtin_vis_read_gsr.
772         (sparc_expand_buildin): Handle builtins that take one argument and
773         return void.
774         (sparc_fold_builtin): Never fold writes to %gsr.
775         * config/sparc/visintrin.h (__vis_write_gsr, __vis_read_gsr): New.
776         * doc/extend.texi: Document new VIS intrinsics.
777
778 2011-09-23  Jan Hubicka  <jh@suse.cz>
779
780         * ipa-inline-transform.c (inline_call): Add comment.
781         * ipa-inline.h (inline_param_summary): New structure and vector.
782         (struct inline_edge_summary): Add param field.
783         * ipa-inline-analysis.c (CHANGED): New constant.
784         (add_clause): Handle CHANGED and NOT_CONSTANT.
785         (predicate_probability): New function.
786         (dump_condition): Dump CHANGED predicate.
787         (evaluate_conditions_for_known_args): Handle ERROR_MARK as marker
788         of unknown function wide invariant.
789         (evaluate_conditions_for_edge): Handle change probabilities.
790         (inline_edge_duplication_hook): Copy param summaries.
791         (inline_edge_removal_hook): Free param summaries.
792         (dump_inline_edge_summary): Fix dumping of indirect edges and callee
793         sizes; dump param summaries.
794         (will_be_nonconstant_predicate): Use CHANGED predicate.
795         (record_modified_bb_info): New structure.
796         (record_modified): New function.
797         (param_change_prob): New function.
798         (estimate_function_body_sizes): Compute param summaries.
799         (estimate_edge_size_and_time): Add probability argument.
800         (estimate_node_size_and_time): Add inline_param_summary argument;
801         handle predicate probabilities.
802         (remap_predicate): Fix formating.
803         (remap_edge_change_prob): New function.
804         (remap_edge_summaries): Rename from ...; use remap_edge_change_prob.
805         (remap_edge_predicates): ... this one.
806         (inline_merge_summary): Remap edge summaries; handle predicate
807         probabilities; remove param summaries after we are done.
808         (do_estimate_edge_time): Update.
809         (do_estimate_edge_growth): Update.
810         (read_inline_edge_summary): Read param info.
811         (inline_read_summary): Fix formating.
812         (write_inline_edge_summary): Write param summaries.
813
814 2011-09-23  Jakub Jelinek  <jakub@redhat.com>
815
816         * config/i386/i386.c (ix86_print_operand): Handle %~.
817         (ix86_print_operand_punct_valid_p): Return true also for '~'.
818         * config/i386/sse.md (i128): New mode_attr.
819         (vec_extract_hi_<mode>, vec_extract_hi_<mode>,
820         avx_vbroadcastf128_<mode>, *avx_vperm2f128<mode>_full,
821         *avx_vperm2f128<mode>_nozero, vec_set_lo_<mode>,
822         vec_set_hi_<mode>, *vec_concat<mode>_avx): Use <i128> in the
823         patterns, use "<sseinsnmode>" for "mode" attribute.
824         (vec_extract_hi_v16hi, vec_extract_hi_v32qi, vec_set_lo_v16hi,
825         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Use
826         %~128 in the patterns, use "OI" for "mode" attribute.
827
828 2011-09-23  Georg-Johann Lay  <avr@gjlay.de>
829
830         PR target/50447
831         * config/avr/avr.md (adjust_len): Add alternatives "tsthi",
832         "tstsi", "compare".
833         (*cmpqi_sign_extend): Use s8_operand.
834         (*cmphi, *cmpsi): Rewrite using avr_out_compare.
835         * config/avr/avr-protos.h (compare_diff_p, compare_eq_p): Remove
836         prototypes.
837         (out_tsthi, out_tstsi): Remove prototypes.
838         (avr_out_tsthi, avr_out_tstsi): New prototypes.
839         * config/avr/avr.c (out_tsthi, out_tstsi): Remove functions.
840         (avr_asm_len): Negative length now sets *plen to -length.
841         (compare_sign_p): Return bool instead of int.
842         (compare_diff_p, compare_eq_p): Ditto and make static.
843         (avr_out_tsthi): New function.
844         (avr_out_tstsi): New function.
845         (avr_out_compare): New function.
846         (adjust_insn_length): Handle ADJUST_LEN_TSTHI, ADJUST_LEN_TSTSI,
847         ADJUST_LEN_COMPARE.
848
849 2011-09-23  Georg-Johann Lay  <avr@gjlay.de>
850
851         PR target/50447
852         * config/avr/avr.md: (adjust_len): Add alternative "out_plus".
853         (addsi3): Rewrite using QI scratch register.  Adjust text
854         peepholes using plus:SI.
855         (*addsi3_zero_extend.hi): New insn.
856         (*subsi3_zero_extend.hi): New insn.
857         (*subhi3_zero_extend1): Set attribute "cc" to "set_czn".
858         (*subsi3_zero_extend): Ditto.
859         (subsi3): Change predicate #2 to register_operand.
860         * config/avr/avr-protos.h (avr_out_plus): New prototype.
861         (avr_out_plus_1): New static function.
862         (avr_out_plus): New function.
863         (adjust_insn_length): Handle ADJUST_LEN_OUT_PLUS.
864
865 2011-09-23  Jakub Jelinek  <jakub@redhat.com>
866
867         * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): For
868         GE/GT/UNLE/UNLT swap arguments and condition even for TARGET_AVX.
869
870 2011-09-23  Ian Lance Taylor  <iant@google.com>
871
872         * godump.c (go_define): Treat a single character in single quotes,
873         or a string, as an operand.
874
875 2011-09-23  Martin Jambor  <mjambor@suse.cz>
876
877         * ipa-prop.h (jump_func_type): Updated comments.
878         (ipa_known_type_data): New type.
879         (ipa_jump_func): Use it to describe known type jump functions.
880         * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Updated to
881         reflect the new known type jump function contents.
882         (compute_known_type_jump_func): Likewise.
883         (combine_known_type_and_ancestor_jfs): Likewise.
884         (try_make_edge_direct_virtual_call): Likewise.
885         (ipa_write_jump_function): Likewise.
886         (ipa_read_jump_function): Likewise.
887         * ipa-cp.c (ipa_value_from_known_type_jfunc): New function.
888         (ipa_value_from_jfunc): Use ipa_value_from_known_type_jfunc.
889         (propagate_accross_jump_function): Likewise.
890
891 2011-09-23  Georg-Johann Lay  <avr@gjlay.de>
892
893         PR target/50446
894         * config/avr/avr.md (rotlqi3): Support all offsets 0..7.
895         (rotlqi3_4): Turn insn into expander.
896         (*rotlqi3): New insn.
897         (rotlhi3, rotlsi3): Support rotate left/right by 1.
898         (*rotlhi2.1, *rotlhi2.15): New insns.
899         (*rotlsi2.1, *rotlsi2.31): New insns.
900         * config/avr/constraints.md (C03, C05, C06, C07): New constraints.
901
902 2011-09-23  Bin Cheng  <bin.cheng@arm.com>
903
904         * config/arm/bpabi.h (BE8_LINK_SPEC): Add cortex-m arch and processors.
905
906 2011-09-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
907
908         * ipa-prop.c (ipa_print_node_jump_functions): Fix typos.
909
910 2011-09-22  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
911
912         * reload.c (find_reloads): Set operand_mode to Pmode for address
913         operands consisting of just a CONST_INT.
914
915 2011-09-22  Uros Bizjak  <ubizjak@gmail.com>
916
917         PR target/50482
918         * config/i386/i386.c (ix86_expand_sse_movcc): When generating
919         blendv, force op_true to register if it doesn't satisfy
920         nonimmediate_operand predicate.
921
922 2011-09-22  Richard Sandiford  <rdsandiford@googlemail.com>
923
924         PR middle-end/50113
925         PR middle-end/50061
926         * calls.c (emit_library_call_value_1): Use BLOCK_REG_PADDING to
927         get the locate.where_pad value for register-only arguments.
928         * config/arm/arm.c (arm_pad_arg_upward): Remove HFmode handling.
929         (arm_pad_reg_upward): Handle null types.
930
931 2011-09-22  Jan Hubicka  <jh@suse.cz>
932
933         * ipa-inline-analysis.c: Fix overly long lines.
934
935 2011-09-22  Jan Hubicka  <jh@suse.cz>
936
937         * ipa-inline-transform.c (inline_call): Always update jump functions
938         after inlining.
939         * ipa-inline.c (ipa_inline): Likewise; do not call
940         ipa_create_all_structures_for_iinln.
941         (ipa_inline): Always free jump functions.
942         * ipa-inline-analysis.c (evaluate_conditions_for_edge): Remove hack.
943         (remap_edge_predicates): Fix pasto.
944         (inline_merge_summary): Remove nlined edge predicate; remove hack.
945         (inline_analyze_function): Always initialize jump functions.
946         (inline_generate_summary): Likewise.
947         (inline_write_summary): Always write jump functions when ipa-cp
948         is not doing that.
949         (inline_read_summary): Always read jump functions when ipa-cp
950         is not doing that.
951         * ipa-prop.c (iinlining_processed_edges): Remove.
952         (update_indirect_edges_after_inlining): Do not use
953         iinlining_processed_edges; instead set param_index to -1.
954         (propagate_info_to_inlined_callees): Only try to indirect inlining
955         when asked to do so; update jump functions of indirect calls, too;
956         remove jump functions of the inlined edge.
957         (ipa_edge_duplication_hook): Do not copy iinlining_processed_edges.
958         (ipa_create_all_structures_for_iinln): Remove.
959         (ipa_free_all_structures_after_iinln): Do not free
960         iinlining_processed_edges.
961         * ipa-prop.h (ipa_create_all_structures_for_iinln): Remove.
962
963 2011-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
964
965         * config/arm/predicates.md (expandable_comparison_operator): New
966         predicate, extracted from...
967         (arm_comparison_operator): ...here.
968         * config/arm/arm.md (cbranchsi4, cbranchsf4, cbranchdf4, cbranchdi4)
969         (cstoresi4, cstoresf4, cstoredf4, cstoredi4, movsicc, movsfcc)
970         (movdfcc): Use expandable_comparison_operator.
971
972 2011-09-22  Georg-Johann Lay  <avr@gjlay.de>
973
974         PR target/50447
975         PR target/50465
976         * config/avr/avr-protos.h (avr_out_bitop): New prototype.
977         (avr_popcount_each_byte): New prototype.
978         * config/avr/avr.c (avr_popcount): New static function.
979         (avr_popcount_each_byte): New function.
980         (avr_out_bitop): New function.
981         (adjust_insn_length): ADJUST_LEN_OUT_BITOP dispatches to
982         avr_out_bitop.  Cleanup code.
983         * config/avr/constraints.md (Ca2, Co2, Cx2): New constraints.
984         (Ca4, Co4, Cx4): New constraints.
985         * config/avr/avr.md (adjust_len): Add "out_bitop" insn attribute
986         alternative.
987         (andhi3, iorhi3, xorhi3): Rewrite insns using avr_out_bitop.
988         (andsi3, iorsi3, xorsi3): Ditto.
989         (*iorhi3_clobber, *iorsi3_clobber): Remove insns.
990
991 2011-09-22  Ira Rosen  <ira.rosen@linaro.org>
992
993         PR tree-optimization/50451
994         * tree-vect-slp.c (vect_get_constant_vectors): Don't fail for
995         constant operands in reduction.
996         (vect_get_slp_defs): Don't create vector operand for NULL scalar
997         operand.
998
999 2011-09-22  David S. Miller  <davem@davemloft.net>
1000
1001         * config/sparc/sparc.c (sparc_vis_init_builtins): Do not mark
1002         fpack16, fpack32, fpackfix as const.
1003
1004         * config/sparc/sparc.md (G[0-7]_REG, O[0-7]_REG, L[0-7]_REG,
1005         I[0-7]_REG, F[0-62]_REG, FCC[0-3]_REG, CC_REG, SFP_REG): New
1006         constants.  Use them everywhere.
1007
1008 2011-09-22  Oleg Endo  <oleg.endo@t-online.de>
1009
1010         * config/sh/sh.c (andcosts): Renamed to and_xor_ior_costs.
1011         Added AND special case.  Adapted comments.
1012         (sh_rtx_costs): Added XOR and IOR case.
1013
1014 2011-09-21  Jan Hubicka  <jh@suse.cz>
1015
1016         * ipa-inline-analsis.c (compute_inline_parameters): Set
1017         cfun and current_function_decl.
1018
1019 2011-09-21  Jan Hubicka  <jh@suse.cz>
1020
1021         * ipa-inline-analysis.c (set_cond_stmt_execution_predicate): Allow
1022         handled components in parameter of builtin_constant_p.
1023         (will_be_nonconstant_predicate): Allow loads of non-SSA parameters.
1024
1025 2011-09-21  Jan Hubicka  <jh@suse.cz>
1026
1027         * ipa-inline.c (relative_time_benefit): Fix wrong bracketting.
1028         * ipa-inline.h (estimate_edge_time): Fix pasto.
1029         * ipa-inline-analysis.c (do_estiamte_edge_time): Remove capping.
1030
1031 2011-09-21  Jakub Jelinek  <jakub@redhat.com>
1032
1033         * config/i386/i386.c (ix86_expand_sse_movcc): Use
1034         blendvps, blendvpd and pblendvb if possible.
1035
1036 2011-09-21  Uros Bizjak  <ubizjak@gmail.com>
1037
1038         PR target/50464
1039         * config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Change
1040         operand 1 predicate to register_operand and operand 2 predicate
1041         to nonimmediate_operand.
1042         * config/i386/i386.c (ix86_expand_sse_movcc): When generating
1043         xop_pcmov, force op_true to register.  Also, force op_false to
1044         register if it doesn't satisfy nonimmediate_operand predicate.
1045
1046 2011-09-21  Kirill Yukhin  <kirill.yukhin@intel.com>
1047
1048         * config/i386/bmi2intrin.h (_mulx_u64): New.
1049         (_mulx_u32): Ditto.
1050
1051 2011-09-21  Jan Hubicka  <jh@suse.cz>
1052
1053         PR tree-optimization/50433
1054         * ipa-inline-analysis.c (eliminated_by_inlining_prob):
1055         Use get_base_address.
1056
1057 2011-09-21  Jakub Jelinek  <jakub@redhat.com>
1058
1059         * config/i386/sse.md (<code><mode>3 smaxmin:VI124_128 expander): Use
1060         nonimmediate_operand instead of register_operand predicate for operands
1061         1 and 2, force them into registers if expanding them as comparison.
1062         (<code><mode>3 umaxmin:VI124_128 expander): Similarly.  For UMAX
1063         V8HImode force into register just operand 1.
1064
1065 2011-09-21  Georg-Johann Lay  <avr@gjlay.de>
1066
1067         PR target/45099
1068         * config/avr/avr.c (avr_function_arg_advance): Change error to
1069         warning if a fixed register is needed as function argument.
1070
1071 2011-09-21  Georg-Johann Lay  <avr@gjlay.de>
1072
1073         PR target/50449
1074         PR target/50465
1075         * config/avr/avr.md (adjust_len): New insn attribute.
1076         (*reload_insi, *reload_insf): Use it.
1077         (*movsi, *movsf): Use new interface of output_movsisf.
1078         * config/avr/avr-protos.h (output_movsisf): Change prototype.
1079         * config/avr/avr.c (output_movsisf): Ditto.
1080         (adjust_insn_length): Use insn attribute "adjust_len" to adjust
1081         lengths of insns *reload_insi, *reload_insf.
1082         (output_reload_insisf_1): New static function.
1083         (output_reload_insisf): Use it.
1084
1085 2011-09-21  David S. Miller  <davem@davemloft.net>
1086
1087         * config/sparc/sparc.c (def_builtin): Change from macro into function.
1088         (def_builtin_const): New.
1089         (sparc_vis_init_builtins): Use def_builtin_const for all VIS builtins
1090         other than alignaddr and falignaddr.
1091
1092         * config/sparc/sparc.md (UNSPEC_FCMPLE, UNSPEC_FCMPNE, UNSPEC_FCMPGT,
1093         UNSPEC_FCMPEQ): New unspec codes.
1094         (fcmple16_vis, fcmple32_vis, fcmpne16_vis, fcmpne32_vis, fcmpgt16_vis,
1095         fcmpgt32_vis, fcmpeq16_vis, fcmpeq32_vis): New patterns.
1096         * config/sparc/sparc.c (sparc_vis_init_builtins): Create builtins for
1097         new pixel compare VIS patterns.
1098         * config/sparc/visintrin.h (__vis_fcmple16, __vis_fcmple32,
1099         __vis_fcmpne16, __vis_fcmpne32, __vis_fcmpgt16, __vis_fcmpgt32,
1100         __vis_fcmpeq16, __vis_fcmpeq32): New.
1101         * doc/extend.texi: Document new pixel compare VIS intrinsics.
1102
1103 2011-09-21  Tom de Vries  <tom@codesourcery.com>
1104
1105         * final.c (final): Handle if JUMP_LABEL is not LABEL_P.
1106
1107 2011-09-20  David S. Miller  <davem@davemloft.net>
1108
1109         * config/sparc/sparc.md (UNSPEC_ALIGNADDRL): New unspec.
1110         (aligneddrl<P:mode>_vis): New pattern.
1111         (edge8_vis, edge8l_vis, edge16_vis, edge16l_vis, edge32_vis,
1112         edge32l_vis): Adjust to take Pmode arguments, and return SImode.
1113         * config/sparc/sparc.c (sparc_vis_init_builtins): Handle new
1114         alignaddrl insn, and adjust edge operations for updated types.
1115         * config/sparc/visintrin.h: Likewise.
1116         * doc/extend.texi: Make typing in VIS documentation match reality.
1117
1118 2011-09-20  Terry Guo  <terry.guo@arm.com>
1119
1120         * config/arm/arm-arches.def: Add armv6s-m.
1121         * config/arm/arm-tables.opt: Regenerate.
1122
1123 2011-09-20  Wei Guozhi  <carrot@google.com>
1124
1125         PR rtl-optimization/49452
1126         * postreload.c (reload_combine): Invalidate use information when across
1127         volatile insn.
1128
1129 2011-09-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
1130
1131         * haifa-sched.c (has_edge_p, prev_non_location_insn, check_cfg):
1132         Remove maintenance overhead.
1133         (haifa_sched_init, sched_finish): Update.
1134
1135 2011-09-19  Uros Bizjak  <ubizjak@gmail.com>
1136
1137         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use if_then_else RTX
1138         to calculate unit, prefix_rep and prefix_data16 attributes.
1139         (*mov<mode>_internal): Ditto for unit attribute.
1140         (*movv2sf_internal_rex64): Ditto for unit and prefix_rep attributes.
1141         (*movv2sf_internal): Ditto.
1142         * config/i386/sse.md (VI1248_256): Remove mode iterator.
1143         (avx2_eq<mode>3): Use VI_256 instead of VI1248_256.
1144         (*avx2_eq<mode>3): Ditto.
1145         (avx2_gt<mode>3): Ditto.
1146
1147 2011-09-19  Uros Bizjak  <ubizjak@gmail.com>
1148
1149         * config/i386/i386.md (maxmin): New code iterator.
1150         * config/i386/sse.md (<maxmin:code><mode>3): Macroize expander
1151         from <umaxmin:code><mode>3 and <smaxmin:code><mode>3 using maxmin
1152         code iterator.
1153         (*avx2_<maxmin:code><mode>3): Macroize isn from
1154         *avx2_<umaxmin:code><mode>3 and *avx2_<smaxmin:code><mode>3 using
1155         maxmin code iterator.
1156         (<smaxmin:code><VI124_128:mode>3): Merge with <smaxmin:code>v8hi3.
1157         (<umaxmin:code><VI124_128:mode>3): Merge with umaxv4si3 and
1158         <umaxmin:code>v16qi3.
1159
1160 2011-09-19  Alan Modra  <amodra@gmail.com>
1161             Michael Meissner  <meissner@linux.vnet.ibm.com>
1162
1163         PR target/50341
1164         * config/rs6000/rs6000.md (call_indirect_aix<ptrsize>): Do not
1165         split the load of the indirect function's TOC from the call to
1166         prevent the compiler from moving the load of the new TOC above
1167         code that references the current function's TOC.
1168         (call_indirect_aix<ptrsize>_internal): Ditto.
1169         (call_indirect_aix<ptrsize>_nor11): Ditto.
1170         (call_indirect_aix<ptrsize>_internal2): Ditto.
1171         (call_value_indirect_aix<ptrsize>): Ditto.
1172         (call_value_indirect_aix<ptrsize>_internal): Ditto.
1173         (call_value_indirect_aix<ptrsize>_nor11): Ditto.
1174         (call_value_indirect_aix<ptrsize>_internal2): Ditto.
1175
1176 2011-09-19  Jakub Jelinek  <jakub@redhat.com>
1177
1178         * config/i386/sse.md (*sse4_1_extractps): Change into
1179         define_insn_and_split, add =x 0 n and =x x n alternatives
1180         and split them after reload.
1181
1182 2011-09-19  Alexandre Oliva  <aoliva@redhat.com>
1183
1184         * tree.h (TREE_NOT_CHECK4): Rename from bogus NON_TREE_CHECK4.
1185
1186 2011-09-19  Alexandre Oliva  <aoliva@redhat.com>
1187
1188         * emit-rtl.c (copy_insn_1): Do not copy DEBUG_EXPRs.
1189
1190 2011-09-19  Ira Rosen  <ira.rosen@linaro.org>
1191
1192         PR tree-optimization/50413
1193         * tree-vect-data-refs.c (vect_analyze_data_refs): Fail to vectorize
1194         a basic block if one of its data-refs can't be analyzed.
1195
1196 2011-09-19  Paul Brook  <paul@codesourcery.com>
1197
1198         * config/arm/predicates.md (shift_amount_operand): Check constant
1199         shift count is in range.
1200         (const_shift_operand): Remove.
1201
1202 2011-09-18  Eric Botcazou  <ebotcazou@adacore.com>
1203             Iain Sandoe  <developer@sandoe-acoustics.co.uk>
1204
1205         PR target/50091
1206         * config/rs6000/rs6000.md (probe_stack): Use explicit operand.
1207         * config/rs6000/rs6000.c (output_probe_stack_range): Likewise.
1208
1209 2011-09-18  H.J. Lu  <hongjiu.lu@intel.com>
1210
1211         * config/i386/bmiintrin.h: Remove tmp.
1212         * config/i386/tbmintrin.h: Likewise.
1213
1214 2011-09-18  Ira Rosen  <ira.rosen@linaro.org>
1215
1216         PR tree-optimization/50414
1217         * tree-vect-slp.c (vect_get_constant_vectors): Handle MAX_EXPR and
1218         MIN_EXPR.
1219
1220 2011-09-18  Ira Rosen  <ira.rosen@linaro.org>
1221
1222         PR tree-optimization/50412
1223         * tree-vect-data-refs.c (vect_analyze_group_access): Fail for
1224         acceses that require epilogue loop if vectorizing outer loop.
1225
1226 2011-09-17  David S. Miller  <davem@davemloft.net>
1227
1228         * config/sparc/sparc.md (UNSPEC_EDGE8, UNSPEC_EDGE8L,
1229         UNSPEC_EDGE16, UNSPEC_EDGE16L, UNSPEC_EDGE32, UNSPEC_EDGE32L):
1230         New unspecs.
1231         (define_attr type): New type 'edge'.
1232         (edge8_vis, edge8l_vis, edge16_vis, edge16l_vis, edge32_vis,
1233         edge32l_vis): New patterns.
1234         * config/sparc/ultra1_2.md: Add insn reservation for 'edge'.
1235         * config/sparc/ultra3.md: Likewise.
1236         * config/sparc/niagara.md: Likewise.
1237         * config/sparc/niagara2.md: Likewise.
1238         * config/sparc/sparc.d (sparc_vis_init_builtins): Generate
1239         builtins for VIS edge instructions.
1240         * config/sparc/visintrin.h (__vis_edge8, __vis_edge8l)
1241         (__vis_edge16, __vis_edge16l, __vis_edge32, __vis_edge32l): New
1242         intrinsics.
1243         (__v8qi, __v4qi): Make unsigned.
1244         (__vis_faligndatadi, ___vis_faligndatav2si, __vis_faligndatav4hi,
1245         __vis_faligndatav8qi, __vis_fmul8x16au, __vis_fmul8x16al,
1246         __vis_fpack32): Fix types.
1247         * doc/extend.texi: Document new 'edge' VIS intrinsics.
1248
1249         * gcc/config/sparc/sparc.c (niagara2_costs): Adjust integer
1250         divide costs.
1251         (niagara3_costs): New.
1252         (sparc_option_override): Use it.
1253         * gcc/config/sparc/niagara2.md: Adjust with more accurate
1254         Niagara-3 reservations.
1255
1256 2011-09-17  Jakub Jelinek  <jakub@redhat.com>
1257
1258         * config/i386/sse.md (VIMAX_AVX2): Change V4DI to V2TI.
1259         (sse2_avx, sseinsnmode): Add V2TI.
1260         (REDUC_SMINMAX_MODE): New mode iterator.
1261         (reduc_smax_v4sf, reduc_smin_v4sf, reduc_smax_v8sf,
1262         reduc_smin_v8sf, reduc_smax_v4df, reduc_smin_v4df): Remove.
1263         (reduc_<code>_<mode>): New smaxmin and umaxmin expanders.
1264         (sse2_lshrv1ti3): Rename to...
1265         (<sse2_avx2>_lshr<mode>3): ... this.  Use VIMAX_AVX2 mode
1266         iterator.  Move before umaxmin expanders.
1267         * config/i386/i386.h (VALID_AVX256_REG_MODE,
1268         SSE_REG_MODE_P): Accept V2TImode.
1269         * config/i386/i386.c (ix86_expand_reduc): Handle V32QImode,
1270         V16HImode, V8SImode and V4DImode.
1271
1272         * config/i386/i386.c (ix86_build_const_vector): Handle V8SImode
1273         and V4DImode.
1274         (ix86_build_signbit_mask): Likewise.
1275         (ix86_expand_int_vcond): Likewise.  Handle V16HImode and V32QImode.
1276         (bdesc_args): Use CODE_FOR_{s,u}m{ax,in}v{32q,16h,8s}i3
1277         instead of CODE_FOR_avx2_{s,u}m{ax,in}v{32q,16h,8s}i3.
1278         * config/i386/sse.md (avx2_<code><mode>3 umaxmin expand): Rename to...
1279         (<code><mode>3) ... this.
1280         (avx2_<code><mode>3 smaxmin expand): Rename to...
1281         (<code><mode>3) ... this.
1282         (smax<mode>3, smin<mode>3): Macroize using smaxmin code iterator.
1283         (smaxv2di3, sminv2di3): Macroize using smaxmin code iterator and
1284         VI8_AVX2 mode iterator.
1285         (umaxv2di3, uminv2di3): Macroize using umaxmin code iterator and
1286         VI8_AVX2 mode iterator.
1287         (vcond<V_256:mode><VI_256:mode>, vcondu<V_256:mode><VI_256:mode>):
1288         New expanders.
1289
1290 2011-09-17  Richard Sandiford  <rdsandiford@googlemail.com>
1291
1292         * config/ia64/itanium2.md: Use match_test rather than eq/ne symbol_ref
1293         throughout file.
1294
1295 2011-09-16  David S. Miller  <davem@davemloft.net>
1296
1297         * config/sparc/visintrin.h: New file.
1298         * config.gcc: Add it to extra_headers on sparc.
1299
1300 2011-09-16  Jakub Jelinek  <jakub@redhat.com>
1301
1302         * config/i386/i386.c (ix86_expand_reduc_v4sf): Rename to ...
1303         (ix86_expand_reduc): ... this.  Handle also V8SFmode and V4DFmode.
1304         * config/i386/sse.md (reduc_splus_v4sf, reduc_smax_v4sf,
1305         reduc_smin_v4sf): Adjust callers.
1306         (reduc_smax_v8sf, reduc_smin_v8sf, reduc_smax_v4df, reduc_smin_v4df):
1307         New expanders.
1308
1309         * config/i386/sse.md (vec_extract_hi_<mode>,
1310         vec_extract_hi_v16hi, vec_extract_hi_v32qi): Use
1311         vextracti128 instead of vextractf128 for -mavx2 and
1312         integer vectors.  For V4DFmode fix up mode attribute.
1313         (VEC_EXTRACT_MODE): For TARGET_AVX add 32-byte vectors.
1314         (vec_set_lo_<mode>, vec_set_hi_<mode>): For VI8F_256 modes use V4DF
1315         instead of V8SF mode attribute.
1316         (avx2_extracti128): Change into define_expand.
1317         * config/i386/i386.c (ix86_expand_vector_extract): Handle
1318         32-byte vector modes if TARGET_AVX.
1319
1320 2011-09-16  Georg-Johann Lay  <avr@gjlay.de>
1321
1322         * config/avr/avr.md: (umulqihi3, mulqihi3): Write as one pattern.
1323         (umulqi3_highpart, smulqi3_highpart): Ditto.
1324         (*maddqihi4.const, *umaddqihi4.uconst): Ditto.
1325         (*msubqihi4.const, *umsubqihi4.uconst): Ditto.
1326         (*muluqihi3.uconst, *mulsqihi3.sconst): Ditto.
1327
1328 2011-09-16  Georg-Johann Lay  <avr@gjlay.de>
1329
1330         PR target/50358
1331         * config/avr/avr.md (*ashiftqihi2.signx.1): New insn.
1332         (*maddqi4, *maddqi4.const): New insns.
1333         (*msubqi4, *msubqi4.const): New insns.
1334         * config/avr/avr.c (avr_rtx_costs): Record costs of above in cases
1335         PLUS:QI and MINUS:QI.  Increase costs of multiply-add/-sub for
1336         HImode by 1 in the case of multiplying with a CONST_INT.
1337         Record cost of *ashiftqihi2.signx.1 in case ASHIFT:QI.
1338
1339 2011-09-15   Jan Hubicka  <jh@suse.cz>
1340
1341         PR lto/50430
1342         * gimple-fold.c (gimple_get_virt_method_for_binfo): Do not ICE on
1343         error_mark_node in the DECL_INITIAL of vtable.
1344
1345 2011-09-15   Diego Novillo  <dnovillo@google.com>
1346
1347         * Makefile.in (SYSROOT_CFLAGS_FOR_TARGET): Define from
1348         @SYSROOT_CFLAGS_FOR_TARGET@.
1349         * configure.ac (SYSROOT_CFLAGS_FOR_TARGET): Set from build-sysroot.
1350         * configure: Regenerate.
1351         (site.exp): Add definition of TEST_ALWAYS_FLAGS.
1352         Remove setting of GCC_UNDER_TEST.
1353
1354 2011-09-15  Uros Bizjak  <ubizjak@gmail.com>
1355
1356         * config/i386/i386.c (output_fp_compare): Return %v prefixed
1357         instruction mnemonics for TARGET_AVX.
1358
1359         * config/i386/i386.md (*movdf_internal_rex64): use cond RTX in
1360         "type" attribute calculation.
1361         (*movdf_internal): Ditto.
1362         (*movsf_internal): Ditto.
1363
1364 2011-09-15  James Greenhalgh  <james.greenhalgh@arm.com>
1365
1366         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): New builtin macro.
1367
1368 2011-09-15  Jason Merrill  <jason@redhat.com>
1369
1370         PR c++/50361
1371         * expr.c (count_type_elements): Handle NULLPTR_TYPE.
1372
1373 2011-09-15  Jan Hubicka  <jh@suse.cz>
1374
1375         * ipa-inline-analysis.c (add_condition): Add conditions parameter;
1376         simplify obviously true clauses.
1377         (and_predicates, or_predicates): Add conditions parameter.
1378         (inline_duplication_hoook): Update.
1379         (mark_modified): New function.
1380         (unmodified_parm): New function.
1381         (eliminated_by_inlining_prob, (set_cond_stmt_execution_predicate,
1382         set_switch_stmt_execution_predicate, will_be_nonconstant_predicate):
1383         Use unmodified_parm.
1384         (estimate_function_body_sizes): Update.
1385         (remap_predicate): Update.
1386
1387 2011-09-15  Ira Rosen  <ira.rosen@linaro.org>
1388
1389         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Allow
1390         read-after-read dependencies in basic block SLP.
1391
1392 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
1393
1394         * config/sparc/sparc.md: Use match_test rather than eq/ne symbol_ref
1395         throughout file.
1396
1397 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
1398
1399         * config/sh/sh.md: Use match_test rather than eq/ne symbol_ref
1400         throughout file.
1401
1402 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
1403
1404         * config/s390/s390.md: Use match_test rather than eq/ne symbol_ref
1405         throughout file.
1406
1407 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
1408
1409         * config/rs6000/rs6000.md: Use match_test rather than eq/ne symbol_ref
1410         throughout file.
1411         * config/rs6000/constraints.md: Likewise.
1412
1413 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
1414
1415         * config/microblaze/microblaze.md: Use match_test rather than
1416         eq/ne symbol_ref throughout file.
1417
1418 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
1419
1420         * config/bfin/bfin.md: Use match_test rather than eq/ne symbol_ref
1421         throughout file.
1422
1423 2011-09-14  Tom de Vries  <tom@codesourcery.com>
1424
1425         PR middle-end/50251
1426         * explow.c (emit_stack_restore): Set crtl->need_drap if
1427         stack_restore is emitted.
1428
1429 2011-09-14  Julian Brown  <julian@codesourcery.com>
1430
1431         * config/arm/arm.c (arm_override_options): Add unaligned_access
1432         support.
1433         (arm_file_start): Emit attribute for unaligned access as appropriate.
1434         * config/arm/arm.md (UNSPEC_UNALIGNED_LOAD)
1435         (UNSPEC_UNALIGNED_STORE): Add constants for unspecs.
1436         (insv, extzv): Add unaligned-access support.
1437         (extv): Change to expander. Likewise.
1438         (extzv_t1, extv_regsi): Add helpers.
1439         (unaligned_loadsi, unaligned_loadhis, unaligned_loadhiu)
1440         (unaligned_storesi, unaligned_storehi): New.
1441         (*extv_reg): New (previous extv implementation).
1442         * config/arm/arm.opt (munaligned_access): Add option.
1443         * config/arm/constraints.md (Uw): New constraint.
1444         * expmed.c (store_bit_field_1): Adjust bitfield numbering according
1445         to size of access, not size of unit, when BITS_BIG_ENDIAN !=
1446         BYTES_BIG_ENDIAN. Don't use bitfield accesses for
1447         volatile accesses when -fstrict-volatile-bitfields is in effect.
1448         (extract_bit_field_1): Likewise.
1449
1450 2011-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
1451
1452         * simplify-rtx.c (simplify_subreg): Check that the inner mode is
1453         a scalar integer before applying integer-only optimisations to
1454         inner arithmetic.
1455
1456 2011-09-14  Bernd Schmidt  <bernds@codesourcery.com>
1457
1458         * config/mips/mips.c (mips_expand_epilogue): Generate a
1459         simple_return only if the return address is in r31.
1460
1461 2011-09-13  Bernd Schmidt  <bernds@codesourcery.com>
1462
1463         * cfgcleanup.c (try_head_merge_bb): If get_condition returns
1464         NULL for a jump that is a cc0 insn, pick the previous insn for
1465         move_before.
1466
1467 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
1468
1469         * config/v850/v850.md: Use match_test rather than eq/ne symbol_ref
1470         throughout file.
1471
1472 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
1473
1474         * config/pa/pa.md: Use match_test rather than eq/ne symbol_ref
1475         throughout file.
1476
1477 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
1478
1479         * config/mn10300/mn10300.md: Use match_test rather than eq/ne
1480         symbol_ref throughout file.
1481
1482 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
1483
1484         * config/m68k/m68k.md: Use match_test rather than eq/ne symbol_ref
1485         throughout file.
1486
1487 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
1488
1489         * config/h8300/h8300.md: Use match_test rather than eq/ne symbol_ref
1490         throughout file.
1491
1492 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
1493
1494         * config/arm/arm.md: Use match_test rather than eq/ne symbol_ref
1495         throughout file.
1496         * config/arm/neon.md: Likewise.
1497         * config/arm/vfp.md: Likewise.
1498         * config/arm/thumb2.md: Likewise.
1499         * config/arm/cortex-m4.md: Likewise.
1500
1501 2011-09-13  Sevak Sargsyan <sevak.sargsyan@ispras.ru>
1502
1503         * config/arm/neon.md (neon_vabd<mode>_2, neon_vabd<mode>_3): New
1504         define_insn patterns for combine.
1505
1506 2011-09-13  Giuseppe Scrivano  <gscrivano@gnu.org>
1507
1508         * reorg.c: Always define make_return_insns.
1509
1510 2011-09-13  Jan Hubicka  <jh@suse.cz>
1511
1512         PR other/49533
1513         * cgraphunit.c (assemble_thunks_and_aliases): Force alias to be output.
1514
1515 2011-09-13  Jan Hubicka  <jh@suse.cz>
1516
1517         PR other/49533
1518         * ipa-inline-transform.c (can_remove_node_now_p): Fix thunkos.
1519
1520 2011-09-13  Paul Brook  <paul@codesourcery.com>
1521
1522         * config/arm/arm.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
1523         (ARM_TARGET2_DWARF_FORMAT): Provide default definition.
1524         * config/arm/linux-eabi.h (ARM_TARGET2_DWARF_FORMAT): Define.
1525         * config/arm/symbian.h (ARM_TARGET2_DWARF_FORMAT): Define.
1526         * config/arm/uclinux-eabi.h(ARM_TARGET2_DWARF_FORMAT): Define.
1527         * config/arm/t-bpabi (EXTRA_HEADERS): Add unwind-arm-common.h.
1528         * config/arm/t-symbian (EXTRA_HEADERS): Add unwind-arm-common.h.
1529         * config/c6x/c6x.c (c6x_output_file_unwind): Don't rely on dwarf2 code
1530         enabling unwind tables.
1531         (c6x_debug_unwind_info): New function.
1532         (TARGET_ARM_EABI_UNWINDER): Define.
1533         (TARGET_DEBUG_UNWIND_INFO): Define.
1534         * config/c6x/c6x.h (DWARF_FRAME_RETURN_COLUMN): Define.
1535         (TARGET_EXTRA_CFI_SECTION): Remove.
1536         * config/c6x/t-c6x-elf (EXTRA_HEADERS): Set.
1537         * ginclude/unwind-arm-common.h: New file.
1538
1539 2011-09-13  Georg-Johann Lay  <avr@gjlay.de>
1540
1541         PR target/50358
1542         * config/avr/predicates.md (const_1_to_6_operand): New predicate.
1543         * config/avr/avr.md: (extend_s): New code attribute.
1544         (mul_r_d): New code attribute.
1545         (*maddqihi4, *umaddqihi4): New insns.
1546         (*msubqihi4, *umsubqihi4): New insns.
1547         (*usmaddqihi4, *sumaddqihi4): New insns.
1548         (*usmsubqihi4, *susubdqihi4): New insns.
1549         (*umaddqihi4.uconst, *maddqihi4.sconst): New insn-and-splits.
1550         (*umsubqihi4.uconst, *msubqihi4.sconst): New insn-and-splits.
1551         (*umsubqihi4.uconst.ashift): New insn-and-split.
1552         (*msubqihi4.sconst.ashift): New insn-and-split.
1553         (*sumaddqihi4.uconst): New insn-and-split.
1554         (*sumsubqihi4.uconst): New insn-and-split.
1555         * config/avr/avr.c (avr_rtx_costs): Report costs of above in case
1556         PLUS:HI and MINUS:HI.
1557
1558 2011-09-13  Revital Eres  <revital.eres@linaro.org>
1559
1560         modulo-sched.c (remove_node_from_ps): Return void instead of bool.
1561         (optimize_sc): Adjust call to remove_node_from_ps.
1562         (sms_schedule): Add print info.
1563
1564 2011-09-13  Bernd Schmidt  <bernds@codesourcery.com>
1565
1566         * rtl.c (copy_rtx): Do not handle frame_related, jump or call
1567         flags specially.
1568
1569 2011-09-12  Jakub Jelinek  <jakub@redhat.com>
1570
1571         PR bootstrap/50010
1572         * dwarf2cfi.c (add_cfis_to_fde): Ignore non-active insns in between
1573         NOTE_INSN_CFI notes, with the exception of
1574         NOTE_INSN_SWITCH_TEXT_SECTIONS.
1575
1576 2011-09-12  Bernd Schmidt  <bernds@codesourcery.com>
1577             Richard Sandiford  <rdsandiford@googlemail.com>
1578
1579         * config/mips/mips.c (mips_epilogue): New structure.
1580         (mips16e_save_restore_reg): Queue REG_CFA_RESTORE notes when
1581         restoring registers.
1582         (mips_epilogue_emit_cfa_restores): New function.
1583         (mips_epilogue_set_cfa): Likewise.
1584         (mips_restore_reg): Queue REG_CFA_RESTORE notes.  When restoring
1585         the current CFA register from the stack, redefine the CFA in terms
1586         of the stack pointer.
1587         (mips_expand_epilogue): Set up mips_epilogue.  Attach CFA information
1588         to the epilogue instructions.
1589
1590 2011-09-12  Richard Sandiford  <rdsandiford@googlemail.com>
1591
1592         * config/mips/mips.c (mips16e_save_restore_reg): Add a reg_parm_p
1593         argument.
1594         (mips16e_build_save_restore): Update accordingly.
1595
1596 2011-09-12  Jakub Jelinek  <jakub@redhat.com>
1597
1598         PR rtl-optimization/50212
1599         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
1600         Skip also lps with NULL landing_pad or non-LABEL_P landing_pad.
1601
1602         PR debug/50299
1603         * calls.c (load_register_parameters): Use use_reg_mode instead
1604         of use_reg when adding a single register CALL_INSN_FUNCTION_USAGE
1605         entry.
1606         (expand_call): Set EXPR_LIST mode to TYPE_MODE of the argument
1607         for stack CALL_INSN_FUNCTION_USAGE uses.
1608         * expr.h (use_reg_mode): New prototype.
1609         (use_reg): Changed into inline around use_reg_mode.
1610         * expr.c (use_reg): Renamed to...
1611         (use_reg_mode): ... this.  Added MODE argument, set EXPR_LIST
1612         mode to that mode instead of VOIDmode.
1613         * var-tracking.c (prepare_call_arguments): Don't track parameters
1614         whose EXPR_LIST mode is VOIDmode, BLKmode or X mode isn't convertible
1615         to it using lowpart_subreg.  Convert VALUE and REG/MEM to the
1616         EXPR_LIST mode.
1617
1618 2011-09-12  Georg-Johann Lay  <avr@gjlay.de>
1619
1620         PR target/43746
1621         * config/avr/avr.c (AVR_SECTION_PROGMEM): New Define.
1622         (progmem_section): New Variable.
1623         (avr_asm_init_sections): Initialize it.
1624         (TARGET_ASM_SELECT_SECTION): Define to...
1625         (avr_asm_select_section): ... this new Function.
1626         (avr_replace_prefix): New Function.
1627         (avr_asm_function_rodata_section): Use it.
1628         (avr_insert_attributes): Don't add section attribute for PROGMEM.
1629         (avr_section_type_flags): Use avr_progmem_p instead of section
1630         name to detect if object is in PROGMEM.
1631         (avr_asm_named_section): Set section name prefix for objects in
1632         PROGMEM.
1633
1634 2011-09-12  Jakub Jelinek  <jakub@redhat.com>
1635
1636         PR bootstrap/50352
1637         * config/arm/arm.md (*push_fp_multi): Add % before %( and %) in the
1638         sprintf format string.
1639
1640 2011-09-12  Richard Guenther  <rguenther@suse.de>
1641
1642         PR tree-optimization/50343
1643         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Check
1644         that the reduction is over an SSA name before checking its definition.
1645
1646 2011-09-11  Richard Sandiford  <rdsandiford@googlemail.com>
1647
1648         * config/cris/cris.md: Use match_test rather than eq/ne symbol_ref
1649         throughout file.
1650
1651 2011-09-11  Richard Sandiford  <rdsandiford@googlemail.com>
1652
1653         * config/mips/mips.md: Use match_test rather than eq/ne symbol_ref
1654         throughout file.
1655         * config/mips/sb1.md: Likewise.
1656         * config/mips/predicates.md: Replace (match_test "!...")
1657         with (not (match_test "..."))
1658         * config/mips/constraints.md: Likewise.
1659
1660 2011-09-09  Andrew Stubbs  <ams@codesourcery.com>
1661
1662         * config/arm/arm-cores.def (generic-armv7-a): New architecture.
1663         * config/arm/arm-tables.opt: Regenerate.
1664         * config/arm/arm-tune.md: Regenerate.
1665         * config/arm/arm.c (arm_file_start): Output .arch directive when
1666         user passes -mcpu=generic-*.
1667         (arm_issue_rate): Add genericv7a support.
1668         * config/arm/arm.h (EXTRA_SPECS): Add asm_cpu_spec.
1669         (ASM_CPU_SPEC): New define.
1670         * config/arm/elf.h (ASM_SPEC): Use %(asm_cpu_spec).
1671         * config/arm/semi.h (ASM_SPEC): Likewise.
1672         * doc/invoke.texi (ARM Options): Document -mcpu=generic-*
1673         and -mtune=generic-*.
1674
1675 2011-09-09  Richard Guenther  <rguenther@suse.de>
1676
1677         PR tree-optimization/50328
1678         * tree-vect-loop.c (vect_is_simple_reduction_1): Allow one
1679         constant or default-def operand.
1680
1681 2011-09-09  Richard Guenther  <rguenther@suse.de>
1682
1683         * tree-ssa-pre.c (create_expression_by_pieces): Fold the
1684         last statement.
1685
1686 2011-09-09  Richard Guenther  <rguenther@suse.de>
1687
1688         * gimple.h (fold_stmt_inplace): Adjust to take a gimple_stmt_iterator
1689         instead of a statement.
1690         * gimple-fold.c (fold_stmt_inplace): Likewise.
1691         * sese.c (graphite_copy_stmts_from_block): Adjust.
1692         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
1693         * tree-ssa-forwprop.c (forward_propagate_into_comparison): Use
1694         fold_stmt.
1695         (forward_propagate_addr_into_variable_array_index): Likewise.
1696         (forward_propagate_addr_expr_1): adjust.
1697         (associate_plusminus): Likewise.
1698         (ssa_forward_propagate_and_combine): Likewise.
1699         * tree-ssa-mathopts.c (replace_reciprocal): Adjust.
1700         (execute_cse_reciprocals): Likewise.
1701         * tree-ssa.c (insert_debug_temp_for_var_def): Adjust.
1702
1703 2011-09-09  Nick Clifton  <nickc@redhat.com>
1704
1705         * config/mn10300/mn10300.c (mn10300_split_and_operand_count):
1706         Return a positive value to indicate that the bits at the
1707         bottom of the register should be cleared.
1708
1709 2011-09-09  Richard Guenther  <rguenther@suse.de>
1710
1711         * tree-ssa-operands.c (swap_tree_operands): Always adjust
1712         existing operand positions.
1713
1714 2011-09-09  Richard Guenther  <rguenther@suse.de>
1715
1716         PR middle-end/50333
1717         * tree-data-ref.c (split_constant_offset): Do not try to handle
1718         ternary ops.
1719
1720 2011-09-08  Andrew Stubbs  <ams@codesourcery.com>
1721
1722         PR tree-optimization/50318
1723         * tree-ssa-math-opts.c (convert_plusminus_to_widen): Correct
1724         typo in use of mult_rhs1 and mult_rhs2.
1725
1726 2011-09-08  Uros Bizjak  <ubizjak@gmail.com>
1727
1728         * config/i386/i386.c (standard_sse_constant_p): Handle AVX2 modes.
1729         (standard_sse_constant_opcode) <case 2>: Change vpcmpeqd template.
1730
1731 2011-09-08  Bernd Schmidt  <bernds@codesourcery.com>
1732
1733         * config/arm/arm.md (push_multi): Emit predicates.
1734         (push_fp_multi): Likewise.
1735         * config/arm/arm.c (vfp_output_fstmd): Likewise.
1736
1737 2011-09-08  Dodji Seketeli  <dodji@redhat.com>
1738
1739         PR c++/33255 - Support -Wunused-local-typedefs warning
1740         * c-decl.c (lookup_name): Use the new maybe_record_typedef_use.
1741         (pushdecl): Use the new record_locally_defined_typedef.
1742         (store_parm_decls): Allocate cfun->language.
1743         (finish_function): Use the new maybe_warn_unused_local_typedefs,
1744         and free cfun->language.
1745         (c_push_function_context): Allocate cfun->language here only if needed.
1746         (c_pop_function_context): Likewise, mark cfun->language
1747         for collection only when it should be done.
1748         * c-common.c (handle_used_attribute): Don't ignore TYPE_DECL nodes.
1749         * c-typeck.c (c_expr_sizeof_type, c_cast_expr): Use the new
1750         maybe_record_local_typedef_use.
1751         * doc/invoke.texi: Update documentation for
1752         -Wunused-local-typedefs.
1753
1754 2011-09-08  Enkovich Ilya  <ilya.enkovich@intel.com>
1755
1756         * config/i386/i386-protos.h (ix86_lea_outperforms): New.
1757         (ix86_avoid_lea_for_add): Likewise.
1758         (ix86_avoid_lea_for_addr): Likewise.
1759         (ix86_split_lea_for_addr): Likewise.
1760
1761         * config/i386/i386.c (LEA_MAX_STALL): New.
1762         (increase_distance): Likewise.
1763         (insn_defines_reg): Likewise.
1764         (insn_uses_reg_mem): Likewise.
1765         (distance_non_agu_define_in_bb): Likewise.
1766         (distance_agu_use_in_bb): Likewise.
1767         (ix86_lea_outperforms): Likewise.
1768         (ix86_ok_to_clobber_flags): Likewise.
1769         (ix86_avoid_lea_for_add): Likewise.
1770         (ix86_avoid_lea_for_addr): Likewise.
1771         (ix86_split_lea_for_addr): Likewise.
1772         (distance_non_agu_define): Search in pred BBs added.
1773         (distance_agu_use): Search in succ BBs added.
1774         (IX86_LEA_PRIORITY): Value changed from 2 to 0.
1775         (LEA_SEARCH_THRESHOLD): Now depends on LEA_MAX_STALL.
1776         (ix86_lea_for_add_ok): Use ix86_lea_outperforms to make decision.
1777
1778         * config/i386/i386.md: Split added to transform non destructive
1779         add into move and add.
1780         (lea_1): transformed into insn_and_split to avoid AGU stalls.
1781         (lea<mode>_2): Likewise.
1782
1783 2011-09-08  Martin Jambor  <mjambor@suse.cz>
1784
1785         PR tree-optimization/50287
1786         * ipa-split.c (split_function): Do not create SSA names for
1787         non-gimple-registers.
1788
1789 2011-09-08  Richard Guenther  <rguenther@suse.de>
1790
1791         PR tree-optimization/19831
1792         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Also
1793         skip builtins with vdefs that do not really store something.
1794         (propagate_necessity): For calls to free that we can associate
1795         with an allocation function do not mark the freed pointer
1796         definition necessary.
1797         (eliminate_unnecessary_stmts): Remove a call to free if
1798         the associated call to an allocation function is not necessary.
1799
1800 2011-09-08  Richard Guenther  <rguenther@suse.de>
1801
1802         PR tree-optimization/19831
1803         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Do not mark
1804         allocation functions as necessary.
1805
1806 2011-09-08  Iain Sandoe  <iains@gcc.gnu.org>
1807
1808         * config/darwin-driver.c (darwin_find_version_from_kernel): New routine
1809         cut from ...
1810         (darwin_default_min_version): Amended to provide defaults
1811         for the cross directory case.
1812         (darwin_driver_init): call darwin_default_min_version unconditionally.
1813         * config/darwin.h (DEF_MIN_OSX_VERSION): New.
1814         * config/darwin9.h: Likewise.
1815         * config/darwin10.h: Likewise.
1816         * config/rs6000/darwin7.h: Likewise.
1817
1818 2011-09-08  Jakub Jelinek  <jakub@redhat.com>
1819
1820         PR target/50310
1821         * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): Return
1822         code early if TARGET_AVX.
1823         (ix86_expand_fp_vcond): Handle LTGT and UNEQ.
1824
1825 2011-09-07  Jakub Jelinek  <jakub@redhat.com>
1826
1827         * config/i386/sse.md (sseinsnmode): Remove 32-byte integer vector
1828         duplicates.
1829
1830         PR target/50310
1831         * config/i386/sse.md (*andnot<mode>3, *<code><mode>3): Fix up
1832         "mode" attribute computation.
1833
1834 2011-09-07  Bernd Schmidt  <bernds@codesourcery.com>
1835
1836         * regrename.c (struct du_head): Make nregs signed.
1837         (closed_chains): Remove.
1838         (create_new_chain): Return the new chain.
1839         (chain_from_id): New static function.
1840         (dump_def_use_chain): Change argument to be an int, indicating
1841         the first ID to print.  All callers changed.
1842         (merge_overlapping_regs): Use chain_from_id.  Assert that
1843         chains don't conflict with themselves.
1844         (rename_chains): Take no argument.  Iterate over id_to_chain
1845         rather to find chains to rename.  Clear tick before the main loop.
1846         (struct incoming_reg_info): New struct.
1847         (struct bb_rename_info): New struct.
1848         (init_rename_info, set_incoming_from_chain, merge_chains): New
1849         static functions.
1850         (regrename_analyze): New static function, broken out of
1851         regrename_optimize.  Record and make use of open chain information
1852         at basic block boundaries, and merge chains where possible.
1853         (scan_rtx_reg): Make this_nregs signed.  Don't update
1854         closed_chains.
1855         (build_def_use): Return a bool to indicate success.  All callers
1856         changed.  Don't initialize global data here.
1857         (regrename_optimize): Move most code out of here into
1858         regrename_analyze.
1859         * regs.h (add_range_to_hard_reg_set, remove_range_from_hard_reg_set,
1860         range_overlaps_hard_reg_set_p, range_in_hard_reg_set_p): New
1861         static inline functions.
1862         * vec.h (FOR_EACH_VEC_ELT_FROM): New macro.
1863
1864         * bb-reorder.c (insert_section_boundary_note): Don't check
1865         optimize_function_for_speed_p.
1866         (gate_handle_partition_blocks): Do it here instead.
1867         (gate_handle_reorder_blocks): Move preliminary checks here ...
1868         (rest_of_handle_reorder_blocks): ... from here.
1869
1870 2011-09-07  Martin Jambor  <mjambor@suse.cz>
1871
1872         PR middle-end/50301
1873         * ipa-cp.c (find_more_values_for_callers_subset): Check jump
1874         function index bounds.
1875         (perhaps_add_new_callers): Likewise.
1876
1877 2011-09-07  Martin Jambor  <mjambor@suse.cz>
1878
1879         PR tree-optimization/49911
1880         * tree-sra.c (analyze_access_subtree): Change type of to-be-replaced
1881         enumerations to the corresponding plain integer type.
1882
1883 2011-09-07  Richard Guenther  <rguenther@suse.de>
1884
1885         PR tree-optimization/50319
1886         * tree-if-conv.c (set_bb_predicate): Assert we only set
1887         canonical predicates.
1888         (add_to_predicate_list): Simplify.  Allow TRUTH_NOT_EXPR
1889         around canonical predicates.
1890         (predicate_bbs): Do not re-gimplify already canonical
1891         predicates.  Properly unshare them though.
1892         (find_phi_replacement_condition): Simplify.
1893
1894 2011-09-07  Richard Sandiford  <richard.sandiford@linaro.org>
1895
1896         PR target/49030
1897         * config/arm/arm-protos.h (maybe_get_arm_condition_code): Declare.
1898         * config/arm/arm.c (maybe_get_arm_condition_code): New function,
1899         reusing the old code from get_arm_condition_code.  Return ARM_NV
1900         for invalid comparison codes.
1901         (get_arm_condition_code): Redefine in terms of
1902         maybe_get_arm_condition_code.
1903         * config/arm/predicates.md (arm_comparison_operator): Use
1904         maybe_get_arm_condition_code.
1905
1906 2011-09-07  Richard Guenther  <rguenther@suse.de>
1907
1908         * tree-ssa-forwprop.c (forward_propagate_into_gimple_cond):
1909         Canonicalize negated predicates by swapping edges.
1910         (forward_propagate_into_cond): Likewise.
1911
1912 2011-09-07  Richard Guenther  <rguenther@suse.de>
1913
1914         PR tree-optimization/50213
1915         * tree-flow.h (simple_iv_increment_p): Declare.
1916         * tree-ssa-dom.c (simple_iv_increment_p): Export.  Also handle
1917         POINTER_PLUS_EXPR.
1918         * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Do
1919         not propagate simple IV counter increments.
1920
1921 2011-09-07  Eric Botcazou  <ebotcazou@adacore.com>
1922             Iain Sandoe  <iains@gcc.gnu.org>
1923
1924         * config/rs6000/rs6000.c (compute_save_world_info): Test
1925         cfun->has_nonlocal_label to determine if the out-of-line save
1926         world call may be used.
1927
1928 2011-09-07  Nick Clifton  <nickc@redhat.com>
1929
1930         * config/mn10300/mn10300.c (mn10300_insert_setlb_lcc): Set the jump
1931         label on the parallel part of the insn.
1932
1933 2011-09-07  Jakub Jelinek  <jakub@redhat.com>
1934
1935         PR debug/50191
1936         * dwarf2out.c (mem_loc_descriptor) <case MEM>: Try
1937         avoid_constant_pool_reference first instead of last.
1938
1939 2011-09-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
1940
1941         * doc/configfiles.texi (Configuration Files): Update documentation
1942         about tm_p.h and remove FIXME comment.
1943
1944 2011-09-06  Uros Bizjak  <ubizjak@gmail.com>
1945
1946         * config/i386/i386.c (ix86_function_value_regno_p): Use AX_REG.
1947         (function_value_32): Do not check TARGET_MMX, TARGET_SSE or TARGET_AVX.
1948
1949 2011-09-06  Iain Sandoe  <iains@gcc.gnu.org>
1950
1951         * config/darwin10.h Remove duplicate LIB_SPEC.
1952
1953 2011-09-06  Enkovich Ilya  <ilya.enkovich@intel.com>
1954
1955         PR middle-end/44382
1956         * target.def (reassociation_width): New hook.
1957
1958         * doc/tm.texi.in (reassociation_width): Likewise.
1959
1960         * doc/tm.texi (reassociation_width): Likewise.
1961
1962         * doc/invoke.texi (tree-reassoc-width): New param documented.
1963
1964         * hooks.h (hook_int_uint_mode_1): New default hook.
1965
1966         * hooks.c (hook_int_uint_mode_1): Likewise.
1967
1968         * config/i386/i386.h (ix86_tune_indices): Add
1969         X86_TUNE_REASSOC_INT_TO_PARALLEL and X86_TUNE_REASSOC_FP_TO_PARALLEL.
1970
1971         (TARGET_REASSOC_INT_TO_PARALLEL): New.
1972         (TARGET_REASSOC_FP_TO_PARALLEL): Likewise.
1973
1974         * config/i386/i386.c (initial_ix86_tune_features): Add
1975         X86_TUNE_REASSOC_INT_TO_PARALLEL and X86_TUNE_REASSOC_FP_TO_PARALLEL.
1976
1977         (ix86_reassociation_width): New function.
1978
1979         * params.def (PARAM_TREE_REASSOC_WIDTH): New param added.
1980
1981         * tree-ssa-reassoc.c (get_required_cycles): New function.
1982         (get_reassociation_width): Likewise.
1983         (swap_ops_for_binary_stmt): Likewise.
1984         (rewrite_expr_tree_parallel): Likewise.
1985
1986         (rewrite_expr_tree): Refactored.  Part of code moved into
1987         swap_ops_for_binary_stmt.
1988
1989         (reassociate_bb): Now checks reassociation width to be used and
1990         call rewrite_expr_tree_parallel instead of rewrite_expr_tree if needed.
1991
1992 2011-09-06  Richard Guenther  <rguenther@suse.de>
1993
1994         PR tree-optimization/47025
1995         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): BUILT_IN_VA_END
1996         uses nothing.
1997         (call_may_clobber_ref_p_1): BUILT_IN_VA_END is a barrier like
1998         BUILT_IN_FREE.
1999         (stmt_kills_ref_p_1): BUILT_IN_VA_END kills what its argument
2000         definitely points to.
2001         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
2002         BUILT_IN_VA_START doesn't let its va_list argument escape.
2003         * tree-ssa-dce.c (propagate_necessity): BUILT_IN_VA_END does
2004         not make any previous stores necessary.
2005
2006 2011-09-06  Martin Jambor  <mjambor@suse.cz>
2007
2008         * ipa-inline.h (struct inline_summary): Move versionable flag...
2009         * cgraph.h (struct cgraph_local_info): ...here
2010         * ipa-cp.c (determine_versionability): Use the new versionable flag.
2011         (determine_versionability): Likewise.
2012         (ipcp_versionable_function_p): Likewise.
2013         (ipcp_generate_summary): Likewise.
2014         * ipa-inline-analysis.c (dump_inline_summary): Do not dump the
2015         versionable flag.
2016         (compute_inline_parameters): Do not clear the versionable flag.
2017         (inline_read_section): Do not stream the versionable flag.
2018         (inline_write_summary): Likewise.
2019         * lto-cgraph.c (lto_output_node): Stream the versionable flag.
2020         (input_overwrite_node): Likewise.
2021
2022 2011-09-06  Richard Guenther  <rguenther@suse.de>
2023
2024         PR tree-optimization/48149
2025         * tree-ssa-sccvn.c (vn_get_expr_for): Simplify.  Fix tuplification bug.
2026         (vn_valueize): Move earlier.
2027         (valueize_expr): Use vn_valueize.
2028         (simplify_binary_expression): Simplify, also combine COMPLEX_EXPR
2029         operands.
2030         (simplify_unary_expression): Simplify.
2031
2032 2011-09-06  Richard Guenther  <rguenther@suse.de>
2033
2034         PR tree-optimization/48317
2035         * tree-ssa-sccvn.h (struct vn_nary_op_s): Make op a true
2036         trailing array.
2037         (sizeof_vn_nary_op): New inline function.
2038         (vn_nary_op_lookup_pieces): Adjust.
2039         (vn_nary_op_insert_pieces): Likewise.
2040         * tree-ssa-sccvn.c (vn_nary_op_eq): Also compare the length.
2041         (init_vn_nary_op_from_pieces): Adjust signature.  Deal with
2042         any number of operands.
2043         (vn_nary_length_from_stmt): New function.
2044         (init_vn_nary_op_from_stmt): Adjust for CONSTRUCTOR handling.
2045         (vn_nary_op_lookup_pieces): Adjust signature and allocate properly
2046         sized temporary.
2047         (vn_nary_op_lookup): Likewise.
2048         (vn_nary_op_lookup_stmt): Likewise.
2049         (vn_nary_op_insert_into): Likewise.
2050         (vn_nary_op_insert_stmt): Likewise.
2051         (visit_use): Handle CONSTRUCTOR as nary.
2052         * tree-ssa-pre.c (phi_translate_1): Adjust.
2053         (create_expression_by_pieces): Likewise.
2054         (compute_avail): Likewise.
2055
2056 2011-09-06  Ira Rosen  <ira.rosen@linaro.org>
2057
2058          * config/arm/arm.c (arm_preferred_simd_mode): Check
2059         TARGET_NEON_VECTORIZE_DOUBLE instead of
2060         TARGET_NEON_VECTORIZE_QUAD.
2061         (arm_autovectorize_vector_sizes): Likewise.
2062         * config/arm/arm.opt (mvectorize-with-neon-quad): Make inverse
2063         mask of mvectorize-with-neon-double.  Add RejectNegative.
2064         (mvectorize-with-neon-double): New.
2065
2066 2011-09-06  Richard Guenther  <rguenther@suse.de>
2067
2068         * tree-ssa-sccvn.c (visit_use): CSE stmt pieces and simplify matching.
2069
2070 2011-09-06  Tom de Vries  <tom@codesourcery.com>
2071
2072         * recog.c (asm_labels_ok): New function.
2073         (check_asm_operands): Use asm_labels_ok.
2074
2075 2011-09-05  Richard Sandiford  <rdsandiford@googlemail.com>
2076
2077         PR target/49606
2078         * config/mips/mips.h (ABI_HAS_64BIT_SYMBOLS): Check Pmode.
2079         (PMODE_INSN): New macro.
2080         * config/mips/mips.c (gen_load_const_gp): Use PMODE_INSN.
2081         (mips_got_load, mips_expand_synci_loop): Likewise.
2082         (mips_save_gp_to_cprestore_slot): Handle SImode and DImode
2083         cprestore patterns.
2084         (mips_emit_loadgp): Use PMODE_INSN.  Handle SImode and DImode
2085         copygp_mips16 patterns.
2086         (mips_expand_prologue): Handle SImode and DImode potential_cprestore
2087         and use_cprestore patterns.
2088         (mips_override_options): Check for incompatible -mabi and -mlong
2089         combinations.
2090         * config/mips/mips.md (unspec_got<mode>): Rename to...
2091         (unspec_got_<mode>): ...this.
2092         (copygp_mips16): Use the Pmode iterator.
2093         (potential_cprestore, cprestore, use_cprestore): Likewise.
2094         (clear_cache, indirect_jump): Use PMODE_INSN.
2095         (indirect_jump<mode>): Rename to...
2096         (indirect_jump_<mode>): ...this.
2097         (tablejump): Use PMODE_INSN.
2098         (tablejump<mode>): Rename to...
2099         (tablejump_<mode>): ...this.
2100         (exception_receiver): Handle restore_gp_si and restore_gp_di.
2101         (restore_gp): Use the Pmode iterator.
2102         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Use
2103         PMODE_INSN.
2104
2105 2011-09-05  Richard Sandiford  <rdsandiford@googlemail.com>
2106
2107         * config/mips/mips.c (mips_gimplify_va_arg_expr): Unshare off.
2108         Fix the type of the BIT_AND_EXPR.
2109
2110 2011-09-05  David S. Miller  <davem@davemloft.net>
2111
2112         * config.host: Add driver-sparc.o and sparc/x-sparc on
2113         native sparc*-*-linux* builds.
2114         * config/sparc/driver-sparc.c: Correct Linux strings.
2115         * config/sparc/linux.h: Add DRIVER_SELF_SPECS.
2116         * config/sparc/linux64.h: Likewise.
2117         * doc/invoke.texi: Document that Linux also supports
2118         -mcpu=native and -mtune=native on sparc.
2119
2120         * config/sparc/sparc-opts.h (PROCESSOR_NIAGARA3,
2121         PROCESSOR_NIAGARA4): New.
2122         * config/sparc/sparc.opt: Handle new processor types.
2123         * config/sparc/sparc.md: Add to "cpu" attribute.
2124         * config/sparc/sparc.h (TARGET_CPU_niagara3,
2125         TARGET_CPU_niagara4): New, treat as niagara2.
2126         * config/sparc/linux64.h: Handle niagara3 and niagara4 like niagara2.
2127         * config/sparc/sol2.h: Likewise.
2128         * config/sparc/niagara2.md: Schedule niagara3 like niagara2.
2129         * config/sparc/sparc.c (sparc_option_override): Add
2130         niagara3 and niagara4 handling.
2131         (sparc32_initialize_trampoline): Likewise.
2132         (sparc64_initialize_trampoline): Likewise.
2133         (sparc_use_sched_lookahead): Likewise.
2134         (sparc_issue_rate): Likewise.
2135         (sparc_register_move_cost): Likewise.
2136         * config/sparc/driver-sparc.c (cpu_names): Use niagara3
2137         and niagara4 as appropriate.
2138         * doc/invoke.texi: Document new processor types.
2139         * config.gcc: Recognize niagara3 and niagara4 in --with-cpu
2140         and --with-tune options.
2141
2142         * config/sparc/sol2-64.h: Move ...
2143         * config/sparc/default-64.h: ... to here.  Update comment.
2144         * config.gcc: Update Solaris sparc to use default-64.h, also
2145         prefix this header into the list on sparc64-*-linux.
2146         * config/sparc/linux64.h (TARGET_DEFAULT): Only override if
2147         TARGET_64BIT_DEFAULT is defined.  Remove commented out reference
2148         to MASK_HARD_QUAD.
2149
2150 2011-09-05  Georg-Johann Lay  <avr@gjlay.de>
2151
2152         PR target/50289
2153         * config/avr/avr.c (sequent_regs_live): Don't recognize sequences
2154         that contain global register variable.
2155
2156 2011-09-05  Richard Guenther  <rguenther@suse.de>
2157
2158         * tree-cfg.c (replace_uses_by): Use fold_stmt, not fold_stmt_inplace.
2159
2160 2011-09-05  Richard Guenther  <rguenther@suse.de>
2161
2162         * stor-layout.c (layout_type): Use size_binop for array size
2163         calculations.
2164
2165 2011-09-05  Georg-Johann Lay  <avr@gjlay.de>
2166
2167         * config/avr/avr.h (progmem_section): Remove Declaration.
2168         * config/avr/avr.c (progmem_section): Make static and rename to
2169         progmem_swtable_section.
2170         (avr_output_addr_vec_elt): No need to switch sections.
2171         (avr_asm_init_sections): Use output_section_asm_op as section
2172         callback for progmem_swtable_section.
2173         (avr_output_progmem_section_asm_op): Remove Function.
2174         (TARGET_ASM_FUNCTION_RODATA_SECTION): New Define.
2175         (avr_asm_function_rodata_section): New static Function.
2176         * config/avr/elf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Output
2177         alignment 2**1 for jump tables.
2178
2179 2011-09-04  Jan Hubicka  <jh@suse.cz>
2180
2181         * ipa-inline-analysis.c (set_cond_stmt_execution_predicate): Check that
2182         parameter is SSA name.
2183
2184 2011-09-04  Richard Guenther  <rguenther@suse.de>
2185
2186         Revert
2187         2011-08-31  Richard Guenther  <rguenther@suse.de>
2188
2189         * fold-const.c (extract_muldiv_1): Remove bogus TYPE_IS_SIZETYPE
2190         special-casing.
2191
2192 2011-09-04  Iain Sandoe  <iains@gcc.gnu.org>
2193
2194         PR debug/49901
2195         * config/darwin.h (DEBUG_MACRO_SECTION): New macro.
2196
2197 2011-09-04  Jakub Jelinek  <jakub@redhat.com>
2198             Ira Rosen  <ira.rosen@linaro.org>
2199
2200         PR tree-optimization/50208
2201         * tree-vect-patterns.c (vect_handle_widen_mult_by_const): Add an
2202         argument.  Check that def_stmt is inside the loop.
2203         (vect_recog_widen_mult_pattern): Update calls to
2204         vect_handle_widen_mult_by_cons.
2205         (vect_operation_fits_smaller_type): Check that def_stmt is
2206         inside the loop.
2207
2208 2011-09-04  Ira Rosen  <ira.rosen@linaro.org>
2209
2210         * tree-vectorizer.c (vect_print_dump_info): Print line
2211         number when dumping to a file.
2212         (vectorize_loops): Add new messages to dump file.
2213
2214 2011-09-03  Martin Jambor  <mjambor@suse.cz>
2215
2216         * ipa-prop.h (ipa_jump_func_t): New typedef.
2217         (struct ipa_edge_args): Removed field argument_count, field
2218         jump_functions turned into a vector.
2219         (ipa_set_cs_argument_count): Removed.
2220         (ipa_get_cs_argument_count): Updated to work on vectors.
2221         (ipa_get_ith_jump_func): Likewise.
2222         * ipa-prop.c (ipa_count_arguments): Removed.
2223         (compute_scalar_jump_functions): Use ipa_get_ith_jump_func to access
2224         jump functions.  Update caller.
2225         (compute_pass_through_member_ptrs): Likewise.
2226         (compute_cst_member_ptr_arguments): Likewise.
2227         (ipa_compute_jump_functions_for_edge): Get number of arguments from
2228         the statement, allocate vector.
2229         (ipa_compute_jump_functions): Do not call ipa_count_arguments.
2230         (duplicate_ipa_jump_func_array): Removed.
2231         (ipa_edge_duplication_hook): Use VEC_copy, do not copy argument count.
2232         (ipa_read_node_info): Allocate vector.
2233
2234 2011-09-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2235
2236         PR middle-end/50232
2237         * config/pa/pa.md (return): Define "return" insn pattern.
2238         (epilogue): Use it when no epilogue is needed.
2239         * config/pa/pa.c (pa_can_use_return_insn): New function.
2240         * config/pa/pa-protos.h (pa_can_use_return_insn): Declare.
2241
2242 2011-09-03  Eric Botcazou  <ebotcazou@adacore.com>
2243
2244         * cfgexpand.c (add_stack_var): Assert that the alignment is not zero.
2245         * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Revert latest change.
2246         Force at least BITS_PER_UNIT alignment on the new variable.
2247
2248 2011-09-02  Gary Funck <gary@intrepid.com>
2249
2250         * opts.c (print_specific_help): Fix off-by-one compare in
2251         assertion check.
2252         * opts.h (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_DRIVER,
2253         CL_TARGET, CL_COMMON, CL_JOINED, CL_SEPARATE, CL_UNDOCUMENTED):
2254         Increase by +5 to allow for more languages.
2255         * optc-gen.awk: Generate #if that ensures that the number of
2256         languages is within the implementation-defined limit.
2257
2258 2011-09-02  Michael Matz  <matz@suse.de>
2259
2260         PR middle-end/50260
2261         * ipa-split.c (split_function): Call add_referenced_var.
2262
2263         * tree-ssa-phiopt.c (cond_store_replacement): Don't call get_var_ann.
2264         (cond_if_else_store_replacement_1): Ditto.
2265         * tree-ssa-pre.c (get_representative_for): Ditto.
2266         (create_expression_by_pieces): Ditto.
2267         (insert_into_preds_of_block): Ditto.
2268         * tree-sra.c (create_access_replacement): Ditto.
2269         (get_replaced_param_substitute): Ditto.
2270
2271 2011-09-02  Bernd Schmidt  <bernds@codesourcery.com>
2272
2273         * config/c6x/c6x.md (collapse-ndfa, no-comb-vect): New
2274         automata_options.
2275         (d1, l1, s1, m1, d2, l2, s2, m2): Changed to define_query_cpu_unit.
2276         (l1w, s1w, l2w, s2w): Define in the main automaton.
2277         (fps1, fpl1, adddps1, adddpl1, fps2, fpl2, adddps2, adddpl2): New
2278         units.
2279         * config/c6x/c6x.c (c6x_sched_insn_info): Add unit_mask member.
2280         (c6x_unit_names): Add the new units.
2281         (c6x_unit_codes): New static array.
2282         (UNIT_QID_D1, UNIT_QID_L1, UNIT_QID_S1, UNIT_QID_M1, UNIT_QID_FPS1,
2283         UNIT_QID_FPL1, UNIT_QID_ADDDPS1, UNIT_QID_ADDDPL1,
2284         UNIT_QID_SIDE_OFFSET): New macros.
2285         (RESERVATION_S2): Adjust value.
2286         (c6x_option_override): Compute c6x_unit_codes.
2287         (assign_reservations): Take the unit_mask of the last instruction
2288         into account.  Detect floating point reservations by looking for
2289         the new units.  Don't assign reservations if the field is already
2290         nonzero.
2291         (struct c6x_sched_context): Add member prev_cycle_state_ctx.
2292         (init_sched_state): Initialize it.
2293         (c6x_clear_sched_context): Free it.
2294         (insn_set_clock): Clear reservation.
2295         (prev_cycle_state): New static variable.
2296         (c6x_init_sched_context): Save it.
2297         (c6x_sched_init): Allocate space for it and clear it.
2298         (c6x_sched_dfa_pre_cycle_insn): New static function.
2299         (c6x_dfa_new_cycle): Save state at the start of a new cycle.
2300         (c6x_variable_issue): Only record units in the unit_mask that
2301         were not set at the start of the cycle.
2302         (c6x_variable_issue): Compute and store the unit_mask from the
2303         current state.
2304         (reorg_split_calls): Ensure the new information remains correct.
2305         (TARGET_SCHED_DFA_NEW_CYCLE, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
2306         TARGET_SCHED_DFA_PRE_CYCLE_INSN): Define.
2307         * config/c6x/c6x.h (CPU_UNITS_QUERY): Define.
2308         * config/c6x/c6x-sched.md.in (fp4_ls_N__CROSS_, adddp_ls_N__CROSS_):
2309         Add special reservations.
2310         * config/c6x/c6x-sched.md: Regenerate.
2311
2312 2011-09-02  Martin Jambor  <mjambor@suse.cz>
2313
2314         * ipa-prop.h (ipa_node_params): Removed fields
2315         called_with_var_arguments and node_versionable.
2316         (ipa_set_called_with_variable_arg): Removed.
2317         (ipa_is_called_with_var_arguments): Likewise.
2318         * ipa-cp.c (ipa_get_lattice): Fixed index check in an assert.
2319         (determine_versionability): Do not check for type attributes and va
2320         builtins.  Record versionability into inline summary.
2321         (initialize_node_lattices): Do not check
2322         ipa_is_called_with_var_arguments.
2323         (propagate_constants_accross_call): Likewise, ignore arguments we do
2324         not have PARM_DECLs for, set variable flag for parameters that were
2325         not passed a value.
2326         (create_specialized_node): Dump info that we cannot change signature.
2327         * ipa-prop.c (ipa_compute_jump_functions): Do not care about variable
2328         number of arguments.
2329         (ipa_make_edge_direct_to_target): Likewise.
2330         (ipa_update_after_lto_read): Likewise.
2331         (ipa_node_duplication_hook): Do not copy called_with_var_arguments flag.
2332         * tree-inline.c (copy_arguments_for_versioning): Copy PARM_DECLs if
2333         they were remapped.
2334
2335 2011-09-02  Richard Guenther  <rguenther@suse.de>
2336
2337         PR tree-optimization/27460
2338         PR middle-end/29269
2339         * doc/md.texi (vcond): Document.
2340         * genopinit.c (optabs): Turn vcond{,u}_optab into a conversion
2341         optab with two modes.
2342         * optabs.h (enum convert_optab_index): Add COI_vcond, COI_vcondu.
2343         (enum direct_optab_index): Remove DOI_vcond, DOI_vcondu.
2344         (vcond_optab): Adjust.
2345         (vcondu_optab): Likewise.
2346         (expand_vec_cond_expr_p): Adjust prototype.
2347         * optabs.c (get_vcond_icode): Adjust.
2348         (expand_vec_cond_expr_p): Likewise.
2349         (expand_vec_cond_expr): Likewise.
2350         * tree-vect-stmts.c (vect_is_simple_cond): Return the comparison
2351         vector type.
2352         (vectorizable_condition): Allow differing types for comparison
2353         and result.
2354         * config/i386/i386.c (ix86_expand_sse_cmp): Use proper mode
2355         for the comparison.
2356         * config/i386/sse.md (vcond<mode>): Split to
2357         vcond<V_256:mode><VF_256:mode>, vcond<V_128:mode><VF_128:mode>,
2358         vcond<V_128:mode><VI124_128:mode> and
2359         vcondu<V_128:mode><VI124_128:mode>.
2360         (vcondv2di): Change to vcond<VI8F_128:mode>v2di.
2361         (vconduv2di): Likewise.
2362         * config/arm/neon.md (vcond<mode>): Change to vcond*<mode><mode>.
2363         (vcondu<mode>): Likewise.
2364         * config/ia64/vect.md (vcond<mode>): Likewise.
2365         (vcondu<mode>): Likewise.
2366         (vcondv2sf): Likewise.
2367         * config/mips/mips-ps-3d.md (vcondv2sf): Likewise.
2368         * config/rs6000/paired.md (vcondv2sf): Likewise.
2369         * config/rs6000/vector.md (vcond<mode>): Likewise.
2370         (vcondu<mode>): Likewise.
2371         * config/spu/spu.md (vcond<mode>): Likewise.
2372         (vcondu<mode>): Likewise.
2373
2374 2011-09-02  Richard Guenther  <rguenther@suse.de>
2375
2376         * pretty-print.h (pp_unsigned_wide_integer): New.
2377         * tree-pretty-print.c (dump_generic_node): Print unsigned
2378         host-wide-int fitting INTEGER_CSTs with pp_unsigned_wide_integer.
2379
2380 2011-09-02  Richard Sandiford  <richard.sandiford@linaro.org>
2381
2382         PR target/49987
2383         * config/rs6000/rs6000.c (paired_expand_vector_init): Check for
2384         valid CONST_VECTOR operands.
2385         (rs6000_expand_vector_init): Likewise.
2386
2387 2011-09-02  Martin Jambor  <mjambor@suse.cz>
2388
2389         * cgraph.h (cgraph_indirect_call_info): Removed field thunk_delta.
2390         * gimple-fold.c (gimple_get_virt_method_for_binfo): Rewritten to use
2391         BINFO_VTABLE.  Parameter delta removed, all callers updated.
2392         * tree.c (free_lang_data_in_binfo): Clear BINFO_VIRTUALs instead
2393         BINFO_VTABLE.
2394         * cgraph.c (cgraph_make_edge_direct): Removed parameter delta, updated
2395         all calls.
2396         * cgraphunit.c (cgraph_redirect_edge_call_stmt_to_callee): Removed
2397         handling of thunk_delta.
2398         * ipa-cp.c (get_indirect_edge_target): Removed parameter delta.
2399         (devirtualization_time_bonus): Do not handle thunk deltas.
2400         (ipcp_discover_new_direct_edges): Likewise.
2401         * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
2402         (try_make_edge_direct_simple_call): Likewise.
2403         (try_make_edge_direct_virtual_call): Likewise.
2404         * lto-cgraph.c (output_cgraph_opt_summary_p): Likewise.  Mark
2405         parameter set as unused.
2406         (output_edge_opt_summary): Likewise.  Mark both parameters as unused.
2407         * lto-cgraph.c (output_cgraph_opt_summary_p): Likewise.  Mark
2408         parameter set as unused.
2409         (output_edge_opt_summary): Likewise.  Mark both parameters as unused.
2410         (input_edge_opt_summary): Likewise.
2411         * lto-streamer-out.c (lto_output_ts_binfo_tree_pointers): Do not stream
2412         BINFO_VIRTUALS at all.
2413         * lto-streamer-in.c (lto_input_ts_binfo_tree_pointers): Likewise.
2414
2415 2011-09-02  Richard Guenther  <rguenther@suse.de>
2416
2417         * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Do not fold alloca (0).
2418         (ccp_fold_stmt): Continue replacing args when folding alloca fails.
2419
2420 2011-08-31  Richard Guenther  <rguenther@suse.de>
2421
2422         * expr.c (expand_expr_real_2): Move COND_EXPR and VEC_COND_EXPR
2423         handling here, from ...
2424         (expand_expr_real_1): ... here.
2425         * gimple-pretty-print.c (dump_ternary_rhs): Handle COND_EXPR
2426         and VEC_COND_EXPR.
2427         * gimple.c (gimple_rhs_class_table): Make COND_EXPR and VEC_COND_EXPR
2428         a GIMPLE_TERNARY_RHS.
2429         * tree-cfg.c (verify_gimple_assign_ternary): Handle COND_EXPR
2430         and VEC_COND_EXPR here ...
2431         (verify_gimple_assign_single): ... not here.
2432         * gimple-fold.c (fold_gimple_assign): Move COND_EXPR folding.
2433         * tree-object-size.c (cond_expr_object_size): Adjust.
2434         (collect_object_sizes_for): Likewise.
2435         * tree-scalar-evolution.c (interpret_expr): Don't handle ternary RHSs.
2436         * tree-ssa-forwprop.c (forward_propagate_into_cond): Fix and simplify.
2437         (ssa_forward_propagate_and_combine): Adjust.
2438         * tree-ssa-loop-im.c (move_computations_stmt): Build the COND_EXPR
2439         as ternary.
2440         * tree-ssa-threadedge.c (fold_assignment_stmt): Adjust.
2441         * tree-vect-loop.c (vect_is_simple_reduction_1): Likewise.
2442         * tree-vect-stmt.c (vectorizable_condition): Likewise.
2443         * tree-vrp.c (extract_range_from_cond_expr): Likewise.
2444         (extract_range_from_assignment): Likewise.
2445
2446 2011-08-31  Richard Sandiford  <rdsandiford@googlemail.com>
2447
2448         * config/i386/i386.md: Use (match_test ...) for attribute tests.
2449         * config/i386/mmx.md: Likewise.
2450         * config/i386/sse.md: Likewise.
2451         * config/i386/predicates.md (call_insn_operand): Use
2452         (not (match_test "...")) instead of (match_test "!...")
2453         * config/i386/constraints.md (w): Likewise.
2454
2455 2011-08-31  Richard Sandiford  <rdsandiford@googlemail.com>
2456
2457         * doc/md.texi: Describe the use of match_tests in attribute tests.
2458         * rtl.def (MATCH_TEST): Update commentary.
2459         * genattrtab.c (attr_copy_rtx, check_attr_test, clear_struct_flag)
2460         (write_test_expr, walk_attr_value): Handle MATCH_TEST.
2461
2462 2011-08-31  Richard Sandiford  <rdsandiford@googlemail.com>
2463
2464         * genattrtab.c (attr_rtx_1): Hash SYMBOL_REFs.
2465         (attr_string): Use copy_md_ptr_loc.
2466
2467 2011-08-31  Martin Jambor  <mjambor@suse.cz>
2468
2469         PR middle-end/49886
2470         * ipa-inline-analysis.c (compute_inline_parameters): Set
2471         can_change_signature of noes with typde attributes.
2472         * ipa-split.c (split_function): Do not skip any arguments if
2473         can_change_signature is set.
2474
2475 2011-08-31  Martin Jambor  <mjambor@suse.cz>
2476
2477         * cgraphunit.c (cgraph_redirect_edge_call_stmt_to_callee): Alias
2478         check removed.
2479
2480 2011-08-31  Richard Guenther  <rguenther@suse.de>
2481
2482         * fold-const.c (extract_muldiv_1): Remove bogus TYPE_IS_SIZETYPE
2483         special-casing.
2484
2485 2011-08-31  Marc Glisse  <marc.glisse@inria.fr>
2486
2487         * doc/generic.texi (Types for C++): CP_TYPE_QUALS -> cp_type_quals.
2488
2489 2011-08-31  Tom de Vries  <tom@codesourcery.com>
2490
2491         PR middle-end/43513
2492         * Makefile.in (tree-ssa-ccp.o): Add $(PARAMS_H) to rule.
2493         * tree-ssa-ccp.c (params.h): Include.
2494         (fold_builtin_alloca_for_var): New function.
2495         (ccp_fold_stmt): Use fold_builtin_alloca_for_var.
2496
2497 2011-08-30  Uros Bizjak  <ubizjak@gmail.com>
2498
2499         * config/i386/i386.c (ix86_valid_target_attribute_inner_p):
2500         Handle FMA option.
2501
2502 2011-08-30  Andrew Stubbs  <ams@codesourcery.com>
2503
2504         * config/arm/arm.c (optimal_immediate_sequence_1): Make b1, b2,
2505         b3 and b4 unsigned.
2506
2507 2011-08-30  Andrew Stubbs  <ams@codesourcery.com>
2508
2509         * config/arm/arm.c (arm_gen_constant): Set can_negate correctly
2510         when code is SET.
2511
2512 2011-08-30  Richard Guenther  <rguenther@suse.de>
2513
2514         PR middle-end/48571
2515         * gimple.h (maybe_fold_offset_to_address): Remove.
2516         (maybe_fold_offset_to_reference): Likewise.
2517         (maybe_fold_stmt_addition): Likewise.
2518         (may_propagate_address_into_dereference): Likewise.
2519         * tree-inline.c (remap_gimple_op_r): Do not reconstruct
2520         array references.
2521         * gimple-fold.c (canonicalize_constructor_val): Likewise.
2522         Canonicalize invariant POINTER_PLUS_EXPRs to invariant MEM_REF
2523         addresses instead.
2524         (may_propagate_address_into_dereference): Remove.
2525         (maybe_fold_offset_to_array_ref): Likewise.
2526         (maybe_fold_offset_to_reference): Likewise.
2527         (maybe_fold_offset_to_address): Likewise.
2528         (maybe_fold_stmt_addition): Likewise.
2529         (fold_gimple_assign): Do not reconstruct array references but
2530         instead canonicalize invariant POINTER_PLUS_EXPRs to invariant
2531         MEM_REF addresses.
2532         (gimple_fold_stmt_to_constant_1): Likewise.
2533         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
2534         * gimplify.c (gimplify_conversion): Likewise.
2535         (gimplify_expr): Likewise.
2536
2537 2011-08-30  Ilya Tocar  <ilya.tocar@intel.com>
2538
2539         * config/i386/fmaintrin.h: New.
2540         * config.gcc: Add fmaintrin.h.
2541         * config/i386/i386.c
2542         (enum ix86_builtins) <IX86_BUILTIN_VFMADDSS3>: New.
2543         <IX86_BUILTIN_VFMADDSD3>: Likewise.
2544         * config/i386/sse.md (fmai_vmfmadd_<mode>): New.
2545         (*fmai_fmadd_<mode>): Likewise.
2546         (*fmai_fmsub_<mode>): Likewise.
2547         (*fmai_fnmadd_<mode>): Likewise.
2548         (*fmai_fnmsub_<mode>): Likewise.
2549         * config/i386/immintrin.h: Add fmaintrin.h.
2550
2551 2011-08-30  Bernd Schmidt  <bernds@codesourcery.com>
2552
2553         * genautomata.c (NO_COMB_OPTION): New macro.
2554         (no_comb_flag): New static variable.
2555         (gen_automata_option): Handle NO_COMB_OPTION.
2556         (comb_vect_p): False if no_comb_flag.
2557         (add_vect): Move computation of min/max values.  Return early if
2558         no_comb_flag.
2559         * doc/md.texi (automata_option): Document no-comb-vect.
2560
2561         * config/i386/i386.c (get_pc_thunk_name): Change prefix to
2562         "__x86.get_pc_thunk".
2563
2564         * bb-reorder.c (insert_section_boundary_note): Only do it if
2565         we reordered the blocks; i.e. not if !optimize_function_for_speed_p.
2566
2567 2011-08-30  Christian Bruel  <christian.bruel@st.com>
2568
2569         * coverage.c (coverage_init): Check flag_branch_probabilities instead of
2570         flag_profile_use.
2571
2572 2011-08-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
2573
2574         * config/rs6000/rs6000.opt (-msave-toc-indirect): Change default
2575         to off.  Document switch.
2576         * doc/invoke.texi (-msave-toc-indirect): Ditto.
2577
2578 2011-08-29  Jakub Jelinek  <jakub@redhat.com>
2579
2580         * gthr-posix.h (__gthread_active_p): Do not use preprocessor
2581         conditionals and comments inside macro arguments.
2582
2583 2011-08-29  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
2584             Richard Guenther  <rguenther@suse.de>
2585
2586         * tree.h (constant_boolean_node): Adjust prototype.
2587         * fold-const.c (fold_convert_loc): Move aggregate conversion
2588         leeway down.
2589         (constant_boolean_node): Make value parameter boolean, add
2590         vector type handling.
2591         (fold_unary_loc): Use constant_boolean_node.
2592         (fold_binary_loc): Preserve types properly when folding
2593         COMPLEX_EXPR <__real x, __imag x>.
2594         * gimplify.c (gimplify_expr): Handle vector comparison.
2595         * tree.def (EQ_EXPR, ...): Document behavior on vector typed
2596         comparison.
2597         * tree-cfg.c (verify_gimple_comparison): Verify vector typed
2598         comparisons.
2599
2600 2011-08-29  Jakub Jelinek  <jakub@redhat.com>
2601
2602         PR middle-end/48722
2603         * emit-rtl.c (unshare_all_rtl_again): For CALL_INSNs,
2604         reset_used_flags also in CALL_INSN_FUNCTION_USAGE.
2605         (verify_rtl_sharing): Likewise and verify_rtx_sharing
2606         in there too.
2607         (unshare_all_rtl_in_chain): For CALL_INSNs
2608         copy_rtx_if_shared also CALL_INSN_FUNCTION_USAGE.
2609
2610 2011-08-29  Richard Guenther  <rguenther@suse.de>
2611
2612         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Set a location
2613         on the built ADDR_EXPR.
2614
2615 2011-08-29  Jakub Jelinek  <jakub@redhat.com>
2616
2617         PR debug/50215
2618         * var-tracking.c (create_entry_value): Call cselib_lookup_from_insn
2619         before adding ENTRY_VALUE to val->locs.
2620
2621 2011-08-28  Mikael Pettersson  <mikpe@it.uu.se>
2622
2623         PR bootstrap/50218
2624         * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Initialize
2625         comp.
2626
2627 2011-08-27  Bernd Schmidt  <bernds@codesourcery.com>
2628
2629         * doc/rtl.texi (simple_return): Document.
2630         (parallel, PATTERN): Here too.
2631         * doc/md.texi (return): Mention it's allowed to expand to simple_return
2632         in some cases.
2633         (simple_return): Document standard pattern.
2634         * gengenrtl.c (special_rtx): SIMPLE_RETURN is special.
2635         * final.c (final_scan_insn): Use ANY_RETURN_P on body.
2636         * reorg.c (function_return_label, function_simple_return_label):
2637         New static variables, replacing...
2638         (end_of_function_label): ... this.
2639         (simplejump_or_return_p): New static function.
2640         (optimize_skip, steal_delay_list_from_fallthrough,
2641         fill_slots_from_thread): Use it.
2642         (relax_delay_slots): Likewise.  Use ANY_RETURN_P on body.
2643         (rare_destination, follow_jumps): Use ANY_RETURN_P on body.
2644         (find_end_label): Take a new arg which is one of the two return
2645         rtxs.  Depending on which, set either function_return_label or
2646         function_simple_return_label.  All callers changed.
2647         (make_return_insns): Make both kinds.
2648         (dbr_schedule): Adjust for two kinds of end labels.
2649         * function.c (emit_return_into_block): Set JUMP_LABEL properly.
2650         * genemit.c (gen_exp): Handle SIMPLE_RETURN.
2651         (gen_expand, gen_split): Use ANY_RETURN_P.
2652         * df-scan.c (df_uses_record): Handle SIMPLE_RETURN.
2653         * rtl.def (SIMPLE_RETURN): New code.
2654         * ifcvt.c (find_if_case_1): Be more careful about
2655         redirecting jumps to the EXIT_BLOCK.
2656         * jump.c (condjump_p, condjump_in_parallel_p, any_condjump_p,
2657         returnjump_p_1): Handle SIMPLE_RETURNs.
2658         * print-rtl.c (print_rtx): Likewise.
2659         * rtl.c (copy_rtx): Likewise.
2660         * bt-load.c (compute_defs_uses_and_gen): Use ANY_RETURN_P.
2661         * combine.c (simplify_set): Likewise.
2662         * resource.c (find_dead_or_set_registers, mark_set_resources):
2663         Likewise.
2664         * emit-rtl.c (verify_rtx_sharing, classify_insn, copy_insn_1,
2665         copy_rtx_if_shared_1, mark_used_flags): Handle SIMPLE_RETURNs.
2666         (init_emit_regs): Initialize simple_return_rtx.
2667         * cfglayout.c (fixup_reorder_chain): Pass a JUMP_LABEL to
2668         force_nonfallthru_and_redirect.
2669         * rtl.h (ANY_RETURN_P): Allow SIMPLE_RETURN.
2670         (GR_SIMPLE_RETURN): New enum value.
2671         (simple_return_rtx): New macro.
2672         * basic-block.h (force_nonfallthru_and_redirect): Adjust
2673         declaration.
2674         * cfgrtl.c (force_nonfallthru_and_redirect): Take a new jump_label
2675         argument.  All callers changed.  Be careful about what kinds of
2676         returnjumps to generate.
2677         * config/i386/3i86.c (ix86_pad_returns, ix86_count_insn_bb,
2678         ix86_pad_short_function): Likewise.
2679         * config/arm/arm.c (arm_final_prescan_insn): Handle both kinds
2680         of return.
2681         * config/mips/mips.md (any_return): New code_iterator.
2682         (optab): Add cases for return and simple_return.
2683         (return): Expand to a simple_return.
2684         (simple_return): New pattern.
2685         (*<optab>, *<optab>_internal for any_return): New patterns.
2686         (return_internal): Remove.
2687         * config/mips/mips.c (mips_expand_epilogue): Make the last insn
2688         a simple_return_internal.
2689
2690 2011-08-27  Uros Bizjak  <ubizjak@gmail.com>
2691
2692         * config/i386/sse.md (*absneg<mode>2): Fix split condition.
2693         (vec_extract_lo_<mode>): Prevent both operands in memory.
2694         (vec_extract_lo_v16hi): Ditto.
2695         (*vec_extract_v4sf_mem): Add TARGET_SSE insn constraint.
2696
2697 2011-08-27  Uros Bizjak  <ubizjak@gmail.com>
2698
2699         * config/i386/sse.md (mulv16qi3): Attach REG_EQUAL note.
2700         (*sse2_mulv4si3): Ditto.
2701         (mulv2di3): Ditto.
2702         * config/i386/i386.c (legitimize_tls_address): Change REG_EQIV
2703         notes to REG_EQUAL.
2704
2705 2011-08-27  Uros Bizjak  <ubizjak@gmail.com>
2706
2707         PR target/50202
2708         * config/i386/sse.md (sse4_2_pcmpestr): Emit NOTE_INSN_DELETED note
2709         when all outputs are unused.
2710         (sse4_2_pcmpistr): Ditto.
2711
2712 2011-08-26  Uros Bizjak  <ubizjak@gmail.com>
2713
2714         * config/i386/i386.md (round<mode>2): New expander.
2715         * config/i386/i386.c (enum ix86_builtins): Add
2716         IX86_BUILTIN_ROUND{PS,PD}_AZ{,256}.
2717         (struct builtin_description): Add __builtin_ia32_round{ps,pd}_az{,256}
2718         descriptions.
2719         (ix86_builtin_vectorized_function): Handle BUILT_IN_ROUND{,F} builtins.
2720         (ix86_build_const_vector): Rewrite using loop with RTVEC_ELT accessor.
2721
2722 2011-08-26  Uros Bizjak  <ubizjak@gmail.com>
2723
2724         PR middle-end/50083
2725         * convert.c (convert_to_integer) <BUIT_IN_ROUND{,F,L}>: Convert
2726         only when TARGET_C99_FUNCTIONS.
2727         <BUILT_IN_NEARBYINT{,F,L}>: Ditto.
2728         <BUILT_IN_RINT{,F,L}>: Ditto.
2729
2730 2011-08-26  Michael Matz  <matz@suse.de>
2731             Jakub Jelinek  <jakub@redhat.com>
2732
2733         PR lto/50165
2734         * lto-streamer-in.c (canon_file_name): Initialize new_slot->len;
2735         don't call strlen twice, use memcpy.
2736
2737 2011-08-26  H.J. Lu  <hongjiu.lu@intel.com>
2738
2739         * config/i386/bmi2intrin.h: Allow in <immintrin.h>.
2740         * config/i386/bmiintrin.h: Likewise.
2741         * config/i386/lzcntintrin.h: Likewise.
2742
2743         * config/i386/immintrin.h: Include <lzcntintrin.h>,
2744         <bmiintrin.h> and <bmi2intrin.h>.
2745
2746 2011-08-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2747
2748         PR target/50166
2749         * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Check count in main.
2750         * configure: Regenerate.
2751
2752 2011-08-26  Jakub Jelinek  <jakub@redhat.com>
2753
2754         PR c/50179
2755         * c-typeck.c (c_process_expr_stmt): Skip over nops and
2756         call mark_exp_read even if exprv is ADDR_EXPR.
2757
2758 2011-08-26  Richard Sandiford  <richard.sandiford@linaro.org>
2759
2760         * df-problems.c (df_note_bb_compute): Pass uses rather than defs
2761         to df_set_dead_notes_for_mw.
2762
2763 2011-08-26  Richard Guenther  <rguenther@suse.de>
2764
2765         * varasm.c (decode_addr_const): Handle MEM_REF[&X, OFF].
2766
2767 2011-08-26  Zdenek Dvorak  <ook@ucw.cz>
2768             Tom de Vries  <tom@codesourcery.com>
2769
2770         * tree-ssa-loop-ivopts.c (struct cost_pair): Add comp field.
2771         (struct ivopts_data): Add loop_single_exit_p field.
2772         (niter_for_exit): Change parameter desc_p into return value.  Return
2773         desc if desc->may_be_zero.  Free desc if unused.
2774         (niter_for_single_dom_exit): Change return type.
2775         (find_induction_variables): Handle changed return type of
2776         niter_for_single_dom_exit.  Dump may_be_zero.
2777         (add_candidate_1): Keep original base and step type for IP_ORIGINAL.
2778         (set_use_iv_cost): Add and handle comp parameter.
2779         (determine_use_iv_cost_generic, determine_use_iv_cost_address): Add
2780         comp argument to set_use_iv_cost.
2781         (strip_wrap_conserving_type_conversions, expr_equal_p)
2782         (difference_cannot_overflow_p, iv_elimination_compare_lt): New function.
2783         (may_eliminate_iv): Add comp parameter.  Handle new return type of
2784         niter_for_exit.  Use loop_single_exit_p.  Use iv_elimination_compare_lt.
2785         (determine_use_iv_cost_condition): Add comp argument to set_use_iv_cost
2786         and may_eliminate_iv.
2787         (rewrite_use_compare): Move call to iv_elimination_compare to ...
2788         (may_eliminate_iv): Here.
2789         (tree_ssa_iv_optimize_loop): Initialize loop_single_exit_p.
2790
2791 2011-08-26  Tom de Vries  <tom@codesourcery.com>
2792
2793         * tree-pretty-print (dump_generic_node): Test for NULL_TREE before
2794         accessing TREE_TYPE.
2795
2796 2011-08-26  Jiangning Liu  <jiangning.liu@arm.com>
2797
2798         * config/arm/arm.md (*ior_scc_scc): Enable for Thumb2 as well.
2799         (*ior_scc_scc_cmp): Likewise
2800         (*and_scc_scc): Likewise.
2801         (*and_scc_scc_cmp): Likewise.
2802         (*and_scc_scc_nodom): Likewise.
2803         (*cmp_ite0, *cmp_ite1, *cmp_and, *cmp_ior): Handle Thumb2.
2804
2805 2011-08-26  Jakub Jelinek  <jakub@redhat.com>
2806
2807         * rtlanal.c (nonzero_bits1): Handle CLRSB.
2808
2809 2011-08-26  Richard Guenther  <rguenther@suse.de>
2810
2811         * expr.c (string_constant): Handle &MEM_REF.
2812
2813 2011-08-26  Andrew Stubbs  <ams@codesourcery.com>
2814
2815         * config/arm/arm.c (struct four_ints): New type.
2816         (count_insns_for_constant): Delete function.
2817         (find_best_start): Delete function.
2818         (optimal_immediate_sequence): New function.
2819         (optimal_immediate_sequence_1): New function.
2820         (arm_gen_constant): Move constant splitting code to
2821         optimal_immediate_sequence.
2822         Rewrite constant negation/invertion code.
2823
2824 2011-08-26  Andrew Stubbs  <ams@codesourcery.com>
2825
2826         * config/arm/arm-protos.h (const_ok_for_op): Add prototype.
2827         * config/arm/arm.c (const_ok_for_op): Add support for addw/subw.
2828         Remove prototype. Remove static function type.
2829         * config/arm/arm.md (*arm_addsi3): Add addw/subw support.
2830         Add arch attribute.
2831         * config/arm/constraints.md (Pj, PJ): New constraints.
2832
2833 2011-08-26  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2834
2835         * config/arm/cortex-a9.md ("cortex_a9_mult_long"): New.
2836         ("cortex_a9_multiply_long"): New and use above.  Handle all
2837         long multiply cases.
2838         ("cortex_a9_multiply"): Handle smmul and smmulr.
2839         ("cortex_a9_mac"): Handle smmla.
2840
2841 2011-08-25  Richard Henderson  <rth@redhat.com>
2842
2843         PR 50132
2844         PR 49864
2845         * cfgcleanup.c (old_insns_match_p): Don't allow cross-jump for
2846         non-constant stack adjutment.
2847         * expr.c (find_args_size_adjust): Break out from ...
2848         (fixup_args_size_notes): ... here.
2849         * rtl.h (find_args_size_adjust): Declare.
2850
2851 2011-08-25  Uros Bizjak  <ubizjak@gmail.com>
2852
2853         * config/i386/i386.md (isa): Add sse2, sse2_noavx, sse3,
2854         sse4 and sse4_noavx.
2855         (enabled): Handle sse2, sse2_noavx, sse3, sse4 and sse4_noavx.
2856         (*pushdf_rex64): Change Y2 register constraint to x.
2857         (*movdf_internal_rex64): Ditto.
2858         (*zero_extendsidi2_rex64): Ditto.
2859         (*movdi_internal): Change Y2 register constraint to x
2860         and update "isa" attribute.
2861         (*pushdf): Ditto.
2862         (*movdf internal): Ditto.
2863         (zero_extendsidi2_1): Ditto.
2864         (*truncdfdf_mixed): Ditto.
2865         (*truncxfdf2_mixed): Ditto.
2866         * config/i386/mmx.md (*mov<mode>_internal_rex64): Change Y2
2867         register constraint to x.
2868         (*movv2sf_internal_rex64): Ditto.
2869         (*mov<mode>_internal): Change Y2 register constraint to x
2870         and add "isa" attribute.
2871         (*movv2sf_internal): Ditto.
2872         (*vec_extractv2si_1): Ditto.
2873         * config/i386/sse.md ("vec_set<mode>_0): Change Y2 and Y4 register
2874         constraints to x and update "isa" attribute.
2875         (*vec_interleave_highv2df): Change Y3 registerconstraint
2876         to x and update "isa" attribute.
2877         (*vec_interleave_lowv2df): Ditto.
2878         (*vec_concatv2df): Change Y2 register constraint to x and
2879         update "isa" attribute.
2880         (sse2_loadld): Ditto.
2881         (*vec_extractv2di_1): Ditto.
2882         (*vec_dupv4si): Ditto.
2883         (*vec_dupv2di): Ditto.
2884         (*vec_concatv4si): Ditto.
2885         (vec_concatv2di): Ditto.
2886         * config/i386/constraints.md (Y2): Remove.
2887         (Y3): Ditto.
2888         (Y4): Ditto.
2889
2890 2011-08-25  Bernd Schmidt  <bernds@codesourcery.com>
2891
2892         * regrename.c (scan_rtx_reg, scan_rtx_address, build_def_use,
2893         dump_def_use_chain): Don't declare.
2894         (mark_conflict, create_new_chain): Move before users.
2895         (regrename_optimize): Move to near end of file.
2896
2897 2011-08-25  Georg-Johann Lay  <avr@gjlay.de>
2898
2899         * config/avr-protos.h (byte_immediate_operand): Remove Prototype.
2900         (secondary_input_reload_class): Remove Prototype.
2901         * config/avr/avr.c (byte_immediate_operand): Remove Function.
2902         * config/avr/avr.md (setmemhi): Use u8_operand.
2903         (strlenhi): Use const0_rtx for comparison.
2904         * config/avr/avr.h (avr_reg_order): Remove Declaration.
2905
2906 2011-08-25  Georg-Johann Lay  <avr@gjlay.de>
2907
2908         * config/avr/avr.c (reg_class_tab): Make local to
2909         avr_regno_reg_class.  Return smallest register class available.
2910
2911 2011-08-25  Georg-Johann Lay  <avr@gjlay.de>
2912
2913         * config/avr/avr.c (STR_PREFIX_P): New Define.
2914         (avr_asm_declare_function_name): Use it.
2915         (avr_asm_named_section): Use it.
2916         (avr_section_type_flags): Use it.
2917
2918 2011-08-25  Bernd Schmidt  <bernds@codesourcery.com>
2919
2920         * doc/md.texi (automata_option): Document collapse-ndfa.
2921         * genautomata.c (COLLAPSE_OPTION): New macro.
2922         (collapse_flag): New static variable.
2923         (struct description): New member normal_decls_num.
2924         (struct automaton): New members advance_ainsn and collapse_ainsn.
2925         (gen_automata_option): Check for COLLAPSE_OPTION.
2926         (collapse_ndfa_insn_decl): New static variable.
2927         (add_collapse_ndfa_insn_decl, special_decl_p): New functions.
2928         (find_arc): If insn is the collapse-ndfa insn, accept any arc we find.
2929         (transform_insn_regexps): Call add_collapse_ndfa_insn_decl if
2930         necessary.  Use normal_decls_num rather than decls_num, remove
2931         test for special decls.
2932         (create_alt_states, form_ainsn_with_same_reservs): Use special_decl_p.
2933         (make_automaton); Likewise.  Use the new advance_cycle_insn member
2934         of struct automaton.
2935         (create_composed_state): Disallow advance-cycle arcs if collapse_flag
2936         is set.
2937         (NDFA_to_DFA): Don't create composed states for the collapse-ndfa
2938         transition.  Create the necessary transitions for it.
2939         (create_ainsns): Return void.  Take an automaton_t argument, and
2940         update its ainsn_list, advance_ainsn and collapse_ainsn members.  All
2941         callers changed.
2942         (COLLAPSE_NDFA_VALUE_NAME): New macro.
2943         (output_tables): Output code to define it.
2944         (output_internal_insn_code_evaluation): Output code to accept
2945         const0_rtx as collapse-ndfa transition.
2946         (output_default_latencies, output_print_reservation_func,
2947         output_print_description): Reorganize loops to use normal_decls_num
2948         as loop bound; remove special case for advance_cycle_insn_decl.
2949         (initiate_automaton_gen): Handle COLLAPSE_OPTION.
2950         (check_automata_insn_issues): Check for collapse_ainsn.
2951         (expand_automate): Allocate sufficient space.  Initialize
2952         normal_decls_num.
2953
2954 2011-08-25  Georg-Johann Lay  <avr@gjlay.de>
2955
2956         * config/avr/avr.md: Fix indentation from r177991.
2957
2958 2011-08-25  Bernd Schmidt  <bernds@codesourcery.com>
2959
2960         * regrename.c (struct du_head): Remove member terminated.
2961         (create_new_chain): Don't initialize it.
2962         (scan_rtx_reg): Don't set or test it, test the open_chains_set
2963         bitmap instead.
2964         (tick, this_tick): New global variables, moved out of
2965         regrename_optimize.
2966         (current_id, open_chains, closed_chains, open_chains_set,
2967         live_in_chains, live_hard_regs): Reorder declarations.
2968         (dump_def_use_chain): Move function earlier in the file.
2969         (rename_chains): New static function, broken out of
2970         regrename_optimize.
2971         (regrename_optimize): Use it.  Remove #if 0'ed code.
2972
2973 2011-08-25  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
2974
2975         * varasm.c: (default_binds_local_p_1): Commentary typo fix.
2976
2977 2011-08-24  H.J. Lu  <hongjiu.lu@intel.com>
2978
2979         PR target/50172
2980         * config/i386/i386.c (ix86_expand_builtin): Convert to Pmode if needed.
2981
2982 2011-08-24  Richard Guenther  <rguenther@suse.de>
2983
2984         * tree-data-ref.c (dr_analyze_indices): Avoid unsharing the
2985         ref in the basic-block case.  Move stripping array-refs
2986         to the place we create an access-function for it.  Remove
2987         bogus stripping down a MEM_REF to its base.
2988
2989 2011-08-24  Richard Guenther  <rguenther@suse.de>
2990
2991         * fold-const.c (fold_comparison): Fold &a < &a + 4 even
2992         with -fno-strict-overflow.
2993
2994 2011-08-24  Richard Guenther  <rguenther@suse.de>
2995
2996         * tree-vectorizer.c (vect_print_dump_info): Avoid the
2997         file and location clutter when dumping to dump files.
2998
2999 2011-08-24  Simon Baldwin  <simonb@google.com>
3000
3001         * gengtype-state.c (write_state): Remove timestamped header line.
3002
3003 2011-08-24  Joseph Myers  <joseph@codesourcery.com>
3004
3005         * Makefile.in (CFLAGS-collect2.o, CFLAGS-c-family/c-opts.o)
3006         (CFLAGS-c-family/c-pch.o, CFLAGS-prefix.o, CFLAGS-version.o)
3007         (CFLAGS-lto-compress.o, CFLAGS-toplev.o, CFLAGS-intl.o)
3008         (CFLAGS-cppbuiltin.o, CFLAGS-cppdefault.o): New.
3009         (collect2.o, c-family/c-cppbuiltin.o, c-family/c-opts.o)
3010         (c-family/c-pch.o, prefix.o, version.o, lto-compress.o, toplev.o)
3011         (intl.o, cppbuiltin.o, cppdefault.o): Remove explicit compilation
3012         rules.
3013         (lto-wrapper$(exeext)): Use $(LINKER) not $(COMPILER).
3014
3015 2011-08-24  Joseph Myers  <joseph@codesourcery.com>
3016
3017         * Makefile.in (ALL_CXXFLAGS): Include $(CFLAGS-$@).
3018
3019 2011-08-24  Richard Guenther  <rguenther@suse.de>
3020
3021         PR tree-optimization/50067
3022         * tree-data-ref.c (dr_analyze_indices): Do not add an access
3023         function for a MEM_REF base that has no evolution in the loop
3024         nest or that is not analyzable.
3025
3026 2011-08-23  Vladimir Makarov  <vmakarov@redhat.com>
3027
3028         * ira.c (ira_init_register_move_cost): Check small subclasses
3029         through ira_reg_class_max_nregs and ira_available_class_regs.
3030
3031 2011-08-23  Uros Bizjak  <ubizjak@gmail.com>
3032
3033         * config/i386/constraints.md (Yp): New register constraint.
3034         * config/i386/i386.md (*addhi_1): Merge with *addhi_1_lea using
3035         Yp register constraint.
3036         (*addqi_1): Merge with *addqi_1_lea using Yp register constraint.
3037         (*ashlhi3_1): Merge with *ashlhi3_1_lea using Yp register constraint.
3038         (*ashlqi3_1): Merge with *ashlqi3_1_lea using Yp register constraint.
3039
3040 2011-08-23  Kirill Yukhin  <kirill.yukhin@intel.com>
3041
3042         * config/i386/sse.md (<s>mul<mode>3_highpart): Update.
3043
3044 2011-08-23  Mark Heffernan  <meheff@google.com>
3045
3046         PR middle-end/38509
3047         * common.opt (Wfree-nonheap-object): New option.
3048         * doc/invoke.texi (Warning options): Document -Wfree-nonheap-object.
3049         * builtins.c (maybe_emit_free_warning): Add OPT_Wfree_nonheap_object
3050         to warning.
3051         (expand_builtin): Make warning conditional.
3052
3053 2011-08-23  Uros Bizjak  <ubizjak@gmail.com>
3054
3055         * config/i386/i386.md (type): Add imulx, ishiftx and rotatex.
3056         (length_immediate): Handle imulx, ishiftx and rotatex.
3057         (imm_disp): Ditto.
3058         (isa): Add bmi2.
3059         (enabled): Handle bmi2.
3060         (*mul<mode><dwi>3): Split from *<u>mul<mode><dwi>3.
3061         (*umul<mode><dwi>3): Ditto.  Add imulx BMI2 alternative.
3062         (*bmi2_umulditi3_1): New insn pattern.
3063         (*bmi2_umulsidi3_1): Ditto.
3064         (*umul<mode><dwi>3 splitter): New splitter to avoid flags dependency.
3065         (*bmi2_ashl<mode>3_1): New insn pattern.
3066         (*ashl<mode>3_1): Add ishiftx BMI2 alternative.
3067         (*ashl<mode>3_1 splitter): New splitter to avoid flags dependency.
3068         (*bmi2_ashlsi3_1_zext): New insn pattern.
3069         (*ashlsi3_1_zext): Add ishiftx BMI2 alternative.
3070         (*ashlsi3_1_zext splitter): New splitter to avoid flags dependency.
3071         (*bmi2_<shiftrt_insn><mode>3_1): New insn pattern.
3072         (*<shiftrt_insn><mode>3_1): Add ishiftx BMI2 alternative.
3073         (*<shiftrt_insn><mode>3_1 splitter): New splitter to avoid
3074         flags dependency.
3075         (*bmi2_<shiftrt_insn>si3_1_zext): New insn pattern.
3076         (*<shiftrt_insn>si3_1_zext): Add ishiftx BMI2 alternative.
3077         (*<shiftrt_insn>si3_1_zext splitter): New splitter to avoid
3078         flags dependency.
3079         (*bmi2_rorx<mode>3_1): New insn pattern.
3080         (*<rotate_insn><mode>3_1): Add rotatex BMI2 alternative.
3081         (*rotate<mode>3_1 splitter): New splitter to avoid flags dependency.
3082         (*rotatert<mode>3_1 splitter): Ditto.
3083         (*bmi2_rorxsi3_1_zext): New insn pattern.
3084         (*<rotate_insn>si3_1_zext): Add rotatex BMI2 alternative.
3085         (*rotatesi3_1_zext splitter): New splitter to avoid flags dependency.
3086         (*rotatertsi3_1_zext splitter): Ditto.
3087
3088 2011-08-23  Kirill Yukhin  <kirill.yukhin@intel.com>
3089
3090         * common/config/i386/i386-common.c (OPTION_MASK_ISA_BMI2_SET): New.
3091         (OPTION_MASK_ISA_BMI2_UNSET): Likewise.
3092         (ix86_handle_option): Handle OPT_mbmi2 case.
3093         * config.gcc (i[34567]86-*-*): Add bmi2intrin.h.
3094         (x86_64-*-*): Likewise.
3095         * config/i386/bmi2intrin.h: New file.
3096         * config/i386/cpuid.h (bit_BMI2): New.
3097         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
3098         BMI2 feature.
3099         * config/i386/i386-c.c (ix86_target_macros_internal):
3100         Conditionally define __BMI2__.
3101         * config/i386/i386.c (ix86_option_override_internal): Define PTA_BMI2.
3102         Handle BMI2 option.
3103         (ix86_valid_target_attribute_inner_p): Handle BMI2 option.
3104         (print_reg): New code.
3105         (ix86_print_operand): Likewise.
3106         (ix86_builtins): Add IX86_BUILTIN_BZHI32, IX86_BUILTIN_BZHI64,
3107         IX86_BUILTIN_PDEP32, IX86_BUILTIN_PDEP64, IX86_BUILTIN_PEXT32,
3108         IX86_BUILTIN_PEXT64.
3109         (bdesc_args): Add IX86_BUILTIN_BZHI32, IX86_BUILTIN_BZHI64,
3110         IX86_BUILTIN_PDEP32, IX86_BUILTIN_PDEP64, IX86_BUILTIN_PEXT32,
3111         IX86_BUILTIN_PEXT64.
3112         * config/i386/i386.h (TARGET_BMI2): New.
3113         * config/i386/i386.md (UNSPEC_PDEP): New.
3114         (UNSPEC_PEXT): Likewise.
3115         (*bmi2_bzhi_<mode>3): Likewise.
3116         (*bmi2_pdep_<mode>3): Likewise.
3117         (*bmi2_pext_<mode>3): Likewise.
3118         * config/i386/i386.opt (mbmi2): New.
3119         * config/i386/x86intrin.h: Include bmi2intrin.h when __BMI2__
3120         is defined.
3121         * doc/extend.texi: Document BMI2 built-in functions.
3122         * doc/invoke.texi: Document -mbmi2.
3123
3124 2011-08-23  Jakub Jelinek  <jakub@redhat.com>
3125
3126         PR middle-end/50161
3127         * simplify-rtx.c (simplify_const_unary_operation): If
3128         op is CONST_INT, don't look at op_mode, but use instead mode.
3129         * optabs.c (add_equal_note): For FFS, CLZ, CTZ,
3130         CLRSB, POPCOUNT, PARITY and BSWAP use operand mode for
3131         operation and TRUNCATE/ZERO_EXTEND if needed.
3132         * doc/rtl.texi (ffs, clrsb, clz, ctz, popcount, parity, bswap):
3133         Document that operand mode must be same as operation mode,
3134         or VOIDmode.
3135         * config/avr/avr.md (paritysi2, *parityqihi2.libgcc,
3136         *paritysihi2.libgcc, popcountsi2, *popcountsi2.libgcc,
3137         *popcountqihi2.libgcc, clzsi2, *clzsihi2.libgcc, ctzsi2,
3138         *ctzsihi2.libgcc, ffssi2, *ffssihi2.libgcc): For unary ops
3139         use the mode of operand for the operation and add truncate
3140         or zero_extend around if needed.
3141         * config/c6x/c6x.md (ctzdi2): Likewise.
3142         * config/bfin/bfin.md (clrsbsi2, signbitssi2): Likewise.
3143
3144 2011-08-12  Michael Matz  <matz@suse.de>
3145
3146         * cfgexpand.c (expand_one_register_var): Use get_pointer_alignment.
3147         (gimple_expand_cfg): Merge alignment info for coalesced pointer
3148         SSA names.
3149
3150 2011-08-23  Richard Guenther  <rguenther@suse.de>
3151
3152         * Makefile.in (tree-data-ref.o): Add tree-affine.h dependency.
3153         * tree-affine.h (aff_comb_cannot_overlap_p): Declare.
3154         * tree-affine.c (aff_comb_cannot_overlap_p): New function, moved
3155         from ...
3156         * tree-ssa-loop-im.c (cannot_overlap_p): ... here.
3157         (mem_refs_may_alias_p): Adjust.
3158         * tree-data-ref.h (dr_may_alias_p): Adjust.
3159         * tree-data-ref.c: Include tree-affine.h.
3160         (dr_analyze_indices): Do nothing for the non-loop case.
3161         (dr_may_alias_p): Distinguish loop and non-loop case.  Disambiguate
3162         more cases in the non-loop case.
3163         * graphite-sese-to-poly.c (write_alias_graph_to_ascii_dimacs): Adjust
3164         calls to dr_may_alias_p.
3165         (write_alias_graph_to_ascii_ecc): Likewise.
3166         (write_alias_graph_to_ascii_dot): Likewise.
3167         (build_alias_set_optimal_p): Likewise.
3168
3169 2011-08-23  Richard Guenther  <rguenther@suse.de>
3170
3171         PR tree-optimization/50162
3172         * tree-vect-stmts.c (vectorizable_call): Fix argument lookup.
3173
3174 2011-08-23  Richard Guenther  <rguenther@suse.de>
3175
3176         * tree-data-ref.c (dr_analyze_indices): Add comments, handle
3177         REALPART_EXPR and IMAGPART_EXPR similar to ARRAY_REFs.
3178         (create_data_ref): Also dump access functions for the created data-ref.
3179
3180 2011-08-22  Uros Bizjak  <ubizjak@gmail.com>
3181             Kirill Yukhin  <kirill.yukhin@intel.com>
3182
3183         PR target/50155
3184         * config/i386/sse.md (VI_AVX2): New.
3185         (<plusminus_insn><mode>3): Use VI_AVX2 mode iterator.
3186         (*<plusminus_insn><mode>3): Ditto.
3187         (<sse2_avx2>_andnot<mode>3): Ditto.
3188         (*andnot<mode>3): Fix order of cond operands.
3189         Add asserts for correct TARGET_xxx.
3190         (*<any_logic:code><mode>3): Ditto.
3191
3192 2011-08-22  Anatoly Sokolov  <aesok@post.ru>
3193
3194         * config/m32c/m32c.h (CLASS_MAX_NREGS): Remove macro.
3195         * config/m32c/m32c-protos.h (m32c_class_max_nregs): Remove.
3196         * config/m32c/m32c.c (m32c_class_max_nregs): Make static. Change
3197         regclass argument type to reg_class_t. Change 'max' and 'v' vars
3198         and return types to unsigned char. Use reg_class_contents instead
3199         of class_contents.
3200         (TARGET_CLASS_MAX_NREGS): Define.
3201
3202 2011-08-22  Bernd Schmidt  <bernds@codesourcery.com>
3203
3204         * config/c6x/c6x.md (indirect_jump_shadow): Tweak representation
3205         to make computed_jump_p return true.
3206
3207 2011-08-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3208
3209         * configure.ac (GCC_PICFLAG_FOR_TARGET): Call it.
3210         (PICFLAG_FOR_TARGET): Substitute.
3211         * aclocal.m4: Regenerate.
3212         * configure: Regenerate.
3213
3214 2011-08-22  Dodji Seketeli  <dodji@redhat.com>
3215
3216         * c-family/c-pch.c (c_common_read_pch): Re-set line table right
3217         after reading in the pch.
3218
3219 2011-08-22  H.J. Lu  <hongjiu.lu@intel.com>
3220
3221         * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Error if __ELF__ isn't defined.
3222         * configure: Regenerated.
3223
3224 2011-08-22  Jakub Jelinek  <jakub@redhat.com>
3225
3226         PR tree-optimization/50133
3227         * tree-vect-stmts.c (vect_finish_stmt_generation): Copy location
3228         from stmt instead of some statement around gsi.
3229
3230         PR middle-end/50141
3231         * expr.c (get_bit_range): Only use DECL_THREAD_LOCAL_P if
3232         innerdecl is a VAR_DECL.
3233
3234 2011-08-22  Kirill Yukhin  <kirill.yukhin@intel.com>
3235
3236         * config/i386/avx2intrin.h: New file.
3237         * config/i386/i386-builtin-types.def (PCINT, PCINT64, PV4SI,
3238         PV8SI, V32QI_FTYPE_V32QI, V32QI_FTYPE_V16QI, V16HI_FTYPE_V16HI,
3239         V16HI_FTYPE_V8HI, V8SI_FTYPE_V8SI, V16HI_FTYPE_V16QI,
3240         V8SI_FTYPE_V16QI, V4DI_FTYPE_V16QI, V8SI_FTYPE_V8HI,
3241         V4DI_FTYPE_V8HI, V4DI_FTYPE_V4SI, V4DI_FTYPE_PV4DI,
3242         V4DI_FTYPE_V2DI, V2DI_FTYPE_PCV2DI_V2DI, V4SI_FTYPE_PCV4SI_V4SI,
3243         V32QI_FTYPE_V16HI_V16HI, V16HI_FTYPE_V8SI_V8SI,
3244         V32QI_FTYPE_V32QI_V32QI, V16HI_FTYPE_V32QI_V32QI,
3245         V16HI_FTYPE_V16HI_V8HI, V16HI_FTYPE_V16HI_V16HI,
3246         V16HI_FTYPE_V16HI_INT, V16HI_FTYPE_V16HI_SI,
3247         V16HI_FTYPE_V16HI_V16HI_INT, V32QI_FTYPE_V32QI_V32QI_INT,
3248         V8SI_FTYPE_V8SI_V4SI, V8SI_FTYPE_V8SI_V8SI,
3249         V8SI_FTYPE_V16HI_V16HI, V8SI_FTYPE_V8SI_INT, V8SI_FTYPE_V8SI_SI,
3250         V8SI_FTYPE_PCV8SI_V8SI, V4DI_FTYPE_V4DI_V4DI,
3251         V4DI_FTYPE_V8SI_V8SI, V4DI_FTYPE_V4DI_V2DI,
3252         V4DI_FTYPE_PCV4DI_V4DI, V4DI_FTYPE_V4DI_INT,
3253         V2DI_FTYPE_V4DI_INT, V4DI_FTYPE_V4DI_V4DI_INT,
3254         V4DI_FTYPE_V4DI_V2DI_INT, VOID_FTYPE_PV2DI_V2DI_V2DI,
3255         VOID_FTYPE_PV4DI_V4DI_V4DI, VOID_FTYPE_PV4SI_V4SI_V4SI,
3256         VOID_FTYPE_PV8SI_V8SI_V8SI,
3257         V2DF_FTYPE_V2DF_PCDOUBLE_V4SI_V2DF_INT,
3258         V4DF_FTYPE_V4DF_PCDOUBLE_V4SI_V4DF_INT,
3259         V2DF_FTYPE_V2DF_PCDOUBLE_V2DI_V2DF_INT,
3260         V4DF_FTYPE_V4DF_PCDOUBLE_V4DI_V4DF_INT,
3261         V4SF_FTYPE_V4SF_PCFLOAT_V4SI_V4SF_INT,
3262         V8SF_FTYPE_V8SF_PCFLOAT_V8SI_V8SF_INT,
3263         V4SF_FTYPE_V4SF_PCFLOAT_V2DI_V4SF_INT,
3264         V4SF_FTYPE_V4SF_PCFLOAT_V4DI_V4SF_INT,
3265         V2DI_FTYPE_V2DI_PCINT64_V4SI_V2DI_INT,
3266         V4DI_FTYPE_V4DI_PCINT64_V4SI_V4DI_INT,
3267         V2DI_FTYPE_V2DI_PCINT64_V2DI_V2DI_INT,
3268         V4DI_FTYPE_V4DI_PCINT64_V4DI_V4DI_INT,
3269         V4SI_FTYPE_V4SI_PCINT_V4SI_V4SI_INT,
3270         V8SI_FTYPE_V8SI_PCINT_V8SI_V8SI_INT,
3271         V4SI_FTYPE_V4SI_PCINT_V2DI_V4SI_INT,
3272         V4SI_FTYPE_V4SI_PCINT_V4DI_V4SI_INT,
3273         V16HI_FTYPE_V16HI_SI_COUNT, V16HI_FTYPE_V16HI_V8HI_COUNT,
3274         V8SI_FTYPE_V8SI_SI_COUNT, V8SI_FTYPE_V8SI_V4SI_COUNT,
3275         V4DI_FTYPE_V4DI_INT_COUNT, V4DI_FTYPE_V4DI_V2DI_COUNT,
3276         V4DI_FTYPE_V4DI_INT_CONVERT,
3277         V4DI_FTYPE_V4DI_V4DI_INT_CONVERT): New.
3278         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MPSADBW256,
3279         IX86_BUILTIN_PABSB256, IX86_BUILTIN_PABSW256,
3280         IX86_BUILTIN_PABSD256, IX86_BUILTIN_PACKSSDW256,
3281         IX86_BUILTIN_PACKSSWB256, IX86_BUILTIN_PACKUSDW256,
3282         IX86_BUILTIN_PACKUSWB256, IX86_BUILTIN_PADDB256,
3283         IX86_BUILTIN_PADDW256, IX86_BUILTIN_PADDD256,
3284         IX86_BUILTIN_PADDQ256, IX86_BUILTIN_PADDSB256,
3285         IX86_BUILTIN_PADDSW256, IX86_BUILTIN_PADDUSB256,
3286         IX86_BUILTIN_PADDUSW256, IX86_BUILTIN_PALIGNR256,
3287         IX86_BUILTIN_AND256I, IX86_BUILTIN_ANDNOT256I,
3288         IX86_BUILTIN_PAVGB256, IX86_BUILTIN_PAVGW256,
3289         IX86_BUILTIN_PBLENDVB256, IX86_BUILTIN_PBLENDVW256,
3290         IX86_BUILTIN_PCMPEQB256, IX86_BUILTIN_PCMPEQW256,
3291         IX86_BUILTIN_PCMPEQD256, IX86_BUILTIN_PCMPEQQ256,
3292         IX86_BUILTIN_PCMPGTB256, IX86_BUILTIN_PCMPGTW256,
3293         IX86_BUILTIN_PCMPGTD256, IX86_BUILTIN_PCMPGTQ256,
3294         IX86_BUILTIN_PHADDW256, IX86_BUILTIN_PHADDD256,
3295         IX86_BUILTIN_PHADDSW256, IX86_BUILTIN_PHSUBW256,
3296         IX86_BUILTIN_PHSUBD256, IX86_BUILTIN_PHSUBSW256,
3297         IX86_BUILTIN_PMADDUBSW256, IX86_BUILTIN_PMADDWD256,
3298         IX86_BUILTIN_PMAXSB256, IX86_BUILTIN_PMAXSW256,
3299         IX86_BUILTIN_PMAXSD256, IX86_BUILTIN_PMAXUB256,
3300         IX86_BUILTIN_PMAXUW256, IX86_BUILTIN_PMAXUD256,
3301         IX86_BUILTIN_PMINSB256, IX86_BUILTIN_PMINSW256,
3302         IX86_BUILTIN_PMINSD256, IX86_BUILTIN_PMINUB256,
3303         IX86_BUILTIN_PMINUW256, IX86_BUILTIN_PMINUD256,
3304         IX86_BUILTIN_PMOVMSKB256, IX86_BUILTIN_PMOVSXBW256,
3305         IX86_BUILTIN_PMOVSXBD256, IX86_BUILTIN_PMOVSXBQ256,
3306         IX86_BUILTIN_PMOVSXWD256, IX86_BUILTIN_PMOVSXWQ256,
3307         IX86_BUILTIN_PMOVSXDQ256, IX86_BUILTIN_PMOVZXBW256,
3308         IX86_BUILTIN_PMOVZXBD256, IX86_BUILTIN_PMOVZXBQ256,
3309         IX86_BUILTIN_PMOVZXWD256, IX86_BUILTIN_PMOVZXWQ256,
3310         IX86_BUILTIN_PMOVZXDQ256, IX86_BUILTIN_PMULDQ256,
3311         IX86_BUILTIN_PMULHRSW256, IX86_BUILTIN_PMULHUW256,
3312         IX86_BUILTIN_PMULHW256, IX86_BUILTIN_PMULLW256,
3313         IX86_BUILTIN_PMULLD256, IX86_BUILTIN_PMULUDQ256,
3314         IX86_BUILTIN_POR256, IX86_BUILTIN_PSADBW256,
3315         IX86_BUILTIN_PSHUFB256, IX86_BUILTIN_PSHUFD256,
3316         IX86_BUILTIN_PSHUFHW256, IX86_BUILTIN_PSHUFLW256,
3317         IX86_BUILTIN_PSIGNB256, IX86_BUILTIN_PSIGNW256,
3318         IX86_BUILTIN_PSIGND256, IX86_BUILTIN_PSLLDQI256,
3319         IX86_BUILTIN_PSLLWI256, IX86_BUILTIN_PSLLW256,
3320         IX86_BUILTIN_PSLLDI256, IX86_BUILTIN_PSLLD256,
3321         IX86_BUILTIN_PSLLQI256, IX86_BUILTIN_PSLLQ256,
3322         IX86_BUILTIN_PSRAWI256, IX86_BUILTIN_PSRAW256,
3323         IX86_BUILTIN_PSRADI256, IX86_BUILTIN_PSRAD256,
3324         IX86_BUILTIN_PSRLDQI256, IX86_BUILTIN_PSRLWI256,
3325         IX86_BUILTIN_PSRLW256, IX86_BUILTIN_PSRLDI256,
3326         IX86_BUILTIN_PSRLD256, IX86_BUILTIN_PSRLQI256,
3327         IX86_BUILTIN_PSRLQ256, IX86_BUILTIN_PSUBB256,
3328         IX86_BUILTIN_PSUBW256, IX86_BUILTIN_PSUBD256,
3329         IX86_BUILTIN_PSUBQ256, IX86_BUILTIN_PSUBSB256,
3330         IX86_BUILTIN_PSUBSW256, IX86_BUILTIN_PSUBUSB256,
3331         IX86_BUILTIN_PSUBUSW256, IX86_BUILTIN_PUNPCKHBW256,
3332         IX86_BUILTIN_PUNPCKHWD256, IX86_BUILTIN_PUNPCKHDQ256,
3333         IX86_BUILTIN_PUNPCKHQDQ256, IX86_BUILTIN_PUNPCKLBW256,
3334         IX86_BUILTIN_PUNPCKLWD256, IX86_BUILTIN_PUNPCKLDQ256,
3335         IX86_BUILTIN_PUNPCKLQDQ256, IX86_BUILTIN_PXOR256,
3336         IX86_BUILTIN_MOVNTDQA256, IX86_BUILTIN_VBROADCASTSS_PS,
3337         IX86_BUILTIN_VBROADCASTSS_PS256,
3338         IX86_BUILTIN_VBROADCASTSD_PD256,
3339         IX86_BUILTIN_VBROADCASTSI256, IX86_BUILTIN_PBLENDD256,
3340         IX86_BUILTIN_PBLENDD128, IX86_BUILTIN_PBROADCASTB256,
3341         IX86_BUILTIN_PBROADCASTW256, IX86_BUILTIN_PBROADCASTD256,
3342         IX86_BUILTIN_PBROADCASTQ256, IX86_BUILTIN_PBROADCASTB128,
3343         IX86_BUILTIN_PBROADCASTW128, IX86_BUILTIN_PBROADCASTD128,
3344         IX86_BUILTIN_PBROADCASTQ128, IX86_BUILTIN_VPERMVARSI256,
3345         IX86_BUILTIN_VPERMDF256, IX86_BUILTIN_VPERMVARSF256,
3346         IX86_BUILTIN_VPERMDI256, IX86_BUILTIN_VPERMTI256,
3347         IX86_BUILTIN_VEXTRACT128I256, IX86_BUILTIN_VINSERT128I256,
3348         IX86_BUILTIN_MASKLOADD, IX86_BUILTIN_MASKLOADQ,
3349         IX86_BUILTIN_MASKLOADD256, IX86_BUILTIN_MASKLOADQ256,
3350         IX86_BUILTIN_MASKSTORED, IX86_BUILTIN_MASKSTOREQ,
3351         IX86_BUILTIN_MASKSTORED256, IX86_BUILTIN_MASKSTOREQ256,
3352         IX86_BUILTIN_PSLLVV4DI, IX86_BUILTIN_PSLLVV2DI,
3353         IX86_BUILTIN_PSLLVV8SI, IX86_BUILTIN_PSLLVV4SI,
3354         IX86_BUILTIN_PSRAVV8SI, IX86_BUILTIN_PSRAVV4SI,
3355         IX86_BUILTIN_PSRLVV4DI, IX86_BUILTIN_PSRLVV2DI,
3356         IX86_BUILTIN_PSRLVV8SI, IX86_BUILTIN_PSRLVV4SI,
3357         IX86_BUILTIN_GATHERSIV2DF, IX86_BUILTIN_GATHERSIV4DF,
3358         IX86_BUILTIN_GATHERDIV2DF, IX86_BUILTIN_GATHERDIV4DF,
3359         IX86_BUILTIN_GATHERSIV4SF, IX86_BUILTIN_GATHERSIV8SF,
3360         IX86_BUILTIN_GATHERDIV4SF, IX86_BUILTIN_GATHERDIV8SF,
3361         IX86_BUILTIN_GATHERSIV2DI, IX86_BUILTIN_GATHERSIV4DI,
3362         IX86_BUILTIN_GATHERDIV2DI, IX86_BUILTIN_GATHERDIV4DI,
3363         IX86_BUILTIN_GATHERSIV4SI, IX86_BUILTIN_GATHERSIV8SI,
3364         IX86_BUILTIN_GATHERDIV4SI, IX86_BUILTIN_GATHERDIV8SI.
3365         (bdesc_special_args): Add IX86_BUILTIN_MOVNTDQA256,
3366         IX86_BUILTIN_MASKLOADD, IX86_BUILTIN_MASKLOADQ,
3367         IX86_BUILTIN_MASKLOADD256, IX86_BUILTIN_MASKLOADQ256,
3368         IX86_BUILTIN_MASKSTORED, IX86_BUILTIN_MASKSTOREQ,
3369         IX86_BUILTIN_MASKSTORED256, IX86_BUILTIN_MASKSTOREQ256.
3370         (bdesc_args): Add  IX86_BUILTIN_MPSADBW256,
3371         IX86_BUILTIN_PABSB256, IX86_BUILTIN_PABSW256,
3372         IX86_BUILTIN_PABSD256, IX86_BUILTIN_PACKSSDW256,
3373         IX86_BUILTIN_PACKSSWB256, IX86_BUILTIN_PACKUSDW256,
3374         IX86_BUILTIN_PACKUSWB256, IX86_BUILTIN_PADDB256,
3375         IX86_BUILTIN_PADDW256, IX86_BUILTIN_PADDD256,
3376         IX86_BUILTIN_PADDQ256, IX86_BUILTIN_PADDSB256,
3377         IX86_BUILTIN_PADDSW256, IX86_BUILTIN_PADDUSB256,
3378         IX86_BUILTIN_PADDUSW256, IX86_BUILTIN_PALIGNR256,
3379         IX86_BUILTIN_AND256I, IX86_BUILTIN_ANDNOT256I,
3380         IX86_BUILTIN_PAVGB256, IX86_BUILTIN_PAVGW256,
3381         IX86_BUILTIN_PBLENDVB256, IX86_BUILTIN_PBLENDVW256,
3382         IX86_BUILTIN_PCMPEQB256, IX86_BUILTIN_PCMPEQW256,
3383         IX86_BUILTIN_PCMPEQD256, IX86_BUILTIN_PCMPEQQ256,
3384         IX86_BUILTIN_PCMPGTB256, IX86_BUILTIN_PCMPGTW256,
3385         IX86_BUILTIN_PCMPGTD256, IX86_BUILTIN_PCMPGTQ256,
3386         IX86_BUILTIN_PHADDW256, IX86_BUILTIN_PHADDD256,
3387         IX86_BUILTIN_PHADDSW256, IX86_BUILTIN_PHSUBW256,
3388         IX86_BUILTIN_PHSUBD256, IX86_BUILTIN_PHSUBSW256,
3389         IX86_BUILTIN_PMADDUBSW256, IX86_BUILTIN_PMADDWD256,
3390         IX86_BUILTIN_PMAXSB256, IX86_BUILTIN_PMAXSW256,
3391         IX86_BUILTIN_PMAXSD256, IX86_BUILTIN_PMAXUB256,
3392         IX86_BUILTIN_PMAXUW256, IX86_BUILTIN_PMAXUD256,
3393         IX86_BUILTIN_PMINSB256, IX86_BUILTIN_PMINSW256,
3394         IX86_BUILTIN_PMINSD256, IX86_BUILTIN_PMINUB256,
3395         IX86_BUILTIN_PMINUW256, IX86_BUILTIN_PMINUD256,
3396         IX86_BUILTIN_PMOVMSKB256, IX86_BUILTIN_PMOVSXBW256,
3397         IX86_BUILTIN_PMOVSXBD256, IX86_BUILTIN_PMOVSXBQ256,
3398         IX86_BUILTIN_PMOVSXWD256, IX86_BUILTIN_PMOVSXWQ256,
3399         IX86_BUILTIN_PMOVSXDQ256, IX86_BUILTIN_PMOVZXBW256,
3400         IX86_BUILTIN_PMOVZXBD256, IX86_BUILTIN_PMOVZXBQ256,
3401         IX86_BUILTIN_PMOVZXWD256, IX86_BUILTIN_PMOVZXWQ256,
3402         IX86_BUILTIN_PMOVZXDQ256, IX86_BUILTIN_PMULDQ256,
3403         IX86_BUILTIN_PMULHRSW256, IX86_BUILTIN_PMULHUW256,
3404         IX86_BUILTIN_PMULHW256, IX86_BUILTIN_PMULLW256,
3405         IX86_BUILTIN_PMULLD256, IX86_BUILTIN_PMULUDQ256,
3406         IX86_BUILTIN_POR256, IX86_BUILTIN_PSADBW256,
3407         IX86_BUILTIN_PSHUFB256, IX86_BUILTIN_PSHUFD256,
3408         IX86_BUILTIN_PSHUFHW256, IX86_BUILTIN_PSHUFLW256,
3409         IX86_BUILTIN_PSIGNB256, IX86_BUILTIN_PSIGNW256,
3410         IX86_BUILTIN_PSIGND256, IX86_BUILTIN_PSLLDQI256,
3411        &n