OSDN Git Service

df8646210d899771d1c10dc3597e21ebbaa0510d
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
2
3         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
4         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
5         * basic-block.h (struct control_flow_graph): Added x_dom_computed
6         and x_n_bbs_in_dom_tree fields.
7
8 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
9
10         PR tree-optimization/32087
11         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
12         Do not call scale_bbs_frequencies_int with prob of zero.
13
14 2007-07-26  Julian Brown  <julian@codesourcery.com>
15
16         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
17         (neon_element_bits): Add prototypes.
18         * config/arm/arm.c (bounds_check, neon_lane_bounds)
19         (neon_const_bounds, neon_element_bits): New functions.
20         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
21         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
22         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
23         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
24         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
25         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
26         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
27         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
28         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
29         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
30         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
31         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
32         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
33
34 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
35
36         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
37         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
38
39 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
40             Julian Brown  <julian@codesourcery.com>
41
42         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
43         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
44         * config/arm/cortex-a8.md: New.
45         * config/arm/cortex-a8-neon.md: New.
46         * config/arm/neon-schedgen.ml: New.
47         * config/arm/neon.md (vqh_mnem): New.
48         (neon_type): New.
49         (Is_float_mode): New.
50         (Scalar_mul_8_16): New.
51         (Is_d_reg): New.
52         (V_mode_nunits): New.
53         (All instruction patterns): Annotate with neon_type attribute
54         values.
55         * config/arm/arm.md: Include cortex-a8.md.
56         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
57         values.
58         Annotate instruction patterns accordingly.
59         (generic_sched): Do not use generic scheduling for Cortex-A8.
60         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
61
62 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
63
64         * fold-const.c (fold_read_from_constant_string): Use
65         build_int_cst_type.
66         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
67
68 2007-07-26  Nick Clifton  <nickc@redhat.com>
69
70         * tree-ssa-operands.h: Change copyright header to refer to version
71         3 of the GNU General Public License and to point readers at the
72         COPYING3 file and the FSF's license web page.
73         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
74         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
75         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
76         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
77         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
78         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
79         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
80         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
81         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
82         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
83         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
84         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
85         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
86         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
87         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
88         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
89         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
90         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
91         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
92         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
93         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
94         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
95         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
96         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
97         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
98         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
99         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
100         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
101         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
102         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
103         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
104         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
105         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
106         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
107         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
108         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
109         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
110         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
111         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
112         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
113         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
114         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
115         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
116         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
117         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
118         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
119         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
120         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
121         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
122         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
123         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
124         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
125         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
126         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
127         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
128         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
129         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
130         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
131         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
132         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
133         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
134         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
135         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
136         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
137         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
138         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
139         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
140         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
141         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
142         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
143         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
144         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
145         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
146         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
147         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
148         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
149         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
150         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
151         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
152         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
153         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
154         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
155         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
156         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
157         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
158         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
159         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
160         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
161         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
162         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
163         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
164         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
165         vecprim.h, basic-block.h, tree-ssa-structalias.c,
166         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
167         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
168         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
169         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
170         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
171         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
172         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
173         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
174         convert.c, convert.h, langhooks-def.h, reload1.c,
175         tree-ssa-operands.c: Likewise.
176
177 2007-07-26  Jan Hubicka  <jh@suse.cz>
178
179         * tree-ssa-live.c: Include debug.h and flags.h.
180         (mark_scope_block_unused): New function.
181         (remove_unused_scope_block_p): New function.
182         (remove_unused_locals): Remove unused blocks too.
183
184 2007-07-25  Ian Lance Taylor  <iant@google.com>
185
186         * combine.c (combine_max_regno): Remove.  Remove all uses.
187         (struct reg_stat_struct): Rename from struct reg_stat.
188         (reg_stat_type): Define, and declare VECs.
189         (reg_stat): Change from pointer to VEC.  Change all uses.
190         (combine_split_insns): New static function.
191         (try_combine, find_split_point): Call it instead of split_insns.
192
193 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
194
195         * cfghooks.c (split_block): Fix the information about loop latch.
196
197 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
198
199         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
200
201 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
202
203         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
204         Scan the new edge for loop exit info.
205
206 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
207
208         * config/darwin.c: Include debug.h.
209
210 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
211
212         PR target/32218
213         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
214
215 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
216
217         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
218         (HARD_REGNO_MODE_OK): Ditto.
219         (MODES_TIEABLE_P): Ditto.
220         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
221         (CLASS_MAX_NREGS): Ditto.
222         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
223         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
224         (divdf3_internal_thr): Removed.
225         * config/ia64/div.md: New file.
226         * config/ia64/constraints.md: Add H constraint.
227
228 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
229
230         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
231         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
232         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
233         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
234         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
235         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
236         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
237         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
238         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
239         dump_sbitmap_file, debug_sbitmap, popcount_table,
240         sbitmap_popcount): Constify.
241         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
242         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
243         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
244         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
245         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
246         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
247         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
248         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
249         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
250         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
251         sbitmap_popcount, sbitmap_verify_popcount): Constify.
252
253 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
254
255         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
256         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
257         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
258         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
259         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
260         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
261         bitmap_intersect_p, bitmap_intersect_compl_p,
262         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
263         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
264         Constify.
265         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
266         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
267         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
268         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
269         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
270         debug_bitmap, debug_bitmap_file, bitmap_print,
271         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
272         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
273
274 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
275
276         * config/darwin.c (darwin_override_options): Additional fix for
277         debug info formats that don't support var tracking.
278
279 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
280
281         * cselib.c (entry_and_rtx_equal_p): Constify.
282         * gengtype.c (output_mangled_typename, write_types, write_local):
283         Likewise.
284         * gengtype.h (const_type_p): New.
285         * see.c (eq_descriptor_extension, hash_descriptor_extension):
286         Constify.
287         * tlink.c (scan_linker_output): De-constify.
288         * tree-ssa-loop-im.c (memref_eq): Constify.
289         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
290         (shared_bitmap_hash, shared_bitmap_eq): Constify.
291
292 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
293
294         * c-common.c (fname_as_string, c_type_hash): Constify.
295         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
296         * cgraph.c (edge_hash, edge_eq): Likewise.
297         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
298         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
299         reg_attrs_htab_eq): Likewise.
300         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
301         Likewise.
302         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
303         const_decl_t, const_state_t, const_automata_list_el_t): New.
304         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
305         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
306         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
307         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
308         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
309         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
310         compare_max_occ_cycle_nums, out_state_arcs_num,
311         compare_transition_els_num, units_cmp, state_reservs_cmp):
312         Constify.
313         * genmodes.c (cmp_modes): Likewise.
314         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
315         * gimplify.c (compare_case_labels): Likewise.
316         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
317         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
318         * matrix-reorg.c (mtt_info_hash): Likewise.
319         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
320         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
321         (htab_hash_bucket, htab_hash_elem): Constify.
322         * tree-browser.c (TB_parent_eq): Likewise.
323         * tree-scalar-evolution.c (hash_scev_info): Likewise.
324         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
325         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
326         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
327         Constify.
328         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
329         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
330         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
331         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
332         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
333         New.
334         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
335         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
336         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
337         * tree-ssa-threadupdate.c (redirection_data_hash,
338         redirection_data_eq): Likewise. 
339         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
340         * tree-ssa.c (var_ann_eq): Likewise.
341         * tree-vrp.c (compare_case_labels): Likewise.
342         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
343         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
344         tree_not_check_failed, tree_class_check_failed,
345         tree_range_check_failed, tree_not_class_check_failed,
346         omp_clause_check_failed, omp_clause_range_check_failed,
347         tree_contains_struct_check_failed, tree_operand_check_failed):
348         Likewise. 
349         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
350         tree_not_check_failed, tree_class_check_failed,
351         tree_range_check_failed, tree_not_class_check_failed,
352         tree_operand_check_failed, omp_clause_operand_check_failed,
353         tree_operand_length): Likewise. 
354         * var-tracking.c (const_variable): New.
355         (variable_htab_hash, variable_htab_eq): Constify.
356         * varasm.c (const_desc_hash): Likewise.
357
358 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
359
360         * expr.c (handled_component_p): Constify.
361         * fold-const.c (fit_double_type): Likewise.
362         * real.h (real_value_from_int_cst): Likewise.
363         * tree-flow-inline.h (gimple_in_ssa_p,
364         gimple_aliases_computed_p, gimple_addressable_vars,
365         gimple_call_clobbered_vars, gimple_referenced_vars,
366         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
367         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
368         may_aliases, end_readonly_imm_use_p, has_zero_uses,
369         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
370         is_label_stmt, is_global_var, phi_ssa_name_p,
371         factoring_name_p, is_call_clobbered, tree_common_ann,
372         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
373         unmodifiable_var_p, array_ref_contains_indirect_ref,
374         ref_contains_array_ref, lookup_subvars_for_var,
375         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
376         gimple_mem_ref_stats): Likewise.
377         * tree-flow.h (tree_common_ann, var_ann, function_ann,
378         may_aliases, is_exec_stmt, is_label_stmt,
379         ref_contains_array_ref, array_ref_contains_indirect_ref,
380         var_can_have_subvars, overlap_subvar, is_call_clobbered,
381         unmodifiable_var_p): Likewise.
382         * tree-gimple.c (is_gimple_min_invariant): Likewise.
383         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
384         * tree.c (type_hash_list, attribute_hash_list, tree_size,
385         cst_and_fits_in_hwi, real_value_from_int_cst,
386         build_real_from_int_cst, integer_zerop, integer_onep,
387         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
388         tree_floor_log2, real_zerop, real_onep, real_twop,
389         real_minus_onep, really_constant_p, purpose_member, chain_member,
390         list_length, fields_length, int_size_in_bytes, bit_position,
391         int_bit_position, byte_position, int_byte_position, expr_align,
392         array_type_nelts, tree_node_structure,
393         type_contains_placeholder_1, iterative_hash_pointer,
394         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
395         tree_map_base_eq, type_hash_list, type_hash_eq,
396         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
397         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
398         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
399         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
400         int_fits_type_p, get_containing_scope, decl_function_context,
401         decl_type_context, omp_clause_operand_check_failed,
402         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
403         * tree.h (omp_clause_operand_check_failed, tree_size,
404         build_real_from_int_cst, array_type_nelts, purpose_member,
405         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
406         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
407         is_attribute_p, check_qualified_type, expr_align,
408         int_size_in_bytes, bit_position, int_bit_position, byte_position,
409         int_byte_position, list_length, fields_length, initializer_zerop,
410         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
411         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
412         tree_node_structure, handled_component_p, get_containing_scope,
413         decl_function_context, decl_type_context, real_zerop,
414         type_num_arguments, fit_double_type, really_constant_p,
415         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
416         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
417         real_twop, real_minus_onep, int_cst_value): Likewise.
418
419 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
420
421         * cfglayout.c (insn_scope, insn_line): Constify.
422         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
423         const_double_htab_hash, const_double_htab_eq,
424         mem_attrs_htab_hash): Likewise.
425         * loop-iv.c (biv_eq): Likewise.
426         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
427         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
428         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
429         Likewise. 
430         * rtl-error.c (location_for_asm, diagnostic_for_asm,
431         error_for_asm, warning_for_asm, _fatal_insn,
432         _fatal_insn_not_found): Likewise. 
433         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
434         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
435         rtl_check_failed_type2, rtl_check_failed_code1,
436         rtl_check_failed_code2, rtl_check_failed_code_mode,
437         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
438         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
439         rtl_check_failed_type2, rtl_check_failed_code1,
440         rtl_check_failed_code2, rtl_check_failed_code_mode,
441         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
442         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
443         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
444         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
445         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
446         rtx_unstable_p, get_integer_term, get_related_value,
447         offset_within_block_p, reg_mentioned_p, count_occurrences,
448         reg_referenced_p, reg_used_between_p, no_labels_between_p,
449         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
450         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
451         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
452         find_constant_src, find_reg_fusage, find_regno_fusage,
453         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
454         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
455         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
456         computed_jump_p, auto_inc_p, in_expr_list_p,
457         remove_node_from_expr_list, loc_mentioned_in_p,
458         label_is_jump_target_p, reversed_comparison_code_parts,
459         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
460         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
461         print_inline_rtx): Likewise.
462         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
463         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
464         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
465         get_integer_term, get_related_value, offset_within_block_p,
466         count_occurrences, reg_mentioned_p, no_labels_between_p,
467         reg_used_between_p, reg_referenced_p, single_set_2,
468         multiple_sets, set_noop_p, refers_to_regno_p,
469         reg_overlap_mentioned_p, dead_or_set_p,
470         covers_regno_no_parallel_p, covers_regno_p,
471         dead_or_set_regno_p, find_reg_note, find_regno_note,
472         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
473         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
474         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
475         side_effects_p, may_trap_p_1, may_trap_p,
476         may_trap_after_code_motion_p, may_trap_or_fault_p,
477         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
478         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
479         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
480         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
481         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
482         Likewise. 
483         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
484         warning_for_asm): Likewise.
485         * tree.h (print_rtl): Likewise.
486         * varasm.c (get_pool_mode): Likewise.
487
488 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
489
490         * c-lex.c (c_lex_with_flags, lex_string): Constify.
491         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
492         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
493         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
494         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
495         * ddg.c (compare_sccs): Likewise.
496         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
497         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
498         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
499         decimal_do_fix_trunc, decimal_real_to_integer,
500         decimal_real_to_integer2, decimal_real_maxval): Likewise.
501         * dse.c (const_group_info_t): New.
502         (invariant_group_base_eq, invariant_group_base_hash): Constify.
503         * dwarf2out.c (const_dw_die_ref): New.
504         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
505         * tree-browser.c (TB_parent_eq): Likewise.
506         * unwind-dw2-fde.c (__register_frame_info_bases,
507         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
508         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
509         Likewise.
510         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
511         * unwind-dw2.c (uw_frame_state_for): Likewise.
512         * value-prof.c (histogram_hash, histogram_eq): Likewise.
513         * value-prof.h (const_histogram_value): New.
514
515 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
516
517         * config/mips/mips.c (machine_function): Add
518         initialized_mips16_gp_pseudo_p.
519         (mips16_gp_pseudo_reg): Do not emit the initialization of
520         mips16_gp_pseudo_rtx when being called from the gimple cost-
521         calculation routines; emit it on the first use outside those
522         routines.
523
524 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
525
526         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
527         New.
528         
529         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
530         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
531         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
532         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
533         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
534         Preserve const-ness of parameters through use of __typeof(),
535         also constify and tidy.
536         
537         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
538         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
539         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
540         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
541         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
542         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
543         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
544         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
545         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
546
547 2007-07-25  Julian Brown  <julian@codesourcery.com>
548             Mark Shinwell  <shinwell@codesourcery.com>
549
550         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
551         (alpha_mangle_type): This.
552         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
553         (TARGET_MANGLE_TYPE): Define this instead.
554         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
555         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
556         (arm_init_neon_builtins): Fix comment.
557         (arm_mangle_map_entry): New.
558         (arm_mangle_map): New.
559         (arm_mangle_type): New.
560         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
561         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
562         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
563         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
564         (TARGET_MANGLE_TYPE): Define this instead.
565         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
566         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
567         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
568         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
569         (TARGET_MANGLE_TYPE): Define this instead.
570         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
571         to...
572         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
573         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
574         (TARGET_MANGLE_TYPE): Define this instead.
575         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
576         (s390_mangle_type): This.
577         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
578         (TARGET_MANGLE_TYPE): Define this instead.
579         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
580         (sparc_mangle_type): This.
581         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
582         (TARGET_MANGLE_TYPE): Define this instead.
583         * cp/mangle.c (write_type): Call mangle_type target hook on all
584         types before mangling.  Use original type, not main variant, as
585         argument.
586         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
587         (TARGET_MANGLE_TYPE): This.
588         * target.h (gcc_target): Rename mangle_fundamental_type to
589         mangle_type.
590         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
591         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
592
593 2007-07-25  Julian Brown  <julian@codesourcery.com>
594             Paul Brook  <paul@codesourcery.com>
595             Joseph Myers  <joseph@codesourcery.com>
596             Mark Shinwell  <shinwell@codesourcery.com>
597
598         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
599         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
600         (with_fpu): Allow --with-fpu=neon.
601         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
602         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
603         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
604         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
605         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
606         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
607         (neon_emit_pair_result_insn, neon_disambiguate_copy)
608         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
609         (output_move_neon): Add prototypes.
610         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
611         (all_fpus): Add FPUTYPE_NEON.
612         (fp_model_for_fpu): Add NEON field.
613         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
614         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
615         in registers.
616         (arm_legitimate_address_p): Don't support fancy addressing for NEON
617         structure moves.
618         (thumb2_legitimate_address_p): Likewise.
619         (neon_valid_immediate): Recognize and prepare constants suitable for
620         NEON instructions.
621         (neon_immediate_valid_for_move): New function. Recognize and prepare
622         immediates for NEON move instructions.
623         (neon_immediate_valid_for_logic): New function. Recognize and
624         prepare immediates for NEON logic instructions.
625         (neon_output_logic_immediate): New function. Create asm string
626         suitable for outputting immediate logic instructions.
627         (neon_pairwise_reduce): New function. Implement reduction using
628         pairwise operations.
629         (neon_expand_vector_init): New function. Expand a (possibly
630         non-constant) vector initialization.
631         (neon_vector_mem_operand): New function. Memory operands supported
632         for quad-word loads/stores to/from ARM or NEON registers. Don't
633         allow base+offset addressing for core regs.
634         (neon_struct_mem_operand): New function. Valid mems for NEON
635         structure moves.
636         (coproc_secondary_reload_class): Enable NEON registers to be loaded
637         from neon_vector_mem_operand addresses without a secondary register.
638         (add_minipool_forward_ref): Handle >8-byte minipool entries.
639         (add_minipool_backward_ref): Likewise.
640         (dump_minipool): Likewise.
641         (push_minipool_fix): Likewise.
642         (output_move_quad): New function. Output quad-word moves, loads and
643         stores using ARM registers.
644         (output_move_vfp): Add support for vectors in VFP (NEON) D
645         registers.
646         (output_move_neon): Output a NEON load/store to/from a quadword
647         register.
648         (arm_print_operand): Implement new codes:
649         - 'c' for unadorned integers (without a # sign).
650         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
651         mode.
652         - 'e', 'f' for the low and high D parts of a NEON Q register.
653         - 'q' outputs a NEON Q register.
654         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
655         - 'T' prints NEON opcode features from a coded bitmask.
656         - 'F' is similar to T, but signed/unsigned codes both print as
657         'i'.
658         - 't' is similar to T, but 'u' is printed instead of 'p'.
659         - 'O' prints 'r' if NEON instruction should perform rounding (as
660         specified by bitmask), else prints nothing.
661         - '#' is a punctuation character to stop operand numbers from
662         running together with following digits in the assembler
663         strings for instructions (when using mode attributes).
664         (arm_assemble_integer): Handle extra NEON vector modes. Permute
665         constant vectors in big-endian mode, where necessary.
666         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
667         Handle EI, OI, CI, XI modes.
668         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
669         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
670         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
671         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
672         (neon_builtin_type_bits): Add enumeration, one bit for each vector
673         type.
674         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
675         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
676         to turn v8qi, etc. into bits defined above.
677         (neon_itype): New enumeration. Classifications of NEON builtins.
678         (neon_builtin_datum): Define struct. Contains information about
679         a single builtin (with multiple modes).
680         (CF): Define helper macro for...
681         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
682         modes.
683         (neon_builtin_data): New array. Define information about builtins
684         for use during initialization/expansion.
685         (arm_init_neon_builtins): New function.
686         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
687         true.
688         (neon_builtin_compare): New function.
689         (locate_neon_builtin_icode): New function. Find an insn code for a
690         builtin given a function code for that builtin. Also return type of
691         builtin (NEON_BINOP, NEON_UNOP etc.).
692         (builtin_arg): New enumeration. Types of arguments for builtins.
693         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
694         Takes a variable argument list of builtin_arg types, terminated by
695         NEON_ARG_STOP.
696         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
697         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
698         (neon_emit_pair_result_insn): New function. Support returning pairs
699         of vectors via a pointer.
700         (neon_disambiguate_copy): New function. Set up operands for a
701         multi-word copy such that registers do not get clobbered.
702         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
703         ARM_BUILTIN_NEON_BASE.
704         (arm_file_start): Set float-abi attribute for NEON.
705         (arm_vector_mode_supported_p): Enable NEON vector modes.
706         (arm_mangle_map_entry): New.
707         (arm_mangle_map): New.
708         (arm_mangle_vector_type): New.
709         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
710         when appropriate.
711         (TARGET_NEON): New macro. Target supports NEON.
712         (fputype): Add FPUTYPE_NEON.
713         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
714         for vectorization based on command-line arg.
715         (NEON_REGNO_OK_FOR_NREGS): Define.
716         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
717         (VALID_NEON_STRUCT_MODE): Define.
718         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
719         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
720         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
721         (consttable_16): Add pattern for outputting 16-byte minipool
722         entries.
723         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
724         vec-common.md).
725         (vec-common.md, neon.md): Include md files.
726         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
727         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
728         (memory_constraint "Ut", "Un", "Us"): Define.
729         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
730         (MMX_char): New mode attribute.
731         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
732         (*add<mode>3_iwmmxt): New insn pattern.
733         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
734         (*sub<mode>3_iwmmxt): New insn pattern.
735         (mulv4hi3): Rename to...
736         (*mulv4hi3_iwmmxt): This.
737         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
738         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
739         (uminv4hi3, uminv2si3): Remove. Replace with...
740         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
741         (*umin<mode>3_iwmmxt): These.
742         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
743         (ashr<mode>3_iwmmxt): This new pattern.
744         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
745         (lshr<mode>3_iwmmxt): This new pattern.
746         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
747         (ashl<mode>3_iwmmxt): This new pattern.
748         * config/arm/neon-docgen.ml: New file. Generate documentation for
749         intrinsics.
750         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
751         * config/arm/arm_neon.h: New (autogenerated).
752         * config/arm/neon-testgen.ml: New file. Generate NEON tests
753         automatically.
754         * config/arm/neon.md: New file. Define NEON instructions.
755         * config/arm/neon.ml: New file. Abstract description of NEON
756         instructions, used to generate arm_neon.h header, documentation and
757         tests.
758         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
759         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
760         support.
761         * doc/extend.texi (ARM Built-in Functions): Rename and remove
762         extraneous comma.
763         (ARM NEON Intrinsics): New subsection.
764         * doc/arm-neon-intrinsics.texi: New (autogenerated).
765
766 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
767
768         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
769         prototype.
770
771 2007-07-24  Jan Hubicka  <jh@suse.cz>
772
773         * regclass.c (move_table): New type.
774         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
775         (init_move_cost): Break out from ...
776         (init_reg_sets_1): ... here; simplify computation of
777         have_regs-of_mode and contains_reg_of_mode.
778         (record_reg_classes): Unswitch internal loops.
779         (copy_cost): Trigger lazy initialization of move cost
780         (record_address_regs): Likewise.
781
782 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
783
784         * config/darwin.c (darwin_override_options): Don't force on
785         flag_var_tracking_uninit when no debug info is requested.
786
787 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
788
789         * cfgloop.c (init_loops_structure): New function.
790         (flow_loops_find): Create root of the loop tree unconditionally.
791
792 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
793
794         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
795
796 2007-07-24  Jan Hubicka  <jh@suse.cz>
797
798         * caller-save.c: Include ggc.h, gt-caller-save.h
799         (reg_save_code, reg_restore_code): Rename to ...
800         (cached_reg_save_code, cached_reg_restore_code): ... those.
801         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
802         (reg_save_code, reg_restore_code): New functions.
803         (init_caller_save): Do not intialize
804         reg_save_code/reg_restore_code tables.
805         * Makeifle.in: (gt-caller-save.h): New.
806
807 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
808
809         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
810         with the mode of the original operand instead of
811         integer_one_node.
812
813 2007-07-23  Jan Hubicka  <jH@suse.cz>
814
815         * i386.c (ix86_secondary_memory_needed): Break out to...
816         (inline_secondary_memory_needed): ... here.
817         (ix86_memory_move_cost): Break out to ...
818         (inline_memory_move_cost): ... here; add support for IN value of 2 for
819         maximum of input and output; fix handling of Q_REGS on 64bit.
820         (ix86_secondary_memory_needed): Microoptimize.
821
822 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
823
824         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
825         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
826         stmts_from_loop, known_dependences_p, build_rdg): New.
827         * tree-data-ref.h: Depends on graphds.h.
828         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
829         (build_rdg): Declared.
830         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
831
832 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
833
834         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
835         ccp_min_invariant.
836
837 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
838             Jakub Jelinek  <jakub@redhat.com>
839
840         PR middle-end/PR28690
841         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow EQ compares.
842         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
843         and MEM_POINTER operands over REG and MEM operands.
844         (swap_commutative_operands_p): Change return value to bool.
845         * rtl.h: Update the corresponding prototype.
846         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
847         instead of gen_rtx_PLUS.
848         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
849         value to bool.  Change function arguments to rtx's and update code
850         to match.
851         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
852         calls to match the new declaration.
853         * simplify-rtx.c (simplify_associative_operation): Don't
854         reorder simplify_binary_operation arguments.
855
856 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
857
858         * config/mips/mips.c (override_options): Use mips_costs to derive
859         the default branch cost.
860         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
861         than mips_costs.
862         * config/mips/mips.opt (mbranch-cost=): New option.
863         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
864
865 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
866
867         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
868         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
869         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
870         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
871
872 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
873
874         * config/mips/constraints.md (ks): New constraint.
875         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
876         (*add<mode>3_mips16): ...here.
877
878 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
879
880         * optabs.h (enum optab_index): Add new OTI_signbit.
881         (signbit_optab): Define corresponding macro.
882         (enum insn_code signbit_optab[]): Remove array.
883         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
884         (expand_copysign_absneg): If back end provides signbit insn, use it
885         instead of bit operations on floating point argument.
886         * builtins.c (enum insn_code signbit_optab[]): Remove array.
887         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code for
888         availability of signbit insn.
889
890         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
891         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
892         SSE mode is not active.
893         (isinf<mode>2): Disable for mfpmath=sse,387.
894
895 2007-07-22  Ben Elliston  <bje@au.ibm.com>
896
897         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
898         `class' parameter.
899         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
900
901 2007-07-20  Richard Guenther  <rguenther@suse.de>
902
903         * tree-cfg.c (verify_expr): COND_EXPRs can have any
904         integral typed condition.
905         * tree-ssa.c (useless_type_conversion_p): Do not preserve
906         booleanness.  Only preserve conversions from a non-base
907         type to a base type, not in general between types with
908         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
909         * tree.def (COND_EXPR): Document that the condition
910         can be of any integral type.
911
912 2007-07-20  Nigel Stephens  <nigel@mips.com>
913             Richard Sandiford  <richard@codesourcery.com>
914
915         * config/mips/mips.h (mips_dwarf_regno): Declare.
916         (DBX_REGISTER_NUMBER): Remove redundant brackets.
917         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
918         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
919         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
920         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
921         (REG_CLASS_NAMES): Update accordingly.
922         * config/mips/mips.c (mips_dwarf_regno): New array.
923         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
924         (mips_subword): Remove special handling for accumulator registers.
925         (override_options): Initiailize mips_dwarf_regno.  Remove use
926         of ACC_HI_REG_P.
927         (mips_swap_registers): New function.
928         (mips_conditional_register_usage): Swap accumulator registers
929         around if TARGET_LITTLE_ENDIAN.
930         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
931         * config/mips/constraints.md (h, l): Use the endianness to choose
932         between MD0_REG and MD1_REG.
933         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
934         alternative-dependent template.
935
936 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
937
938         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
939         no_new_pseudos.
940
941 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
942
943         * function.c (thread_prologue_and_epilogue_insns): Fix exit
944         predecessor fallthru flags.
945
946 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
947
948         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
949         of compare to the same type.
950         * cfgloopmanip.c (add_loop): Update information about loop exits.
951         (loop_version): Remove the innermost loop requirement.
952         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
953         to sizetype for pointers.
954
955 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
956
957         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
958         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
959         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
960
961         * config/dfp-bit.c: Empty for TFmode conversions.
962
963 2007-07-18  Caroline Tice  <ctice@apple.com>
964         
965         * var-tracking.c (find_src_status):  Check for  COND_EXEC insns
966         and handle them correctly; check that src is not NULL before
967         trying to use it.
968         (find_src_set_src): Likewise.
969         
970 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
971         
972         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
973         (struct alignment_context, init_alignment_context): New.
974         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
975         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
976         (XCHAL_HAVE_S32C1I): Likewise.
977         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
978         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
979         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
980         (ATOMIC, HQI): New macros.
981         (memory_barrier, *memory_barrier): New.
982         (sync_lock_releasesi): New.
983         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
984         (sync_lock_test_and_set<mode>): New.
985         (sync_<atomic><mode>): New.
986         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
987         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
988         (xtensa_expand_atomic): New.
989         
990 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
991
992         PR target/30652
993
994         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
995         transformation for builtin ISNORMAL.
996         (expand_builtin): Handle BUILT_IN_ISNORMAL.
997         * builtins.def (BUILT_IN_ISNORMAL): New.
998         * doc/extend.texi: Document isnormal.
999
1000 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1001
1002         PR target/30652
1003
1004         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
1005         optabs infrastructure.  Provide generic implementation for
1006         FINITE/ISFINITE.
1007         (expand_builtin): Handle FINITE/ISFINITE.
1008         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
1009         (fold_builtin_1): Likewise.
1010
1011         * builtins.def (BUILT_IN_ISFINITE): New.
1012
1013         * doc/extend.texi: Document isfinite.
1014
1015 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1016
1017         PR target/30652
1018         PR middle-end/20558
1019
1020         * builtins.c (expand_builtin_interclass_mathfn): Provide a
1021         generic fallback for isinf.
1022         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
1023         calculation code ...
1024         * real.c (get_max_float): ... to here.
1025         * real.h (get_max_float): New.
1026
1027 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1028
1029         PR middle-end/32668
1030
1031         * builtin-attrs.def (ATTR_TYPEGENERIC,
1032         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
1033
1034         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
1035         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
1036         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
1037         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
1038
1039         * c-common.c (handle_type_generic_attribute): New.
1040         (c_common_attribute_table): Add "type generic".
1041
1042         * c-typeck.c (convert_arguments): Handle "type generic" functions.
1043
1044 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
1045
1046         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
1047         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
1048         properly.
1049
1050 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1051
1052         PR target/32808
1053         * config/cris/cris.c (cris_print_index): Don't use XEXP before
1054         checking that the operand is an expression.
1055
1056 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
1057             Danny Smith  <dannysmith@users.sourceforge.net>
1058
1059         PR/other 30335
1060         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
1061         file mapping object in local namespace if Windows version later
1062         than NT4
1063
1064 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
1065
1066         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
1067         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
1068         arm_cannot_force_const_mem.
1069         (arm_cannot_force_const_mem): New function.
1070         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
1071         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
1072         of arm_tls_referenced_p.
1073         * config/arm/arm.md (movsi): Split out-of-section constants when
1074         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
1075         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
1076
1077 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
1078
1079         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
1080
1081 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
1082
1083         * config/mips/mips.md (*extendqihi2): Convert the destination
1084         to SImode.
1085
1086 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1087
1088         * config/pa/fptr.c: Update license header.
1089         * config/pa/milli64.S: Likewise.
1090
1091 2007-07-17  Nick Clifton  <nickc@redhat.com>
1092
1093         * COPYING_v3: New file.  Contains version 3 of the GNU General
1094         Public License.
1095         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
1096         Lesser General Public License.
1097         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
1098         the GNU General Public License.
1099
1100 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
1101
1102         PR rtl-optimization/32773
1103         * cfglayout.c (force_one_exit_fallthru): New function.
1104         (cfg_layout_finalize): Use it.
1105
1106 2007-07-16  Richard Guenther  <rguenther@suse.de>
1107             Uros Bizjak  <ubizjak@gmail.com>
1108
1109         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
1110         before forcing it to gimple operand.
1111
1112 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
1113             David Ung  <davidu@mips.com>
1114
1115         * config/mips/mips.h (TUNE_24K): Define.
1116         (TUNE_MACC_CHAINS): Add TUNE_24K.
1117         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
1118         imadd.
1119         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
1120         (r74k_int_madd): .. this new reservation.
1121         (define_bypass): Fixed bypasses for r74k_int_madd to use
1122         mips_linked_madd_p.
1123         * config/mips/24k.md (define_bypass): Define new
1124         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
1125
1126 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
1127             Nigel Stephens  <nigel@mips.com>
1128
1129         * config/mips/mips.md:  Include 20kc.md.
1130         * config/mips/20kc.md: New file.
1131         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
1132         (mips_adjust_cost): Tweak for 20Kc.
1133         (mips_issue_rate): Likewise.
1134         * config/mips/mips.h (TUNE_20KC): Define.
1135
1136 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
1137
1138         * config/rs6000/rs6000.c (struct processor_cost): Add
1139         cache_line_size, l1_cache_lines, and simultaneous_prefetches
1140         fields.
1141         (*_cost): Add cache information.
1142         (rs6000_override_options): Set cache parameters.
1143
1144 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1145
1146         PR bootstrap/3456
1147         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
1148         * doc/install.texi (mips-sgi-irix6): pthread support works now.
1149
1150 2007-07-16  Paul Brook  <paul@codesourcery.com>
1151
1152         PR target/32753
1153         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
1154         (cirrus_thumb2_movsi_insn): Ditto.
1155
1156 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
1157
1158         * config/rs6000/darwin-fallback.c (interpret_libc): Change
1159         CR2_REGNO to R_CR2.
1160
1161 2007-07-15  Andrew Haley  <aph@redhat.com>
1162
1163         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
1164         before looking in the context.
1165
1166 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1167
1168         PR middle-end/32398
1169         PR middle-end/32769
1170         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
1171         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
1172         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
1173         (pa_output_function_prologue): Use rp_saved and current_function_is_leaf
1174         to generate .CALLINFO statement.
1175         (hppa_expand_prologue): Set rp_saved.
1176         (hppa_expand_epilogue): Use rp_saved.
1177         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
1178         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
1179
1180 2007-07-14  Dirk Mueller  <dmueller@suse.de>
1181
1182         * omega.c (coalesce): Fix memory leak on early exit.
1183         * matrix-reorg.c (check_allocation_function): Likewise.
1184         * tree-vect-transform.c (vect_get_new_vect_var): free result
1185         of concat().
1186         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
1187         pass pointer to edge vector
1188         (partition_hot_cold_basic_blocks): Fix memory leak.
1189         * collect2.c (prefix_from_string): Free temporary storage.
1190         * reload1.c (fixup_abnormal_edges): Free sbitmap.
1191
1192 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
1193
1194         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
1195         (DO_GLOBAL_DTORS_BODY): Likewise.
1196
1197 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
1198             Nigel Stephens  <nigel@mips.com>
1199
1200         * config/mips/mips.c (mips_classify_symbol): Don't return
1201         SYMBOL_SMALL_DATA for constant pool addresses if
1202         TARGET_EMBEDDED_DATA is true.
1203
1204 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
1205
1206         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
1207         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
1208         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
1209         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
1210         __builtin_ia32_storehps, __builtin_ia32_storelps,
1211         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
1212         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
1213         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
1214         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
1215         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
1216         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
1217         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
1218         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
1219         using def_builtin_const.
1220
1221 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
1222
1223         PR tree-optimization/32705
1224         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
1225         (simplify_binary_expression): Use SSA_VAL consistently.
1226
1227 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
1228
1229         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
1230         (SPEFSCR_REGNO): Delete definition.
1231         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
1232         COUNT_REGISTER_REGNUM -> CTR_REGNO.
1233         * config/rs6000/rs6000.h: Do not define *_REGNO.
1234         LINK_REGISTER_REGNUM -> LR_REGNO.
1235         COUNT_REGISTER_REGNUM -> CTR_REGNO.
1236         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
1237         COUNT_REGISTER_REGNUM -> CTR_REGNO.
1238         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
1239         R_VRSAVE, R_VSCR. Use them.
1240         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
1241         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
1242         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
1243         * config/rs6000/aix.h: Define R_LR.  Use it.
1244         
1245 2007-07-13  Caroline Tice  <ctice@apple.com>
1246         
1247         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
1248         flag_var_tracking is explicitly turned off (i.e. when variable
1249         tracking is not feasible); otherwise, turn flag_var_tracking on when
1250         flag_var_tracking_uninit is on.
1251         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
1252         note definitions, to allow recording of initialization status in the
1253         notes.
1254         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
1255         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
1256         determine if two note locations are equal.
1257         (output_loc_list): Don't output list entries whose start & end labels
1258         are the same.
1259         (reg_loc_descriptor): Add parameter for initialization status; pass it
1260         to other loc descriptor functions.
1261         (one_reg_loc_descriptor): Add parameter for initialization status;
1262         check its value and add DW_OP_GNU_uninit to returned loc descr if
1263         appropriate.
1264         (multiple_reg_loc_descriptor): Add parameter for initialization
1265         status;
1266         pass init status argument to other loc descriptor functions; check
1267         value of intialization parameter and add DW_OP_GNU_uninit to returned
1268         loc descr if appropriate.
1269         (based_loc_descr): Add parameter for initialization status; add new
1270         variable for return value; check value of initialization parameter and
1271         add DW_OP_GNU_uninit to returned loc descr if appropriate.
1272         (concatn_mem_loc_descriptor): Add parameter for initialization status;
1273         pass init status argument to other loc descriptor functions; check
1274         value of intialization parameter and add DW_OP_GNU_uninit to returned
1275         loc descr if appropriate.
1276         (mem_loc_descriptor): Likewise.
1277         (concat_loc_descriptor): Likewise.
1278         (concatn_loc_descriptor): Likewise.
1279         (loc_descriptor): Add parameter for initialization status; pass it as
1280         argument to other loc descriptor function calls.
1281         (loc_descriptor_from_tree_1): Add appropriate initialization status
1282         to loc descriptor function calls.
1283         (add_location_or_const_value_attribute): Get initialization status
1284         from VAR_LOCATION note; add initialization status to loc descriptor
1285         function calls.
1286         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
1287         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
1288         status is uninitialized, add "[uninint]" to output.
1289         * common.opt (fvar-tracking-uninit): New option, similar to
1290         fvar-tracking, to turn on tracking of uninitialized variables; creates
1291         a new global flag, flag_var_tracking_uninit.
1292         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
1293         (enum var_init_status): New type, for var initialization status field.
1294         * var-tracking.c (struct location_chain_def): Two new fields, init,
1295         for initialization status, and set_src for the assignment value expr.
1296         (unshare_variable): New parameter for initialization status;
1297         initialize new init and set_src fields.
1298         (var_reg_set): New parameters for initialization status and value;
1299         pass them to set_variable_part.
1300         (var_mem_set): Likewise.
1301         (get_init_value): New function.
1302         (var_reg_delete_and_set): New initialization status & value
1303         parameters; add call to get_init_value if status is unknown; pass new
1304         parameters to clobber_variable_part and var_reg_set.
1305         (var_mem_delete_and_set): Likewise.
1306         (var_reg_delete): Pass null set_src value to clobber_variable_part.
1307         (var_mem_delete): Likewise.
1308         (variable_union): Pass status to unshare_variable; initialize new init
1309         and set_src fields. If flag_var_tracking_uninit is not set, force
1310         status to initialized.
1311         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
1312         used later to get the set_src value.
1313         (find_src_status): New function.
1314         (find_src_set_src): New function.
1315         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
1316         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
1317         MO_SET, get set_src value and pass it to var_reg_delete_and_set
1318         and var_mem_delete_and_set.
1319         (dump_variable): Print out "[uninit]" if appropriate.
1320         (set_variable_part): Add new initialization and set_src parameters;
1321         pass status to unshare_variable; set node->init and node- >set_src
1322         fields and modify slot in hash table appropriately; save the init and
1323         set_src values if appropriate and assign to the new node.
1324         (clobber_variable_part): New set_src parameter; if two nodes have
1325         same variable and same location but different set_src (assignment)
1326         values, clobber old node.
1327         (delete_variable_part): Pass init status to unshare_variable.
1328         (emit_note_insn_var_location): Add initialized var; assign var's init
1329         status to new 'initialized'; pass new init status field to calls to
1330         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
1331         status to initialized.
1332         (emit_notes_in_bb): Pass initialization status to calls to
1333         var_reg_set, var_mem_set, var_reg_delete_and_set and
1334         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
1335         var_reg_delete_and_set and var_mem_delete_and_set; call
1336         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
1337         make up for change in add_stores.
1338         (vt_add_function_parameters): Add status to calls to
1339         set_variable_part.
1340         * config/darwin.c (darwin_override_options): Turn on uninitialized
1341         tracking automatically, if var_tracking is on and the system is
1342         10.5 or higher.
1343         
1344 2007-07-13  Sa Liu  <saliu@de.ibm.com>
1345
1346         * config.gcc: Add options for arch and tune on SPU.
1347         * config/spu/predicates.md: Add constant operands 0 and 1.
1348         * config/spu/spu-builtins.def: Add builtins for double precision 
1349         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
1350         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
1351         spu_testsv.
1352         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
1353         a CELLEDP target.
1354         * config/spu/spu-protos.h: Add new function prototypes. 
1355         * config/spu/spu.c (spu_override_options): Check options -march and
1356         -mtune.
1357         (spu_comp_icode): Add comparison code for DFmode and vector mode.
1358         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
1359         mode comparison.
1360         (spu_const_from_int): New.  Create a vector constant from 4 ints.
1361         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
1362         (spu_emit_vector_compare): New.  Emit vector compare.
1363         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
1364         * config/spu/spu.h: Add options -march and -mtune.  Define processor
1365         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
1366         CANONICALIZE_COMPARISON.
1367         * config/spu/spu.md: Add new insns for double precision compare
1368         and double precision vector compare.  Add vcond and smax/smin patterns
1369         to enable DFmode vector conditional expression.
1370         * config/spu/spu.opt: Add options -march and -mtune.
1371         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
1372         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
1373         both CELL and CELLEDP targets: spu_testsv.
1374         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
1375         values.
1376
1377 2007-07-13  Richard Guenther  <rguenther@suse.de>
1378
1379         PR tree-optimization/32721
1380         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
1381         TREE_THIS_VOLATILE on the folded reference.
1382         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
1383         if the array reference has TREE_THIS_VOLATILE set.
1384
1385 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
1386
1387         PR other/32188
1388         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
1389
1390 2007-07-13  Andreas Schwab  <schwab@suse.de>
1391
1392         * gengtype-lex.l: Allow declarations to be indented.
1393
1394 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
1395
1396         * ginclude/tgmath.h: New.
1397         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
1398         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
1399         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
1400         * configure: Regenerate.
1401
1402 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
1403
1404         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
1405         correct index when setting register save state for xd
1406         registers.
1407
1408 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
1409
1410         * config/sh/sh.c (mark_use): Remove.
1411
1412 2007-07-12  Paul Brook  <paul@codesourcery.com>
1413
1414         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
1415         reg does not overlap return value.
1416
1417 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
1418
1419         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
1420         (set_expression_vuses): Ditto.
1421         (init_pre): Initialize expression_vuses.
1422
1423 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
1424
1425         * config/i386/sse.md (storentdf, storentsf): New.
1426
1427 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
1428
1429         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
1430         FUNCTION_DECL.
1431         * tree.c (build_decl_stat): Move code from here...
1432         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
1433         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
1434         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
1435         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
1436         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
1437         FUNCTION_BOUNDARY.
1438
1439 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
1440             Devang Patel  <dpatel@apple.com>
1441
1442         PR tree-optimization/25413
1443         * targhooks.c (default_builtin_vector_alignment_reachable): New.
1444         * targhooks.h (default_builtin_vector_alignment_reachable): New.
1445         * tree.h (contains_packed_reference): New.
1446         * expr.c (contains_packed_reference): New.
1447         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
1448         (vect_enhance_data_refs_alignment): Call
1449         vector_alignment_reachable_p.
1450         * target.h (vector_alignment_reachable): New builtin.
1451         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
1452         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
1453         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
1454
1455 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
1456
1457         * target.h (builtin_vectorization_cost): Add new target builtin.
1458         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
1459         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
1460         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
1461         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
1462         uninitialized variables.
1463         * tree-vect-transform.c (cost_for_stmt): New function.
1464         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
1465         using cost 1 for all scalar stmts. Be less conservative when
1466         estimating the number of prologue/epulogue iterations. Call
1467         targetm.vectorize.builtin_vectorization_cost. Return
1468         min_profitable_iters-1.
1469         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
1470         initialization cost instead of TARG_VEC_STMT_COST. Use
1471         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
1472         epilogue code. Fix epilogue cost computation.
1473         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
1474         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
1475         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
1476         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
1477         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
1478         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
1479
1480 2007-07-12  Richard Guenther  <rguenther@suse.de>
1481
1482         * gimplify.c (gimplify_conversion): Make sure that the result
1483         from maybe_fold_offset_to_reference is trivially convertible
1484         to the desired type before doing the simplification.
1485         (gimplify_expr): Likewise.
1486         * fold-const.c (fold_binary): Use the correct types for
1487         building the simplified expression.
1488
1489 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
1490
1491         PR rtl-optimization/32729
1492         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
1493         that fallthru to exit.
1494
1495 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
1496
1497         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
1498         (symDTPOFF2reg): Likewise.
1499
1500 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
1501
1502         PR tree-optimization/32663
1503         
1504         * tree.h (VALUE_HANDLE_VUSES): Remove.
1505         (struct tree_value_handle): Remove vuses.
1506
1507         * tree-vn.c (create_value_handle_for_expr): Don't set
1508         VALUE_HANDLE_VUSES. 
1509
1510         * tree-ssa-pre.c (expression_vuses): New.
1511         (alloc_expression_id): Set up expression_vuses.
1512         (get_expression_vuses): New.
1513         (set_expression_vuses): Ditto.
1514         (clear_expression_ids): Modify for expression_vuses.
1515         (phi_translate_1): Ditto.
1516         (phi_translate_set): Ditto.
1517         (value_dies_in_block_x): Ditto
1518         (valid_in_sets): Ditto.
1519         (add_to_sets): Ditto.
1520         (find_existing_value_expr): Ditto.
1521         (create_value_handle_for_expr): Ditto.
1522         (make_values_for_stmt): Ditto.
1523         (vuse_equiv): Remove.
1524
1525 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
1526
1527         * Makefile.in (mostlyclean): Remove object files.
1528
1529 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1530
1531         * toplev.c (no_new_pseudos): Deleted.
1532         * rtl.h (no_new_pseudos): Deleted.
1533         * tree-pass.h (pass_no_new_pseudos): Deleted. 
1534         * passes.c (pass_no_new_pseudos): Deleted.
1535         * final.c (rest_of_clean_state): Removed no_new_pseudos.
1536         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
1537         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
1538         reload_completed.
1539         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
1540         * rtlhooks.c (gen_lowpart_general): Ditto.
1541         * optabs.c (prepare_operand): Ditto.
1542         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
1543         no_new_pseudos.
1544         * modulo-sched.c (rest_of_handle_sms): Ditto.
1545         * see.c (rest_of_handle_see): Ditto.
1546         * ifcvt.c (if_convert): Ditto.
1547         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
1548         reload_completed.
1549         * init-regs.c (gate_initialize_regs): Deleted set of
1550         no_new_pseudos.
1551         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
1552         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
1553         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
1554         
1555 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
1556
1557         PR target/32661
1558         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
1559         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
1560         (*vec_extractv2di_1_rex64): New insn pattern.
1561
1562 2007-07-11  David Daney  <ddaney@avtrex.com>
1563
1564         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
1565         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
1566         for SIGNAL_UNWIND_RETURN_COLUMN.
1567         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
1568         (DWARF_FRAME_REGNUM): Rewrite.
1569         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
1570
1571 2007-07-11  Nick Clifton  <nickc@redhat.com>
1572
1573         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
1574         delta and use gen_int_mode in place of GET_INT instead.
1575
1576 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
1577
1578         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
1579         and letter field.
1580
1581 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
1582
1583         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
1584         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
1585         types or not.
1586         * params.h (VERIFY_CANONICAL_TYPES): Remove.
1587         (USE_CANONICAL_TYPES): New.
1588         * doc/invoke.texi (verify-canonical-types): Remove.
1589         (use-canonical-types): Add.
1590
1591 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
1592
1593         * config/spu/spu.c (spu_optimization_options): Remove setting of
1594         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
1595         (spu_override_options): Move it here.
1596
1597 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
1598
1599         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
1600         * config/mips/mips.c (mips_cpu_info_table): Mention
1601         MIPS_ISA_LEVEL_SPEC in the comment.
1602
1603 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
1604
1605         PR tree-optimization/32713
1606         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
1607
1608 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
1609
1610         PR middle-end/30482
1611         * c-opts.c (c_common_post_options): Do not change flag_complex_method
1612         conditional to flag_isoc99.
1613         (c_common_init_options): Do it here, unconditionally.
1614
1615 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
1616
1617         PR tree-optimization/32589
1618         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
1619         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
1620         * tree-ssa-propagate.c (valid_gimple_expression_p): New
1621         predicate, extracted from...
1622         (set_rhs): ...here.  Call it for the expression on entry.
1623         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
1624         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
1625         (simplify_binary_expression): Use valid_gimple_expression_p
1626         to validate the simplification.
1627         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
1628
1629 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
1630
1631         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
1632         DWARF2_DEBUG on 32 bit target too.
1633         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
1634
1635 2007-07-11  Nick Clifton  <nickc@redhat.com>
1636
1637         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
1638         version for 64-bit hosts.
1639
1640 2007-07-10  David Daney  <ddaney@avtrex.com>
1641
1642         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
1643         predicate.
1644         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
1645         call.
1646         * config/mips/mips.c (mips_expand_synci_loop): New function.
1647         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
1648         (UNSPEC_RDHWR): Same.
1649         (UNSPEC_SYNCI): Same.
1650         (UNSPEC_SYNC): Same.
1651         (clear_cache): New expand.
1652         (sync): New insn.
1653         (synci): Same.
1654         (rdhwr): Same.
1655         (clear_hazard): Same.
1656         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
1657         function.
1658         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
1659         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
1660
1661 2007-07-10  Ian Lance Taylor  <iant@google.com>
1662
1663         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
1664         no_new_pseudos.
1665
1666 2007-07-10  David Daney  <ddaney@avtrex.com>
1667
1668         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
1669         * builtins.c (expand_builtin___clear_cache): New function.
1670         (expand_builtin): Call expand_builtin___clear_cache for
1671         BUILT_IN_CLEAR_CACHE case.
1672         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
1673         * doc/md.texi (clear_cache): Document new instruction pattern.
1674         * testsuite/gcc.dg/builtins-64.c: New test.
1675
1676 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
1677
1678         * config/cris/cris.md ("movsi"): Fix typo in last change.
1679
1680 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
1681
1682         PR 32617
1683         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
1684         FUNCTION_DECLs.
1685         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
1686         * varasm.c (assemble_start_function): Honor DECL_ALIGN
1687         for FUNCTION_DECLs.  Don't use align_functions_log if
1688         DECL_USER_ALIGN.
1689         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
1690         even for FUNCTION_DECLs.
1691         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
1692         FUNCTION_DECLs.
1693         * tree.h (DECL_ALIGN): Update for new location of 'align'.
1694         (DECL_FUNCTION_CODE): Update for new location and name of
1695         'function_code'.
1696         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
1697         (struct tree_decl_common): Move 'align' and 'off_align' out
1698         of union, ensure they're still on a 32-bit boundary.  Remove
1699         other fields in union 'u1'.
1700         (struct tree_function_decl): Add field 'function_code' replacing
1701         'u1.f' in tree_decl_common.
1702         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
1703         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
1704         (Variable Attributes): Cross-reference 'aligned' attribute
1705         to Function Attributes.
1706         * flags.h (force_align_functions_log): Delete.
1707         * toplev.c (force_align_functions_log): Delete.
1708
1709 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
1710
1711         PR target/32708
1712         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
1713         (*vec_concatv2di_rex): New insn pattern.
1714
1715 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1716
1717         PR target/32538
1718         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
1719
1720 2007-07-10  Ian Lance Taylor  <iant@google.com>
1721
1722         Replace no_new_pseudos in backends.
1723         * rtl.h (can_create_pseudo_p): Define.
1724         * config/darwin.c (machopic_indirect_data_reference): Use
1725         can_create_pseudo_p () instead of no_new_pseudos.
1726         (machopic_indirect_data_reference): Likewise.
1727         (machopic_legitimize_pic_address): Likewise.
1728         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
1729         (alpha_emit_set_const_1): Likewise.
1730         (alpha_emit_set_const): Likewise.
1731         (alpha_emit_conditional_move): Likewise.
1732         (alpha_split_conditional_move): Likewise.
1733         * config/alpha/alpha.md (various splitters): Likewise.
1734         (movti): Likewise.
1735         * config/arm/arm.c (legitimize_pic_address): Likewise.
1736         (arm_load_pic_register): Likewise.
1737         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
1738         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
1739         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
1740         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
1741         * config/cris/cris.md (movsi): Likewise.
1742         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
1743         (symGOTOFF2reg_hilo): Likewise.
1744         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
1745         * config/h8300/h8300.md (insv, extzv): Likewise.
1746         * config/i386/i386.c (ix86_expand_move): Likewise.
1747         (ix86_expand_vector_move): Likewise.
1748         (ix86_prepare_fp_compare_args): Likewise.
1749         (ix86_expand_carry_flag_compare): Likewise.
1750         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
1751         (tls_dynamic_gnu2_combine_32): Likewise.
1752         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
1753         * config/ia64/ia64.c (ia64_expand_move): Likewise.
1754         (ia64_expand_movxf_movrf): Likewise.
1755         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
1756         (m32c_split_move): Likewise.
1757         (m32c_expand_insv): Likewise.
1758         * config/m68k/m68k.md (movsi): Likewise.
1759         * config/mips/mips.c (mips_force_temporary): Likewise.
1760         (mips_split_symbol): Likewise.
1761         (mips_move_integer): Likewise.
1762         (mips_legitimize_const_move): Likewise.
1763         * config/mn10300/mn10300.md (movsi): Likewise.
1764         * config/pa/pa.c (emit_move_sequence): Likewise.
1765         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
1766         (rs6000_got_register): Likewise.
1767         (create_TOC_reference): Likewise.
1768         (rs6000_machopic_legitimize_pic_address): Likewise.
1769         * config/rs6000/rs6000.md (add<mode>3): Likewise.
1770         (various splitters): Likewise.
1771         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
1772         (movsi_got): Likewise.
1773         * config/s390/s390.c (emit_symbolic_move): Likewise.
1774         * config/s390/s390.md (movhi, movqi): Likewise.
1775         (load_multiple, store_multiple): Likewise.
1776         * config/score/score.c (score_force_temporary): Likewise.
1777         * config/sh/sh.c (prepare_move_operands): Likewise.
1778         (prepare_cbranch_operands): Likewise.
1779         (emit_fpu_switch): Likewise.
1780         (fpscr_set_from_mem): Likewise.
1781         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
1782         (adddi3, subsi3): Likewise.
1783         (various splitters): Likewise.
1784         (divsi_inv_fp_combine): Likewise.
1785         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
1786         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
1787         (sne): Likewise.
1788         * config/sh/predicates.md (xor_operand): Likewise.
1789         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
1790         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
1791         (movdi_pic_label_ref): Likewise.
1792         * config/spu/spu.c (spu_split_immediate): Likewise.
1793         * config/alpha/alpha.md (various splitters): Remove test
1794         !no_new_pseudos || reload_completed.
1795         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
1796         no_new_pseudos.
1797         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
1798         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
1799         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
1800         * config/score/score.c (th_output_mi_thunk): Likewise.
1801         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
1802         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
1803
1804 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
1805
1806         PR rtl-optimization/32664
1807         * mode-switching.c (create_pre_exit): Skip barrier insns.
1808
1809 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
1810
1811         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
1812         force_gimple_operand_bsi.
1813         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
1814         rewrite_use_compare): Ditto.
1815         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
1816         Ditto.
1817         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
1818         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
1819         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
1820         * tree-profile.c (prepare_instrumented_value,
1821         tree_gen_interval_profiler, tree_gen_pow2_profiler,
1822         tree_gen_one_value_profiler, tree_gen_ic_profiler,
1823         tree_gen_ic_func_profiler, tree_gen_average_profiler,
1824         tree_gen_ior_profiler): Ditto.
1825         * tree-ssa-reassoc.c (negate_value): Ditto.
1826         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
1827         Use force_gimple_operand_bsi.
1828         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
1829         * tree-if-conv.c (add_to_dst_predicate_list,
1830         find_phi_replacement_condition): Ditto.
1831         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
1832         Call mark_symbols_for_renaming for new statements.
1833         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
1834
1835 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
1836
1837         * cfghooks.c (remove_edge): New function.
1838         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
1839         loop exit rescans.
1840         * cfghooks.h (remove_edge): Declare.
1841         * cfg.c (remove_edge): Renamed to remove_edge_raw.
1842         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
1843
1844 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
1845
1846         * optabs.h: Added declaration for signbit_optab.  
1847         * optabs.c: (init_optabs): Added initialization for signbit_optab.
1848         * genoptinit.c (optabs): Added entry for signbit insns.  
1849         * builtins.c (expand_builtin_signbit): Added code to use a signbit
1850         insn, if available.  
1851         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
1852         * config/s390/s390.md (signbit<mode>2): New expander.  
1853
1854 2007-07-09  Richard Guenther  <rguenther@suse.de>
1855
1856         PR middle-end/32698
1857         * fold-const.c (fold_plusminus_mult_expr): Move constant
1858         arguments second to allow decomposing.
1859
1860 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
1861
1862         Revert:
1863         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
1864         PR debug/23551
1865         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
1866         Disregard DECL_FROM_INLINE.
1867
1868 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
1869
1870         PR target/27855
1871         * doc/invoke.texi: Add ftree-reassoc flag.
1872         * common.opt (ftree-reassoc): New flag.
1873         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
1874         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
1875
1876 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
1877
1878         PR tree-optimization/32681
1879         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
1880         saved in second_edge->aux when first_bb is a loop header.
1881
1882 2007-07-09  Jan HUbicka  <jh@suse.cz>
1883
1884         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
1885
1886 2007-07-09  Richard Guenther  <rguenther@suse.de>
1887
1888         * c-decl.c (start_function): Do not promote return type.
1889
1890 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
1891
1892         * function.c (do_warn_unused_parameter): Do not warn if
1893         TREE_NO_WARNING is set.
1894
1895 2007-07-08  Andreas Schwab  <schwab@suse.de>
1896
1897         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
1898
1899 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
1900
1901         Revert this patch:
1902         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
1903
1904         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
1905         apply to assembly language, too.
1906         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
1907
1908 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
1909
1910         Revert (note the sccvn portions are *not* reverted)
1911         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
1912
1913         Fix PR tree-optimization/23488
1914
1915         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
1916         handles.
1917         * tree-flow-inline.h (get_value_handle): Ditto.
1918         * tree-ssa-pre.c (decl_vh_map): New.
1919         (decl_node_pool): New.
1920         (can_value_number_operation): Support DECL_P.
1921         (can_PRE_operation): Ditto.
1922         (create_expression_by_pieces): Ditto.
1923         (find_existing_value_expr): Modify to differnetiate between
1924         addressing and top level.
1925         (create_value_handle_for_expr): Handle DECL's.
1926         (poolify_tree): Ditto.
1927         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
1928         (make_values_for_stmt): Handle DECL's properly.
1929         (init_pre): Reorg to not init useless things during FRE.
1930         (fini_pre): Ditto.
1931         * tree-flow.h: Include pointer-set.h.
1932         (decl_vh_map): Declare.
1933         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
1934
1935 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
1936
1937         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
1938         the constraint description.
1939         * doc/md.texi: Update documentation of AVR constraints.
1940
1941 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
1942
1943         * auto-inc-dec.c, config/arm/arm.c,
1944         config/m32r/constraints.md, config/mips/mips.md,
1945         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
1946         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
1947         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
1948         typos.  Follow spelling conventions.
1949         * doc/invoke.texi, doc/rtl.texi: Fix typos.
1950
1951         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
1952         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
1953
1954         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
1955         realloc_vuse): Remove.
1956         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
1957         and realloc_vuse.
1958
1959 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
1960
1961         Fix PR tree-optimization/23488
1962
1963         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
1964         (try_to_simplify): Ditto.
1965         (visit_use): Ditto.
1966         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
1967         handles.
1968         * tree-flow-inline.h (get_value_handle): Ditto.
1969         * tree-ssa-pre.c (decl_vh_map): New.
1970         (decl_node_pool): New.
1971         (can_value_number_operation): Support DECL_P.
1972         (can_PRE_operation): Ditto.
1973         (create_expression_by_pieces): Ditto.
1974         (find_existing_value_expr): Modify to differnetiate between
1975         addressing and top level.
1976         (create_value_handle_for_expr): Handle DECL's.
1977         (poolify_tree): Ditto.
1978         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
1979         (make_values_for_stmt): Handle DECL's properly.
1980         (init_pre): Reorg to not init useless things during FRE.
1981         (fini_pre): Ditto.
1982         * tree-flow.h: Include pointer-set.h.
1983         (decl_vh_map): Declare.
1984         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
1985                 
1986 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
1987
1988         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
1989         apply to assembly language, too.
1990         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
1991
1992 2007-07-06  Ian Lance Taylor  <iant@google.com>
1993             Zack Weinberg  <zackw@panix.com>
1994
1995         PR middle-end/32441
1996         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
1997
1998 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
1999
2000         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
2001         (prefetch): Likewise if "pref" would be used.
2002
2003 2007-07-06  Josh Conner  <jconner@apple.com>
2004
2005         PR middle-end/32602
2006         PR middle-end/32603
2007         * calls.c (store_one_arg): Handle arguments which are partially
2008         on the stack when detecting argument overlap.
2009
2010 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
2011
2012         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
2013         chosen during find_reloads.
2014
2015 2007-07-06  Richard Guenther  <rguenther@suse.de>
2016
2017         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
2018         TYPE_ARG_TYPES for verification of argument types.  Use
2019         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
2020         parameters as variable arguments.
2021
2022 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
2023
2024         * libgcc2.h (word_type): Type definition removed.
2025         (cmp_return_type, shift_count_type): Type definitions added.
2026         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
2027         replaced with shift_count_type.
2028         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
2029         cmp_return_type.
2030         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
2031         changed from word_type to Wtype.
2032         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
2033         replaced with shift_count_type.
2034         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
2035         cmp_return_type.
2036         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
2037         and libgcc_shift_count attribute added.
2038         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
2039         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
2040         (TARGET_INITIALIZER): New target hooks added.
2041         * targhooks.c (default_libgcc_cmp_return_mode,
2042         default_libgcc_shift_count_mode): Default implementations for the new
2043         target hooks added.
2044         * targhooks.h (default_libgcc_cmp_return_mode,
2045         default_libgcc_shift_count_mode): Function prototypes added.
2046         * target.h (struct gcc_target): Fields for the new target hooks added.
2047         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
2048         as library call.
2049         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
2050         library call.
2051
2052         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
2053         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
2054
2055         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
2056         s390_libgcc_shift_count_mode): Functions added.
2057         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
2058         Target hooks defined.
2059
2060 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
2061
2062         * config/mips/mips.c (compute_frame_size): Restore the original
2063         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
2064         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
2065         Document why the difference is needed.
2066
2067 2007-07-06  Richard Guenther  <rguenther@suse.de>
2068
2069         * c-common.c (boolean_increment): Use correctly typed
2070         constant.
2071
2072 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
2073
2074         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
2075         the topmost argument register is not also included in the save mask.
2076         (mips16e_collect_argument_save_p): Take a pointer to the argument
2077         register, rather than a pointer to the number of arguments.
2078         (mips16e_collect_argument_saves): Only include argument saves
2079         that aren't in the register mask.
2080
2081 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
2082
2083         PR rtl-optimization/32450
2084         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
2085         to ensure that instructions are not moved into the prologue when
2086         profiling is on.  Remove unused prologue_end variable.
2087         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
2088         as a scheduling barrier.
2089
2090 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
2091
2092         PR debug/23551
2093         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
2094         Disregard DECL_FROM_INLINE.
2095
2096 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
2097
2098         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
2099         IORing with a constant.
2100
2101 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
2102
2103         PR rtl-optimization/32475
2104         * df-scan.c (df_def_record_1): Add a use of the stack pointer
2105         for every definition of the stack pointer.
2106
2107 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
2108
2109         * arm.c (vfp3_const_double_index): Copy signed results of
2110         REAL_VALUE_TO_INT into unsigned vars.
2111
2112 2007-07-05  Richard Guenther  <rguenther@suse.de>
2113
2114         PR middle-end/32639
2115         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
2116         FUNCTION_TYPE.
2117         * tree-ssa.c (useless_type_conversion_p): Check canonical
2118         types early.
2119
2120 2007-07-05 Anatoly Sokolov <aesok@post.ru>
2121
2122         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
2123         zero_extendhisi2): Change to define_insn_and_split. 
2124         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
2125
2126 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
2127
2128         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
2129         pass_match_asm_constraints): New.
2130         * passes.c (init_optimization_passes): Add new pass.
2131         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
2132         * function.h (struct function): Add has_asm_statement bit.
2133         (current_function_has_asm_statement): New.
2134         * tree-pass.h (pass_match_asm_constraints): New.
2135
2136 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
2137
2138         * config/mips/mips.c (mips_file_start): Avoid declaration
2139         after code.
2140
2141 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
2142
2143         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
2144
2145 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
2146
2147         * rtl.def (NOTE): Change print format string to print
2148         operand 5 as a note insn name.
2149
2150 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
2151             David Ung  <davidu@mips.com>
2152
2153         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
2154         * doc/invoke.texi: (MIPS Options): Document them.
2155
2156 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
2157             David Ung  <davidu@mips.com>
2158
2159         Add support for SmartMIPS ASE.
2160
2161         * optabs.c (expand_binop_directly): New, broken out from...
2162         (expand_binop): Here.  Make it try rotating in the other
2163         direction even when the second operand isn't constant.
2164         * config/mips/mips.md (*lwxs): New.
2165         * config/mips/mips.opt (msmartmips): New.
2166         * config/mips/mips.c (mips_lwxs_address_p): New.
2167         (mips_rtx_costs): Make it recognize scaled indexed addressing.
2168         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
2169         __mips_smartmips when compiling for TARGET_SMARTMIPS.
2170         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
2171         (ISA_HAS_LWXS): New.
2172         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
2173         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
2174         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
2175         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
2176         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
2177         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
2178         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
2179
2180 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
2181
2182         * tree-vectorizer.c (new_loop_vec_info): Initialize
2183         LOOP_VINFO_COST_MODEL_MIN_ITERS.
2184         * tree-vectorizer.h (_loop_vec_info): Added new filed
2185         min_profitable_iters.
2186         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
2187         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
2188         * tree-vect-analyze.c (vect_analyze_operations): Set
2189         LOOP_VINFO_COST_MODEL_MIN_ITERS.
2190         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
2191         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
2192         Fix calculation of peel_iters_prologue. Move consideration of epilogue
2193         and prologue cost to after they are computed.
2194         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
2195         TARG_VEC_STMT_COST.
2196         (vect_model_simple_cost): Takes additional argument dt. Consider cost
2197         of creating vectors from scalars according to dt.
2198         (vect_model_store_cost): Likewise.
2199         (vectorizable_call): Use dt array instead of scalar dt. Call
2200         vect_model_simple_cost with additional argument dt.
2201         (vectorizable_assignment): Likewise.
2202         (vectorizable_operation): Likewise.
2203         (vectorizable_type_demotion): Likewise.
2204         (vectorizable_type_promotion): Likewise.
2205         (vectorizable_store): Use dt array instead of scalar dt. Call
2206         vect_model_store_cost with additional argument dt.
2207         (vect_do_peeling_for_loop_bound): Don't call
2208         vect_estimate_min_profitable_iters. Instead, lookup
2209         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
2210         "may not be profitable".
2211
2212 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
2213
2214         PR testsuite/32014
2215         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
2216         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
2217         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
2218         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
2219
2220 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
2221
2222         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
2223         addressing modes cheaper.
2224
2225 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
2226
2227         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
2228         (dw_ranges_struct): Rename block_num to num.  Adjust.
2229         (dw_ranges_by_label_struct): New.
2230         (ranges_by_label, ranges_by_label_allocated,
2231         ranges_by_label_in_use): New variables.
2232         (add_ranges_num): Factored most of the code out of...
2233         (add_ranges): ... this one.  Rewrite in terms of the former.
2234         (add_ranges_by_labels): New.
2235         (output_ranges): Output by-label ranges.
2236         (dwarf2out_finish): Output range for multiple-section
2237         compile_unit.  Output standard DW_AT_low_pc in addition to
2238         unexpected DW_AT_entry_pc.
2239
2240 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
2241
2242         PR tree-optimization/32604
2243         PR tree-optimization/32606
2244
2245         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
2246         (compute_antic_safe): Removed.
2247         (ANTIC_SAFE_LOADS): Ditto.
2248         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
2249         (execute_pre): Don't call compute_antic_safe.
2250         (vuse_equiv): New function.
2251         (make_values_for_stmt): Use it
2252         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
2253         not always true.
2254
2255 2007-07-04 Anatoly Sokolov <aesok@post.ru>
2256
2257         PR target/31331
2258         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
2259         rather than a decl. 
2260         (avr_attribute_table): Make "naked" attribute apply to function types
2261         rather than to decls.
2262         (avr_handle_fntype_attribute): New function.
2263
2264 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
2265
2266         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
2267         after \.
2268
2269 2007-07-04  David Ung  <davidu@mips.com>
2270             Joseph Myers  <joseph@codesourcery.com>
2271
2272         * config/mips/mips.md (type): Add logical, signext and move.
2273         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
2274         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
2275         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
2276         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
2277         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
2278         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
2279         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
2280         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
2281         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
2282         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
2283         movv2sf_hardfloat_64bit): Use the new types.
2284         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
2285         *movdf_softfloat, *movdf_mips16): Use "multi".
2286         (extendqihi2): Replace with a define_expand.
2287         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
2288         Based on extend<SHORT:mode><GPR:mode>2 patterns.
2289         * config/mips/74k.md (r74k_int_logical): New reservation and
2290         bypasses.
2291         (r74k_int_arith): Remove "slt".
2292         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
2293         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
2294         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
2295         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
2296         reservations for "arith".
2297
2298 2007-07-04  Richard Guenther  <rguenther@suse.de>
2299
2300         * tree-ssa.c (useless_type_conversion_p): Add handling for
2301         scalar float and vector types.  Only call the types_compatible_p
2302         langhook for aggregate types as last resort.  Follow the
2303         rules.
2304
2305 2007-07-04  Richard Guenther  <rguenther@suse.de>
2306
2307         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
2308         the same as NOP_EXPR.
2309
2310 2007-07-04  Nick Clifton  <nickc@redhat.com>
2311
2312         * target.h (struct gcc_target): Add target_help field.
2313         * target-def.h (TARGET_HELP): New.
2314         (TARGET_INITIALIZER): Use TARGET_HELP.
2315         * opts.c (command_handle_option): Invoke target_help function, if
2316         defined, when the user has specified --target-help on the command
2317         line.
2318         * doc/invoke.texi: Mention that --target-help might print
2319         additional information.
2320         * doc/tm.texi: Document TARGET_HELP hook.
2321
2322         * arm.c (TARGET_HELP): Override default definition.
2323         (arm_target_help): New - display a wrapped list of cores and
2324         architectures supported.
2325
2326 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2327
2328         * config/gcc/v850/v850.c (expand_prologue): Make sure
2329         GEN_INT() argument is sign extended rather than zero extended.
2330         (expand_epilogue): Likewise.
2331         (output_move_double): Delete.
2332         * config/gcc/v850/v850-protos.h (output_move_double): Delete.
2333         * config/gcc/v850/v850.md (movdi): Delete.
2334         (*movdi_internal): Delete.
2335         (movdf): Delete.
2336         (*movdf_internal): Delete.
2337
2338 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
2339
2340         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
2341         unless compiling RTP PIC.
2342
2343 2007-07-04  Richard Guenther  <rguenther@suse.de>
2344
2345         PR tree-optimization/32482
2346         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
2347         original ssa name if we didn't find a shift expression.
2348         Fix shift constant for bit zero test.
2349
2350 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
2351
2352         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
2353
2354 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
2355
2356         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
2357         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
2358         * config/arm/vxworks.h (ASM_SPEC): Delete.
2359         (SUBTARGET_EXTRA_ASM_SPEC): Define.
2360
2361 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
2362
2363         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
2364         (DDR_REVERSED_P): New.
2365         * tree-data-ref.c (initialize_data_dependence_relation,
2366         build_classic_dist_vector): Set DDR_REVERSED_P.
2367
2368 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
2369
2370         PR middle-end/32457
2371         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
2372         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
2373         init_omega_for_ddr_1): Use non conservative number of iterations
2374         estimations.
2375         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
2376         (analyze_siv_subscript): Remove FIXME and reinitialization of 
2377         last_conflicts to chrec_dont_know.
2378         * testsuite/gfortran.dg/vect/pr32457.f90: New.
2379
2380 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
2381
2382         * tree.c (maybe_canonicalize_argtypes): Improve description.
2383
2384 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
2385
2386         * tree.c (maybe_canonicalize_argtypes): New.
2387         (build_function_type): Set canonical type.
2388         (build_method_type_directly): Ditto.
2389         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
2390         properly.
2391
2392 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2393
2394         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
2395         like PLUS_EXPR.
2396         (rewrite_use_nonlinear_expr): Likewise.
2397
2398 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
2399
2400         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
2401
2402 2007-07-04  Ben Elliston  <bje@au.ibm.com>
2403
2404         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
2405         of this file.
2406
2407         * c-objc-common.c (c_types_compatible_p): Fix indentation.
2408
2409         * doc/tm.texi (Run-time Target): Capitalise "CPU".
2410         (Exception Handling): Likewise.
2411
2412 2007-07-03  Jan Hubicka  <jh@suse.cz>
2413
2414         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
2415
2416 2007-07-03  Eric Christopher  <echristo@apple.com>
2417
2418         * doc/cppopts.texi: Add conflicting option note to -dM.
2419         * doc/invoke.texi: Add note about possible conflicts with
2420         -E for -dCHARS and note that -dM will not produce
2421         any results if there is no machine dependent reorg.
2422         
2423 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
2424
2425         * tree.h (DECL_ALIGN): Back out previous change.
2426
2427 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
2428
2429         * configure.ac: Test for .dtprelword support on MIPS.
2430         * configure, config.in: Regenerate.
2431         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
2432         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
2433
2434 2007-07-03  Julian Brown  <julian@codesourcery.com>
2435
2436         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
2437         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
2438         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
2439         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
2440         capability.
2441         (all_fpus): Add FPUTYPE_VFP3.
2442         (fp_model_for_fpu): Add VFPv3 field.
2443         (arm_rtx_costs_1): Give cost to VFPv3 constants.
2444         (vfp3_const_double_index): New function. Return integer index of
2445         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
2446         isn't suitable.
2447         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
2448         and argument represents a valid RTX for a VFPv3 constant.
2449         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
2450         two instructions.
2451         (vfp_emit_fstmd): Similar, for fstmd.
2452         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
2453         constants, represented as integer indices.
2454         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
2455         VFP_REGNO_OK_FOR_DOUBLE macros.
2456         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
2457         (arm_file_start): Set float-abi attribute for VFPv3, and output
2458         correct ".fpu" assembler directive.
2459         (arm_dbx_register_numbering): Add FIXME.
2460         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
2461         (fputype): Add FPUTYPE_VFP3.
2462         (FIXED_REGISTERS): Add 32 registers for D16-D31.
2463         (CALL_USED_REGISTERS): Likewise.
2464         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
2465         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
2466         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
2467         (D7_VFP_REGNUM): New.
2468         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
2469         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
2470         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
2471         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
2472         (REG_ALLOC_ORDER): Adjust for VFPv3.
2473         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
2474         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
2475         VFP_LO_REGS, VFP_HI_REGS.
2476         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
2477         (IS_VFP_CLASS): Define macro.
2478         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
2479         IS_VFP_CLASS.
2480         (REGISTER_MOVE_COST): Likewise.
2481         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
2482         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
2483         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
2484         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
2485         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
2486         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
2487         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
2488         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
2489         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
2490         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
2491         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
2492         where appropriate for single-word registers.
2493         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
2494         As above. Fix type attributes.
2495         * config/arm/constraints.md (register_contraint "t"): Define.
2496         (register_constraint "w"): Change to D0-D15, or D0-D31 for
2497         VFPv3/NEON.
2498         (register_constraint "x"): Define.
2499         (constraint "Dv"): Define.
2500
2501 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
2502
2503         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
2504
2505 2007-07-03  Tom Tromey  <tromey@redhat.com>
2506
2507         * c-parser.c (objc_pq_context): Removed.
2508         (objc_need_raw_identifier): Likewise.
2509         (c_parser) <objc_pq_context>: New field.
2510         <objc_need_raw_identifier>: Likewise.
2511         (OBJC_NEED_RAW_IDENTIFIER): Removed.
2512         (c_lex_one_token): Update.
2513         (c_parser_objc_protocol_definition): Update.
2514         (c_parser_objc_method_definition): Update.
2515         (c_parser_objc_methodproto): Update.
2516         (c_parser_declspecs): Update.
2517
2518 2007-07-03  David Ung  <davidu@mips.com>
2519
2520         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
2521
2522 2007-07-03  David Ung  <davidu@mips.com>
2523             Richard Sandiford  <richard@codesourcery.com>
2524
2525         * doc/invoke.texi: Document -march=74kf3_2.
2526         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
2527         (TUNE_74K): Check for it.
2528         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
2529         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
2530         * config/mips/mips.md (cpu): Add 74kf3_2.
2531         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
2532         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
2533         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
2534         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
2535         74kf3_2 to the CPU list.
2536         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
2537         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
2538         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
2539         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
2540         (r74kf3_2_fxfer_from_c1): New insn reservations.
2541
2542 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
2543             David Ung  <davidu@mips.com>
2544
2545         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
2546         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
2547         and 74k[fx].  Document aliases for the new options.
2548         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
2549         (PROCESSOR_24KF2_1): ...this.
2550         (PROCESSOR_24KX): Rename to...
2551         (PROCESSOR_24KF1_1): ...this.
2552         (PROCESSOR_74KF): Rename to...
2553         (PROCESSOR_74KF2_1): ...this.
2554         (PROCESSOR_74KX): Rename to...
2555         (PROCESSOR_74KF1_1): ...this.
2556         (TUNE_74K): Update PROCESSOR_* names.
2557         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
2558         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
2559         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
2560         (mips_rtx_cost_data): Update processor names in comments.
2561         (mips_issue_rate): Update PROCESSOR_* names.
2562         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
2563         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
2564         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
2565         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
2566         Update cpu attribute names.
2567         (r24k_fpu_iss): Rename this reservation to...
2568         (r24kf2_1_fpu_iss): ...this and update all uses.
2569         (r24kx_fpu_iss): Rename this reservation to...
2570         (r24kf1_1_fpu_iss): ...this and update all uses.
2571         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
2572         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
2573         Update cpu attribute names.
2574
2575 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
2576
2577         * config/m32r/constraints.md: New file.
2578         * config/m32r/m32r.c: Include tm-constrs.h.
2579         (small_data_operand): Use satisfies_constraint_* instead of macro.
2580         (addr24_operand, gen_compare): Likewise.
2581         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
2582         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
2583         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
2584         EXTRA_CONSTRAINT): Likewise.
2585         * config/m32r/m32r.md: Include constraints.md.
2586         (*movsi_insn): Use satisfies_constraint_* instead of macro.
2587         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
2588         * config/m32r/predicates.md (conditional_move_operand): Likewise.
2589         (two_insn_const_operand, int8_operand, uint16_operand,
2590         reg_or_int16_operand, reg_or_uint16_operand,
2591         reg_or_cmp_int16_operand, cmp_int16_operand,
2592         seth_add3_operand): Likewise.
2593
2594 2007-07-03  Eric Christopher  <echristo@gmail.com>
2595
2596         * libgcc2.h: Conditionally declare __bswapsi2 and
2597         __bswapdi2.
2598         
2599 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
2600
2601         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
2602         defined.
2603
2604 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2605
2606         PR target/28307
2607         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
2608         (__gthrw_pragma): Provide default definition.
2609         (__gthrw2): Use it.
2610         * gthr-posix.c (__gthrw_pragma): Define.
2611
2612 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
2613
2614         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
2615         before declaring inequality.
2616
2617 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2618
2619         * combine.c (recog_for_combine): Log the success or failure of
2620           matching new insn patterns against the machine description in
2621           detailed dumps.
2622
2623 2007-07-03  Revital Eres  <eres@il.ibm.com>
2624
2625         * ddg.c (print_sccs): New function.
2626         (check_sccs): New function.
2627         (create_ddg_all_sccs): Use it.
2628         * ddg.h (print_sccs): Declare.
2629         * modulo-sched.c (sms_order_nodes): Call print_sccs.
2630
2631 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
2632
2633         * targhooks.h (default_mode_for_suffix): New function declaration.
2634         * targhooks.c (default_mode_for_suffix): New default target hook.
2635         * target.h (struct c): New structure in the targetm struct.
2636         (mode_for_suffix): New target hook as part of struct c.
2637         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
2638         default_mode_for_suffix.
2639         (TARGET_C): New define.
2640         * c-lex.c: Include "target.h".
2641         (interpret_float): Use targetm.c.mode_for_suffix to determine
2642         the mode for a given non-standard suffix.
2643         Makefile.in (c-lex.o): Depend on $(TARGET_H).
2644
2645         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
2646         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
2647
2648         * doc/extend.texi (Floating Types): New node.  Document __float80 and
2649         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
2650
2651 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
2652
2653         PR target/32506
2654         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
2655         predicate instead of target_operand.
2656         (divsi3_i1_media, divsi3_media_2): Likewise.
2657
2658 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
2659
2660         * tree.h (alias_sets_might_conflict_p): Rename into
2661         alias_sets_must_conflict_p.
2662         * alias.c (alias_sets_might_conflict_p): Likewise.
2663         (alias_sets_conflict_p): Use it.
2664         (objects_must_conflict_p): Likewise.
2665         * c-common.c (strict_aliasing_warning): Adjust.
2666
2667 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2668
2669         * rtlhooks.c (gen_lowpart_if_possible): Check for
2670         invalid subreg before calling gen_lowpart_SUBREG.
2671
2672 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
2673
2674         * config/darwin9.h: Add copyright notice.
2675         (LINK_COMMAND_SPEC): Add comment.
2676         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
2677         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
2678         DARWIN_LIBSYSTEM_HAS_UNWIND.
2679
2680 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
2681
2682         PR libgomp/32468
2683         * omp-low.c (check_combined_parallel): New function.
2684         (lower_omp_parallel): Call it via walk_stmts, set
2685         OMP_PARALLEL_COMBINED if appropriate.
2686         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
2687         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
2688         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
2689         don't consider it as combined parallel.
2690
2691 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
2692
2693         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
2694         (gcc_tooldir): Likewise.
2695         * configure: Regenerate.
2696         * Makefile.in (libsubdir_to_prefix): New variable, based on the
2697         old configure.ac gcc_tooldir setting.
2698         (prefix_to_exec_prefix): New variable.
2699         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
2700         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
2701
2702 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
2703
2704         Fix PR tree-optimization/32583
2705         Fix PR tree-optimization/32584
2706         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
2707         (phi_translate_set): Use phi_translate directly now.
2708         (make_values_for_stmt): Don't value number RHS if we already know
2709         it is constant.
2710
2711 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
2712             Jim Wilson <wilson@specifix.com>
2713
2714         PR target/31684
2715         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
2716         copy_insn.
2717
2718 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
2719             Richard Sandiford  <richard@codesourcery.com>
2720             Nigel Stephens  <nigel@mips.com>
2721
2722         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
2723         (mips16e_output_save_restore): Declare.
2724         (mips16e_save_restore_pattern_p): Likewise.
2725         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
2726         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
2727         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
2728         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
2729         (BITSET_P): New global macro, extracted from...
2730         (mips_for_each_saved_reg): ...here.
2731         (mips16e_save_restore_info): New struct.
2732         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
2733         (mips16e_save_restore_regs): New variable.
2734         (mips_split_plus, mips16e_find_first_register): New functions.
2735         (mips16e_mask_registers): New function.
2736         (compute_frame_size): Expand the commentary before the function.
2737         Enforce the MIPS16e save and restore register range restrictions.
2738         Pad the general register save area at the low end.
2739         (mips16e_save_restore_reg, mips16e_build_save_restore)
2740         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
2741         (mips16e_output_save_restore, mips16e_collect_propagate_value)
2742         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
2743         New functions.
2744         (mips_expand_prologue, mips_expand_epilogue): Handle
2745         GENERATE_MIPS16E_SAVE_RESTORE.
2746         * config/mips/mips.md (*mips16e_save_restore): New pattern.
2747
2748 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
2749
2750         PR tree-optimization/31966
2751         PR tree-optimization/32533
2752         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
2753         "basic_block" description as its third argument.  Update function
2754         calls to get destination bb from "edge" argument.  Save "cond" into
2755         aux field of the edge.  Update prototype for changed arguments.
2756         (if_convertible_loop_p): Clear aux field of incoming edges if bb
2757         contains phi node.
2758         (find_phi_replacement_condition): Operate on incoming edges, not
2759         on predecessor blocks.  If there is a condition saved in the
2760         incoming edge aux field, AND it with incoming bb predicate.
2761         Return source bb of the first edge.
2762         (clean_predicate_lists): Clean aux field of outgoing node edges.
2763         (tree_if_conversion): Do not initialize cond variable. Move
2764         variable declaration into the loop.
2765         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
2766         initializations of new_stmt, arg0 and arg1 variables.
2767
2768 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
2769
2770         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
2771         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
2772
2773 2007-07-02  Richard Guenther  <rguenther@suse.de>
2774
2775         * tree-ssa.c (useless_type_conversion_p): Document
2776         future intent as defining the middle-end type system.
2777         Re-structure to call langhook last, group by type class,
2778         mark questionable parts.
2779
2780 2007-07-02  Richard Guenther  <rguenther@suse.de>
2781
2782         * tree-flow.h (types_compatible_p): Declare.
2783         * tree-ssa.c (types_compatible_p): New function.
2784         * ipa-type-escape.c (discover_unique_type): Use
2785         types_compatible_p instead of lang_hooks.types_compatible_p.
2786         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
2787         * tree-vn.c (expressions_equal_p): Likewise.
2788         * tree.c (fields_compatible_p): Likewise.
2789         * tree-ssa-dom.c (avail_expr_eq): Likewise.
2790         (cprop_operand): Use useless_type_conversion_p instead of
2791         lang_hooks.types_compatible_p.
2792         * tree-inline.c (setup_one_parameter): Likewise.
2793         (declare_return_variable): Likewise.
2794         * tree-nrv.c (tree_nrv): Likewise.
2795         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
2796         (maybe_fold_offset_to_component_ref): Likewise.
2797         (maybe_fold_offset_to_reference): Likewise.
2798         * tree-ssa-copy.c (may_propagate_copy): Likewise.
2799         (merge_alias_info): Likewise.
2800         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
2801         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
2802         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
2803         * tree-tailcall.c (find_tail_calls): Likewise.
2804         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
2805         * gimplify.c (canonicalize_addr_expr): Likewise.
2806         (fold_indirect_ref_rhs): Likewise.
2807         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
2808         (cpt_same_type): Likewise.
2809         (check_pointer_types_r): Swap parameters to cpt_same_type
2810         where appropriate.
2811         * fold-const.c (fold_convert): Revert fix for PR15988.
2812         * tree-inline.c (setup_one_parameter): Instead fix it here by
2813         using fold_build1 instead of fold_convert and checking for
2814         error_mark_node.  Convert only if the conversion is necessary.
2815
2816 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
2817
2818         * configure.ac: Check for .gnu_attribute on Power.
2819         * configure: Regenerate.
2820         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
2821         attribute for floating-point ABI.
2822
2823 2007-07-02  Ira Rosen  <irar@il.ibm.com>
2824
2825         PR tree-optimization/32230
2826         PR tree-optimization/32477
2827         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
2828         address is a constant.
2829
2830 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
2831
2832         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
2833         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
2834         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
2835         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
2836         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
2837         64-bit targets.  Add support for *-elfoabi*.
2838         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
2839         different settings if $(tm_defines) does not select the EABI.
2840         (MULTILIB_EXCLUSIONS): Define in those circumstances.
2841         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
2842         (MIPS_ARCH_OPTION_SPEC): Likewise.
2843         (MIPS_ISA_LEVEL_SPEC): Likewise.
2844         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
2845         * config/mips/elfoabi.h: New file.
2846
2847 2007-07-02  Richard Guenther  <rguenther@suse.de>
2848
2849         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
2850         (useless_type_conversion_p): ... this.
2851         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
2852         (useless_type_conversion_p): ... this.
2853         * builtins.c (fold_builtin_memory_op): Rename
2854         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
2855         * tree-cfg.c (verify_expr): Likewise.
2856         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
2857         * tree-ssa-ccp.c (ccp_fold): Likewise.
2858         * tree-ssa-copy.c (may_propagate_copy): Likewise.
2859         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
2860         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
2861         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
2862         * tree-ssa-pre.c (eliminate): Likewise.
2863         * tree-ssa.c (delete_tree_ssa): Likewise.
2864         (tree_ssa_useless_type_conversion): Likewise.
2865         * tree.c (build2_stat): Likewise.
2866
2867 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
2868
2869         Fix PR tree-optimization/32571
2870         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
2871         simplifying them.
2872
2873 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
2874
2875         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
2876         and other expected operations explicitly, change default to
2877         gcc_unreachable. 
2878
2879 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
2880
2881         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
2882         PARALLEL.
2883         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
2884         (tls_load_dot_plus_eight): Move the label number into the unspec.
2885         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
2886
2887 2007-07-01  Andreas Schwab  <schwab@suse.de>
2888
2889         * dwarf2out.c (initial_return_save): Define only if used.
2890
2891 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
2892
2893         Unreverting Richard's Revert of:
2894
2895         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
2896
2897         * dce.c (deletable_insn_p_1): New function, split out from...
2898         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
2899         specially, not those inside PARALLELs.  Remove BODY argument
2900         and adjust recursive call accordingly.
2901         (prescan_insns_for_dce): Update call to delete_insn_p.
2902
2903 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
2904             Revital Eres  <eres@il.ibm.com>
2905
2906         * ddg.c (create_ddg_all_sccs): Fix missed
2907         initialization of scc_nodes.
2908
2909 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
2910
2911         PR middle-end/32559
2912         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
2913         X + ~X to 1 only for INTEGRAL_TYPE_P type.
2914
2915 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
2916
2917         * configure.ac: Check for .gnu_attribute on MIPS.
2918         * configure, config.in: Regenerate.
2919         * config/mips/mips.c (mips_file_start): If supported, output
2920         attribute for floating-point ABI.
2921
2922 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
2923
2924         PR target/32433
2925         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
2926         (ffs_cmove): New expander to expand using ctz pattern.
2927         (*ffs_cmove): Remove pattern.
2928         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
2929         (ffsdi2): Expand using ctz pattern.
2930         (*ffs_rex64): Remove pattern.
2931
2932 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2933
2934         PR rtl-optimization/32296
2935         * pa.md (return): Delete pattern.
2936         (return_internal): Remove "(const_int 1)" from pattern.
2937         (epilogue): Use return_internal pattern for trivial returns.
2938         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
2939         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
2940
2941 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
2942
2943         * tree-ssa-pre.c (is_exception_related): New function
2944         (can_value_number_operation): Use it.
2945
2946 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
2947         
2948         Fix PR tree-optimization/32540
2949         Fix PR tree-optimization/31651
2950
2951         * tree-ssa-sccvn.c: New file.
2952
2953         * tree-ssa-sccvn.h: Ditto.
2954         
2955         * tree-vn.c: Include tree-ssa-sccvn.h
2956         (val_expr_paid_d): Removed.
2957         (value_table): Ditto.
2958         (vn_compute): Ditto.
2959         (val_expr_pair_hash): Ditto.
2960         (val_expr_pair_expr_eq): Ditto.
2961         (copy_vuses_from_stmt): Ditto.
2962         (vn_delete): Ditto.
2963         (vn_init): Ditto.
2964         (shared_vuses_from_stmt): Ditto.
2965         (print_creation_to_file): Moved up.
2966         (sort_vuses): Ditto.
2967         (sort_vuses_heap): Ditto.
2968         (set_value_handle): Make non-static.
2969         (make_value_handle): Ditto.
2970         (vn_add): Rewritten to use sccvn lookups.
2971         (vn_add_with_vuses): Ditto.
2972         (vn_lookup): Ditto (and second argument removed).
2973         (vn_lookup_with_vuses): Ditto.
2974         (vn_lookup_or_add): Ditto (and second argument removed);
2975         (vn_lookup_or_add_with_vuses): Ditto.
2976         (vn_lookup_with_stmt): New.
2977         (vn_lookup_or_add_with_stmt): Ditto.
2978         (create_value_handle_for_expr): Ditto.
2979
2980         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
2981         (seen_during_translate): New function.
2982         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
2983         (phi_trans_add): Ditto.
2984         (constant_expr_p): FIELD_DECL is always constant.
2985         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
2986         Use constant_expr_p.
2987         Avoid infinite recursion on mutually valued expressions.
2988         Change callers of vn_lookup_or_add.
2989         (phi_translate): New function.
2990         (compute_antic_safe): Allow phi nodes.
2991         (create_component_ref_by_pieces): Update for FIELD_DECL change.
2992         (find_or_generate_expression): Rewrite slightly.
2993         (create_expression_by_pieces): Updated for vn_lookup_or_add
2994         change.
2995         Update VN_INFO for new names.
2996         (insert_into_preds_of_block): Update for new names.
2997         (add_to_exp_gen): New function.
2998         (add_to_sets): Use vn_lookup_or_add_with_stmt.
2999         (find_existing_value_expr): Rewrite to changed vn_lookup.
3000         (create_value_expr_from): Ditto, and use add_to_exp_gen.
3001         (try_look_through_load): Removed.
3002         (try_combine_conversion): Ditto.
3003         (get_sccvn_value): New function.
3004         (make_values_for_phi): Ditto.
3005         (make_values_for_stmt): Ditto.
3006         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
3007         SCCVN.
3008         (init_pre): Update for SCCVN changes.
3009         (fini_pre): Ditto.
3010         (execute_pre): Ditto.
3011
3012         * tree-flow.h (make_value_handle): Declare.
3013         (set_value_handle): Ditto.
3014         (sort_vuses_heap): Ditto.
3015         (vn_lookup_or_add_with_stmt): Ditto.
3016         (vn_lookup_with_stmt): Ditto.
3017         (vn_compute): Remove.
3018         (vn_init): Ditto.
3019         (vn_delete): Ditto.
3020         (vn_lookup): Update arguments.
3021
3022         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
3023         (tree-vn.o): Ditto.
3024         (tree-ssa-sccvn.o): New.
3025         (OBJS-common): Add tree-ssa-sccvn.o
3026         
3027 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3028
3029         PR c/4076
3030         * c-typeck.c (build_external_ref): Don't mark as used if called
3031         from itself.
3032         * calls.c (rtx_for_function_call): Likewise.
3033         
3034 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
3035
3036         Revert:
3037
3038         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
3039
3040         * dce.c (deletable_insn_p_1): New function, split out from...
3041         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
3042         specially, not those inside PARALLELs.  Remove BODY argument
3043         and adjust recursive call accordingly.
3044         (prescan_insns_for_dce): Update call to delete_insn_p.
3045
3046 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
3047
3048         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
3049         (try_combine): Move potential calls to undo_all() so they happen
3050         before we commit to using the combined insns.
3051
3052 2006-06-30  Jan Hubicka  <jh@suse.cz>
3053
3054         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
3055         code.
3056
3057 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
3058
3059         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
3060         (cgraph_remove_unreachable_nodes): Likewise.
3061         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
3062         * ipa-inline.c (update_caller_keys): Cast according to the coding
3063         conventions.
3064         (cgraph_decide_recursive_inlining): Likewise.
3065         (cgraph_decide_inlining_of_small_function): Likewise.
3066         (try_inline): Likewise.
3067         (cgraph_decide_inlining_incrementally): Likewise.
3068         * ipa-pure-const.c (get_function_state): Likewise.
3069         (scan_function): Likewise.
3070         (analyze_function): Likewise.
3071         (static_execute): Likewise.
3072         * gcc/ipa-reference.c (scan_for_static_refs): Likewise.
3073         (merge_callee_local_info): Likewise.
3074         (analyze_function): Use type safe memory macros.
3075         (static_execute): Likewise. Cast according to the coding conventions.
3076         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
3077         conventions.
3078         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
3079         names.
3080         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
3081         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
3082         variable names.
3083
3084 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3085
3086         PR middle-end/30024
3087         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
3088         for complex modes (both int and real).
3089
3090 2007-06-29  Jan Hubicka  <jh@suse.cz>
3091
3092         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
3093
3094 2007-06-29  Jan Hubicka  <jh@suse.cz>
3095
3096         PR middle-end/32372
3097         * cse.c (cse_insn): Avoid invalid sharing in between register note and
3098         the insn pattern.
3099
3100 2007-06-29  Anatoly Sokolov <aesok@post.ru>
3101
3102         PR target/32335
3103         * config/avr/avr.c: Include dataflow header file.
3104         (expand_prologue): Adjust for prologue insn change.
3105         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
3106         inside a insn.
3107
3108 2007-06-29  Richard Guenther  <rguenther@suse.de>
3109
3110         PR middle-end/32493
3111         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
3112         during type verification.
3113
3114 2007-06-29  Jan Hubicka  <jh@suse.cz>
3115
3116         * recog.c (validate_change_rtx_1): Unshare TO argument.
3117
3118 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
3119
3120         PR tree-optimization/24659
3121         * tree-vect-transform.c (vectorizable_call): Handle
3122         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
3123
3124         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
3125         * config/i386/i386.c (enum ix86_builtins)
3126         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
3127         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
3128         description.
3129         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
3130         const using def_builtin_const.
3131         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
3132         input operands in the same modes as the result.
3133         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
3134
3135 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
3136
3137         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
3138         (df_set_dead_notes_for_mw): Likewise.
3139
3140 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
3141
3142         * c-common.c (pointer_int_sum): Do the negation in sizetype.
3143
3144 2007-06-28  DJ Delorie  <dj@redhat.com>
3145
3146         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
3147
3148 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
3149
3150         * doc/invoke.texi (C++ Dialect Options): Document
3151         fvisibility-ms-compat.
3152         * c.opt (fvisibility-ms-compat): New.
3153
3154 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3155
3156         PR tree-opt/32417
3157         * tree-affine.c (aff_combination_add_elt): Handle
3158         pointer addition specially.
3159
3160 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
3161
3162         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
3163         decl is non-external for AIX ABI.
3164
3165 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
3166
3167         * config/rs6000/predicates.md (current_file_function_operand):
3168         Ensure the symbol is non-external for AIX ABI.
3169
3170 2007-06-28  Nick Clifton  <nickc@redhat.com>
3171
3172         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
3173         (fdce, fdse, fpredictive-commoning): Likewise.
3174
3175 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
3176
3177         PR other/31400
3178         * gcc.c (process_command): Recognize the new -static-libgfortran
3179         option.
3180
3181 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3182
3183         PR target/32418
3184         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
3185         Use a call clobbered hard reg instead of a pseudo reg.
3186
3187 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
3188
3189         * config/sh/sh.md (load_gbr): Use correct operand constraint.
3190
3191 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
3192
3193         PR target/32479
3194         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
3195         REG_LIBCALL and REG_RETVAL notes.
3196         (divsi3, mulsi3): Likewise.
3197         (mulhisi3): Likewise.  Use emit_libcall_block.
3198         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
3199
3200 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
3201
3202         PR rtl-optimization/32481
3203         * combine.c (adjust_for_new_dest): Rescan the changed insn.
3204
3205 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
3206
3207         * dce.c (deletable_insn_p_1): New function, split out from...
3208         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
3209         specially, not those inside PARALLELs.  Remove BODY argument
3210         and adjust recursive call accordingly.
3211         (prescan_insns_for_dce): Update call to delete_insn_p.
3212
3213 2007-06-27  Richard Guenther  <rguenther@suse.de>
3214
3215         PR middle-end/32492
3216         * tree.h (fold_convertible_p): Declare.
3217         * fold-const.c (fold_convertible_p): New function.
3218         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
3219         instead of lang_hooks.types_compatible_p.
3220
3221 2007-06-26  Jan Hubicka  <jh@suse.cz>
3222
3223         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
3224         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
3225         early use validate_unshare_change.
3226         (reload_combine): Likewise.
3227         * recog.c (change_t): New field unshare.
3228         (validate_change_1): Rename from validate_change; add argument unshare.
3229         (validate_change): Turn into wrapper of validate_change_1; update
3230         prototype for bools.
3231         (validate_unshare_change): New.
3232         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
3233         calls of df_insn_rescan.
3234         * recog.h (validate_change): Replace ints by bools.
3235         (validate_unshare_change): Declare.
3236
3237 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
3238
3239         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
3240         
3241 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
3242
3243         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
3244
3245 2007-06-25  Jan Hubicka  <jh@suse.cz>
3246
3247         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
3248         uninlinable call.
3249         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
3250         cgraph_decide_inlining_incrementally): Move uninlinability checks to
3251         places other call site specific checks are performed.
3252
3253 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3254
3255         PR tree-opt/32421
3256         * tree-vect-transform.c (vectorizable_operation): Convert
3257         POINTER_PLUS_EXPR over to PLUS_EXPR.
3258
3259 2007-06-25  Chao-ying Fu  <fu@mips.com>
3260
3261         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
3262         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
3263         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
3264         Document GET_MODE_IBIT, and GET_MODE_FBIT.
3265
3266         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
3267         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3268         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
3269         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
3270         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
3271         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
3272         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
3273         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
3274         ALL_FIXED_POINT_MODE_P): New define.
3275         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
3276         MODE_UACCUM.
3277         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
3278
3279         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
3280         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
3281         MODE_VECTOR_UACCUM): New mode classes.
3282
3283         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
3284         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
3285         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
3286         USA, UDA, and UTA.
3287
3288         * genmodes.c (struct mode_data): Add ibit and fbit fields.
3289         (blank_mode): Initialize ibit and fbit.
3290         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
3291         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
3292         MODE_UACCUM.
3293         (new_adjust): Change required_class to required_class_from and
3294         required_class_to for testing within a range.
3295         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
3296         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
3297         MODE_VECTOR_UACCUM.
3298         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
3299         (make_fixed_point_mode): New.
3300         (_ADD_ADJUST): Change C to C1 and C2.
3301         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
3302         use a range for machine classes.
3303         (ADJUST_IBIT, ADJUST_FBIT): New.
3304         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
3305         CONST_MODE_FBIT.
3306         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
3307         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3308         Emit adjustment for ibit and fbit.
3309         (emit_mode_ibit, emit_mode_fbit): New.
3310         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
3311
3312 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
3313
3314         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
3315         as the source of the set.
3316
3317 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
3318
3319         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
3320         FP_REGNO_P): Use IN_RANGE.
3321         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
3322         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
3323         (DATA_REG_P): Use DATA_REGNO_P.
3324         (FP_REG_P): Use FP_REGNO_P.
3325         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
3326         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
3327         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
3328
3329 2007-06-24  Jan Hubicka  <jh@suse.cz>
3330
3331         PR middle-end/30563
3332         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
3333
3334 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
3335
3336         PR middle-end/32461
3337         * fold-const.c (fold_binary): Strip nops of operand 0
3338         of BIT_NOT_EXPR before calling operand_equal_p.
3339         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
3340         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
3341
3342 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
3343
3344         * doc/extend.texi: Document that dllimport and dllexport imply
3345         default visibility.
3346         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
3347         imported or exported declaration, including type declarations.
3348         * c-common.c (handle_visibility_attribute): Check for conflicts
3349         with dllimport/dllexport.
3350         (c_determine_visibility): Handle dllimport/dllexport as an
3351         explicit visibility atttribute.
3352
3353 2007-06-23  Richard Guenther  <rguenther@suse.de>
3354
3355         PR tree-optimization/16876
3356         PR middle-end/29478
3357         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
3358         for CALL_EXPRs.
3359         * tree-inline.c (initialize_inlined_parameters): Do not call
3360         lang_hooks.tree_inlining.convert_parm_for_inlining.
3361         * cgraphbuild.c (initialize_inline_failed): Set inline failed
3362         reason for mismatched types.
3363         * gimplify.c (gimplify_call_expr): Verify the call expression
3364         arguments match the called function type signature.  Otherwise
3365         mark the call expression to be not considered for inlining
3366         using CALL_CANNOT_INLINE_P flag.
3367         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
3368         edges call expression.
3369         (cgraph_decide_inlining_of_small_function): Likewise.
3370         (cgraph_decide_inlining): Likewise.
3371         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
3372         Remove define.
3373         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
3374         * c-typeck.c (c_convert_parm_for_inlining): Remove.
3375         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
3376         Remove declaration.
3377         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
3378         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
3379         Remove.
3380         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
3381         convert_parm_for_inlining member.
3382
3383 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
3384
3385         PR target/31152
3386         * arm.md (negscc): Match the correct operand for optimized LT0 test.
3387         Remove optimization for GT.
3388
3389 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
3390
3391         PR middle-end/32437
3392         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
3393         is a PARALLEL.
3394         (prescan_insns_for_dce): Add extra parameter.
3395         
3396 2007-06-23  Jan Hubicka  <jh@suse.cz>
3397
3398         PR middle-end/31541
3399         * gimplify.c (mark_addressable): New function.
3400         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
3401
3402 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
3403
3404         PR middle-end/32374
3405         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
3406
3407 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
3408
3409         PR target/32413
3410         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
3411         moves between MMX/SSE registers to at least 8 units to prevent
3412         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
3413
3414 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
3415
3416         * config/i386/i386.c (override_options): Correct x86_sahf
3417         setting condition.
3418
3419 2007-06-21  David Daney  <ddaney@avtrex.com>
3420
3421         PR target/32406
3422         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
3423         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
3424         (exception_receiver): Renamed to ...
3425         (nonlocal_goto_receiver): ... this.
3426
3427 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
3428
3429         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
3430         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
3431         partial register accesses.
3432
3433 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
3434
3435         * fold-const.c (debug_fold_checksum): Move it under
3436         ENABLE_FOLD_CHECKING.
3437
3438 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
3439
3440         PR middle-end/20623
3441         * tree.h (debug_fold_checksum): Declared.
3442         * fold-const.c (build_fold_addr_expr_with_type_1): New.
3443         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
3444         build_fold_addr_expr_with_type_1.
3445         (fold_addr_expr, debug_fold_checksum): New.
3446         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
3447         (fold_unary, fold_comparison, split_address_to_core_and_offset):
3448         Use fold_addr_expr.
3449         
3450 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
3451
3452         PR tree-optimization/19590
3453         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
3454         of scev is a constant.
3455         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
3456
3457 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
3458
3459         * df-problems.c (df_note_bb_compute): Made computation of live
3460         info consistent with df_lr.
3461
3462 2007-06-21  Richard Guenther  <rguenther@suse.de>
3463
3464         PR tree-optimization/32453
3465         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
3466         for pointer anti-range.
3467
3468 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
3469
3470         * config/i386/i386.c (processor_target_table): Increase maximum
3471         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
3472         default 64bit.
3473
3474         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
3475         byte alignment if > 8 byte alignment is preferred.
3476         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
3477
3478 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
3479
3480         PR tree-optimization/31866
3481         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
3482         if ASM_EXPR's input is not a SSA_NAME.
3483
3484         PR middle-end/32362
3485         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
3486         but decl is a global var, instead return decl.
3487         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
3488         even for is_global_var decls, if they are private in some outer
3489         context.
3490
3491 2007-06-21  Richard Guenther  <rguenther@suse.de>
3492
3493         PR tree-optimization/32451
3494         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
3495
3496 2007-06-21  Christian Bruel  <christian.bruel@st.com>
3497
3498         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
3499         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
3500         (push_regs): Changed saving order or banked registers.
3501         (sh_expand_epilogue): Likewise.
3502         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
3503         (FIRST_BANKED_REG): Likewise.
3504         (LAST_BANKED_REG): Likewise.
3505         * config/sh/sh.md (banked) New attribute.
3506         (in_delay_slot): Check banked attribute.
3507         
3508 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
3509
3510         PR tree-optimization/32075
3511         * tree-data-ref.c (subscript_dependence_tester_1, 
3512         analyze_miv_subscript, analyze_overlapping_iterations,
3513         add_distance_for_zero_overlaps, build_classic_dist_vector,
3514         subscript_dependence_tester_1, analyze_overlapping_iterations,
3515         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
3516         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
3517         to evolution_function_is_affine_multivariate_p.
3518
3519 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
3520
3521         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
3522
3523 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3524
3525         PR target/32335
3526         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
3527         for TARGET_A16.
3528         * config/m32c/prologue.md (epilogue_exitd_16): New.
3529         (epilogue_reit_16): New.
3530         (epilogue_exitd): Rename to epilogue_exitd_24.
3531         (epilogue_reit): Rename to epilogue_reit_24.
3532
3533 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
3534             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
3535
3536         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
3537         New counters.
3538         * haifa-sched.c (queue_to_ready): Don't requeue next insn
3539         if dbg_cnt (sched_insn) reaches the limit.
3540         (choose_ready): New parameter INSN_PTR and new return value.
3541         (schedule_block): Handle dbg_cnt (sched_insn). Handle
3542         the new return value from choose_ready.
3543         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
3544         (rest_of_handle_global_alloc): New global_alloc_at_func.
3545
3546 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
3547
3548         PR tree-optimization/25737
3549         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
3550         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
3551         * tree-flow.h (struct fieldoff): Add new field alias_set.
3552         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
3553         argument addressable_type.  Set alias_set of fieldoff.
3554         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
3555         (create_overlap_variables_for): Pass alias_set from fieldoff to
3556         create_sft.
3557         * alias.c (get_alias_set): Use alias_set from SFT if set.
3558
3559 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
3560
3561         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
3562         of a variable as an unsigned HOST_WIDE_INT integer.
3563
3564 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
3565
3566         PR rtl-optimization/32405
3567         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
3568
3569 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
3570
3571         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
3572
3573         PR middle-end/31959
3574         * builtins.c: Include diagnostic.h.
3575         (expand_builtin_expect): Make gcc_assert more permissive.
3576         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
3577
3578         PR inline-asm/32109
3579         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
3580         and !allows_mem.
3581
3582         PR middle-end/32285
3583         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
3584         if ACCUMULATE_OUTGOING_ARGS.
3585
3586 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3587
3588         * config/m68hc11/m68hc11.c: Include dataflow header file.
3589         (m68hc11_reorg): Port to dataflow.
3590
3591 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
3592
3593         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
3594         (struct df_problem.free_blocks_on_set_blocks): New field.
3595         (struct dataflow.optional_p): New field.
3596         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
3597         (df_live_set_all_dirty): New function.
3598         * df-scan.c (df_scan_alloc): Initialize optional_p.
3599         (problem_SCAN): Initialize free_blocks_on_set_blocks.
3600         * df-core.c (df_set_blocks): Removed use of
3601         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
3602         df_problem.free_blocks_on_set_blocks to determine which blocks are
3603         recycled.
3604         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
3605         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
3606         uses dataflow.optional_p to determine if problem should be
3607         deleted.
3608         (rest_of_handle_df_initialize): Only start live problem if 
3609         -02 or above.
3610         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
3611         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
3612         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
3613         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
3614         problem_NOTE):  Initialize free_blocks_on_set_blocks.
3615         (df_lr_bb_local_compute): Recompute luids if df_live problem is
3616         not active.
3617         (df_live_set_all_dirty, df_note_alloc): New function.
3618         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
3619         df_get_live_*.
3620         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
3621         * postreload.c (reload_combine): Ditto.
3622         * cse.c (cse_extended_basic_block): Ditto.
3623         * regmove.c (mark_flags_life_zones): Ditto.
3624         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
3625         erase_matching_seqs): Ditto.
3626         * bt-load.c (compute_defs_uses_and_gen): Ditto.
3627         * integrate (allocate_initial_values): Ditto.
3628         * combine.c (reg_dead_at_p): Ditto.
3629         * resource.c (mark_target_live_regs): Ditto.
3630         * sched-rgn.c (check_live_1, update_live_1): Ditto.
3631         * config/sh/sh.c (find_r0_life_regions): Ditto.
3632         * global.c (rest_of_handle_global_alloc): Only add back df_live
3633         for -O > 1.
3634         * local-alloc.c (rest_of_handle_local_alloc): Only remove
3635         df_live for -O > 1.
3636         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
3637         df_get_live_*.
3638         (if_convert): Make sure df_live is there at -O == 1.
3639         (pass_if_after_combine): Cleanup flags.
3640         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
3641         is there at -O == 1.
3642         
3643 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
3644
3645         * config/arm/arm.c (arm_get_frame_offsets): Set
3646         offsets->locals_base to avoid negative stack size.
3647         (thumb1_expand_prologue): Assert on negative stack size.
3648
3649 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
3650
3651         PR tree-optimization/32367
3652         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
3653         of the chrec has no evolution in that loop.
3654         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
3655
3656 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
3657
3658         * config/xtensa/xtensa.c: Include "df.h".
3659         (xtensa_builtin_saveregs): Use adjust_address instead of
3660         change_address.
3661         (xtensa_va_start): Invoke make_tree with sizetype for
3662         expand_builtin_saveregs and then convert the result to a pointer.
3663         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
3664         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
3665         Subtract argument size from index value as integers and then use
3666         POINTER_PLUS_EXPR to add the result to the array address.
3667         
3668 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3669
3670         PR target/32335
3671         * config/m32c/m32c.c: Include dataflow header file.
3672         (m32c_emit_prologue): Adjust for prologue insn change.
3673         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
3674         once inside a PARALLEL. Assume frame size passed in operand 0
3675         includes space to save the fb register.
3676         (prologue_enter_24): Likewise.
3677         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
3678
3679 2007-06-19  David Daney  <ddaney@avtrex.com
3680
3681         PR target/32313
3682         * config/mips/mips.md (cprestore): Mark $gp as used.
3683
3684 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3685
3686         PR target/32369
3687         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
3688         (frv_ifcvt_modify_insn): Likewise.
3689
3690 2007-06-19  Richard Guenther  <rguenther@suse.de>
3691
3692         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
3693         only handle positive offsets that fit in a HOST_WIDE_INT.
3694
3695 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
3696
3697         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
3698         result of rsqrt insn for zero input argument to avoid NaN.
3699
3700 2007-06-19  Richard Guenther  <rguenther@suse.de>
3701
3702         PR middle-end/31950
3703         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
3704
3705 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
3706
3707         PR tree-optimization/32353
3708         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
3709
3710 2007-06-19  Nick Clifton  <nickc@redhat.com>
3711
3712         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
3713
3714 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
3715
3716         PR target/32389
3717         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
3718         * config/i386/i386.c (assign_386_stack_local): Assert that
3719         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
3720         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
3721         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
3722         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
3723
3724 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
3725
3726         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
3727
3728 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
3729
3730         PR rtl-optimization/32321
3731         * gcse.c (replace_store_insn): Update the note before
3732         calling emit_insn_after.
3733
3734 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
3735
3736         PR middle-end/32355
3737         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
3738         cse_main.
3739         * df-problems.c (df_note_bb_compute): Fix dumping info.
3740         
3741 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
3742
3743         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
3744         insn with emit_jump_insn.
3745
3746 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
3747
3748         PR tree-optimization/32383
3749         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
3750         * targhooks.h (default_builtin_reciprocal): Update prototype.
3751         * target.h (struct gcc_target): Update builtin_reciprocal.
3752         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
3753         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
3754         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
3755         when fndecl is in BUILT_IN_MD class.
3756         (execute_convert_to_rsqrt): Ditto.
3757
3758         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
3759         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
3760         Convert BUILT_IN_SQRTF code only  when md_fn is false.
3761
3762 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
3763
3764         * bt-load.c (move_btr_def): Fix the order of arguments
3765         to validate_replace_rtx.
3766
3767 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
3768
3769         * config/m68k/m68k-devices.def: Add 54450..54455.
3770
3771 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
3772
3773         PR rtl-optimization/32366
3774         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
3775         FLOAT_EXTEND]: Prevent non-scalar modes from entering
3776         significand_size.
3777
3778 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
3779
3780         PR middle-end/32349
3781         * modulo-sched (generate_reg_moves): Added rescan parameter and if
3782         this is true, rescan insn being modified.
3783         (sms_schedule): Added rescan parameter.
3784         (rest_of_handle_sms): Moved freeing of dominance info to before
3785         getting out of cfg_layout.
3786         
3787 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
3788
3789         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
3790         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
3791         appropriate.
3792
3793         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
3794         FL_CF_EMAC from the entry for isac.
3795
3796         * config/m68k/predicates.md (const_call_operand): Adjust comment.
3797         (const_sibcall_operand): New.
3798         (sibcall_operand): Use it.
3799         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
3800         (m68k_isas): ISAC does not imply FPU or EMAC.
3801         (override_options): Add ISA_C logic for symbolic jump & call.
3802
3803 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
3804
3805         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
3806         return mode from the builtin itself.
3807         (sparc_fold_builtin): Fix cast of zero constant.
3808
3809 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
3810
3811         * targhooks.c (default_builtin_reciprocal): New default target hook.
3812         * targhooks.h (default_builtin_reciprocal): Add prototype.
3813         * hooks.c (hook_tree_tree_bool_null): Remove hook.
3814         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
3815         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
3816         default_builtin_reciprocal.
3817
3818 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
3819
3820         PR middle-end/31723
3821         * hooks.c (hook_tree_tree_bool_null): New hook.
3822         * hooks.h (hook_tree_tree_bool_null): Add prototype.
3823         * tree-pass.h (pass_convert_to_rsqrt): Declare.
3824         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
3825         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
3826         and convert it to reciprocal a*rfunc(b).
3827         (execute_convert_to_rsqrt): New function.
3828         (gate_convert_to_rsqrt): New function.
3829         (pass_convert_to_rsqrt): New pass definition.
3830         * target.h (struct gcc_target): Add builtin_reciprocal.
3831         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
3832         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
3833         TARGET_BUILTIN_RECIPROCAL.
3834         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
3835
3836         * config/i386/i386.h (TARGET_RECIP): New define.
3837         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
3838         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
3839         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
3840         and not optimizing for size.
3841         (*rcpsf2_sse): New insn pattern.
3842         (*rsqrtsf2_sse): Ditto.
3843         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
3844         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
3845         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
3846         and not optimizing for size.
3847         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
3848         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
3849         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
3850         and not optimizing for size.
3851         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
3852         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
3853         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
3854         and not optimizing for size.
3855         (*sse_rsqrtv4sf2): Do not export.
3856         (sqrtv4sf2): Ditto.
3857         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
3858         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
3859         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
3860         and not optimizing for size.
3861         (sqrtv4sf2): Ditto.
3862         * config/i386/i386.opt (mrecip): New option.
3863         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
3864         (ix86_emit_swsqrtsf): Ditto.
3865         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
3866         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
3867         builtin definition.
3868         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
3869         ix86_expand_unop1_builtin.
3870         (ix86_emit_swdivsf): New function.
3871         (ix86_emit_swsqrtsf): Ditto.
3872         (ix86_builtin_reciprocal): New function.
3873         (TARGET_BUILTIN_RECIPROCAL): Use it.
3874         (ix86_vectorize_builtin_conversion): Rename from
3875         ix86_builtin_conversion.
3876         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
3877         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
3878         "i386 and x86_64 Options" section.
3879         (Intel 386 and AMD x86_64 Options): Document -mrecip.
3880
3881 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
3882             Zdenek Dvorak <dvorakz@suse.cz>
3883             Richard Guenther  <rguenther@suse.de>
3884             Kaz Kojima  <kkojima@gcc.gnu.org>
3885
3886         * tree-vrp.c (compare_values_warnv): Convert val2 to
3887         the type of val1.
3888         (extract_range_from_assert): Create
3889         POINTER_PLUS_EXPR for pointer types.
3890         (extract_range_from_binary_expr): Handle
3891         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
3892         for pointer types.
3893         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
3894         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
3895         POINTER_PLUS_EXPR as PLUS_EXPR.
3896         (number_of_iterations_lt_to_ne):
3897         For pointer types, use sizetype when
3898         creating MINUS_EXPR/PLUS_EXPRs.
3899         (assert_loop_rolls_lt): For pointer types, use sizetype when
3900         creating MINUS_EXPR/PLUS_EXPRs.
3901         (number_of_iterations_le): Likewise.
3902         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
3903         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
3904         like PLUS_EXPR and MINUS_EXPR.
3905         * tree-pretty-print.c (dump_generic_node): Handle
3906         POINTER_PLUS_EXPR.
3907         (op_prio): Likewise.
3908         (op_symbol_1): Likewise.
3909         * optabs.c (optab_for_tree_code): Likewise.
3910         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
3911         specially.
3912         * tree-tailcall.c (process_assignment): Mention
3913         POINTER_PLUS_EXPR in a TODO comment.
3914         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
3915         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
3916         not used with a pointer and an integer type.
3917         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
3918         increment using chrec_convert_rhs instead of chrec_convert.
3919         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
3920         PLUS_EXPR except for the right hand side's type will be
3921         sizetype.
3922         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
3923         (fold_used_pointer_cast): Kill.
3924         (pointer_offset_p): Kill.
3925         (fold_used_pointer): Kill.
3926         (pointer_used_p): Kill.
3927         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
3928         call fold_used_pointer.
3929         (instantiate_parameters_1): Convert the increment
3930         using chrec_convert_rhs instead of chrec_convert.
3931         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
3932         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
3933         instead of PLUS_EXPR.
3934         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
3935         PLUS_EXPR for pointers.
3936         (std_gimplify_va_arg_expr): Likewise.
3937         (fold_builtin_memory_op): Likewise.
3938         (fold_builtin_strstr): Likewise.
3939         (fold_builtin_strchr): Likewise.
3940         (fold_builtin_strrchr): Likewise.
3941         (fold_builtin_strpbrk): Likewise.
3942         (expand_builtin_memory_chk): Likewise.
3943         (fold_builtin_memory_chk): Likewise.
3944         (std_expand_builtin_va_start): Use
3945         sizetype for the call to make_tree and then convert
3946         to the pointer type.
3947         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
3948         instead of PLUS_EXPR for adding to a pointer.
3949         (std_gimplify_va_arg_expr): Use fold_build2 for
3950         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
3951         the operands to sizetype first and then cast the BIT_AND_EXPR
3952         back to the pointer type.
3953         * fold-const.c (build_range_check): Handle pointer types
3954         specially.
3955         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
3956         of PLUS_EXPR's. Make sure the offset is converted to
3957         sizetype.
3958         (try_move_mult_to_index): Strip the NOPs from the offset.
3959         Remove code argument and replace all uses with PLUS_EXPR.
3960         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
3961         specially. Don't use a pointer type for MINUS_EXPR.
3962         (fold_unary): Handle for (T1)(X op Y),
3963         only p+ as that is the only as that can be handled for
3964         binary operators now.
3965         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
3966         POINTER_PLUS_EXPR.
3967         <case PLUS_EXPR>: Add folding of PTR+INT into
3968         PTR p+ INT.
3969         Don't call try_move_mult_to_index.
3970         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
3971         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
3972         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
3973         Don't call try_move_mult_to_index.
3974         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
3975         (tree_expr_nonzero_p): Likewise.
3976         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
3977         of PLUS_EXPR for the complex expression folding.
3978         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
3979         first chrec is a pointer type, then the second should
3980         be sizetype and not the first's type.
3981         For POINTER_PLUS_EXPR, use a different right hand side type.
3982         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
3983         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
3984         different right hand side type.
3985         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
3986         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
3987         instead of PLUS_EXPR.
3988         When either operand is zero, convert the other operand.
3989         (chrec_apply): Use chrec_convert_rhs
3990         on the argument x instead of chrec_convert.
3991         (reset_evolution_in_loop): For pointer types, the new_evol
3992         should be sizetype.
3993         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
3994         different right hand side type.
3995         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
3996         (chrec_convert_rhs): New function.
3997         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
3998         different right hand side type.
3999         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
4000         * tree-chrec.h (chrec_convert_rhs): New prototype.
4001         (build_polynomial_chrec): For pointer types, the right hand
4002         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
4003         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
4004         Remove subtraction case as it is always addition now.
4005         Make sure the offset is converted to sizetype.
4006         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
4007         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
4008         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
4009         PLUS_EXPR in pointer type.
4010         Handle POINTER_PLUS_EXPR.
4011         (tree_to_aff_combination): Likewise.
4012         (force_expr_to_var_cost): Likewise.
4013         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
4014         instead of PLUS_EXPR for pointers.
4015         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
4016         instead of PLUS_EXPR of pointer types.
4017         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
4018         as PLUS_EXPR.
4019         (check_va_list_escapes): Likewise.
4020         (check_all_va_list_escapes): Likewise.
4021         * dwarf2out.c (loc_descriptor_from_tree_1):
4022         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
4023         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
4024         (string_constant): Likewise.
4025         * tree-ssa-address.c (tree_mem_ref_addr): When adding
4026         the offset to the base, use POINTER_PLUS_EXPR.
4027         (add_to_parts): Convert the index to sizetype.
4028         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
4029         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
4030         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
4031         Offset only holds something for PLUS_EXPR.
4032         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
4033         a PLUS_EXPR.
4034         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
4035         and not PLUS_EXPR.
4036         (analyze_accesses_for_modify_stmt): Likewise.
4037         Remove comment about the type being integral type as it is
4038         wrong now.
4039         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
4040         PLUS_EXPR.
4041         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
4042         and not PLUS_EXPR.
4043         Correct the type which the artimentic is done in (is now
4044         sizetype).
4045         Reindent one loop.
4046         * tree-data-ref.c (split_constant_offset): Handle
4047         POINTER_PLUS_EXPR
4048         * tree-affine.c (tree_to_aff_combination): Likewise.
4049         * c-typeck.c (build_unary_op): For pointers create the increment
4050         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
4051         for pointers.
4052         * gimplify.c (gimplify_self_mod_expr): Create a
4053         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
4054         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
4055         * tree.def (POINTER_PLUS_EXPR): New tree code.
4056         * tree-predcom.c (ref_at_iteration): If we have a pointer
4057         type do the multiplication in sizetype.
4058         * tree-mudflap.c (mf_xform_derefs_1): Create a
4059         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
4060         * tree-ssa-forwprop.c 
4061         (forward_propagate_addr_into_variable_array_index):
4062         Don't expect there to be a cast for the index as that
4063         does not exist anymore.
4064         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
4065         instead of PLUS_EXPR.
4066         Don't check for the first operand of the POINTER_PLUS_EXPR
4067         was the index as it cannot be.
4068         Call forward_propagate_addr_into_variable_array_index with
4069         the SSA_NAME instead of the statement.
4070         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
4071         (compare_constant): Likewise.
4072         (copy_constant): Likewise.
4073         (compute_reloc_for_constant): Likewise.
4074         (output_addressed_constants): Likewise.
4075         (initializer_constant_valid_p): Likewise.
4076         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
4077         Convert the MIN/MAX of the inner type to the outer
4078         type before comparing them.
4079         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
4080         POINTER_PLUS_EXPR instead of PLUS_EXPR.
4081         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
4082         of PLUS_EXPR for pointers.
4083         * tree-inline.c (estimate_num_insns_1): Handle
4084         POINTER_PLUS_EXPR.
4085         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
4086         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
4087         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
4088         instead of PLUS_EXPR for the pointer increment statement.
4089         (vect_update_ivs_after_vectorizer): For pointer types, create
4090         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
4091         MULT_EXPR in sizetype.
4092         (vect_gen_niters_for_prolog_loop): Add a cast when creating
4093         byte_misalign.
4094         * tree-object-size.c (plus_expr_object_size): Handle
4095         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
4096         code which is trying to figure out which side is a pointer and 
4097         is the index.
4098         (check_for_plus_in_loops_1): Likewise.
4099         (check_for_plus_in_loops): Likewise.
4100         * c-common.c (pointer_int_sum): Create a
4101         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
4102         * tree-ssa-structalias.c (handle_ptr_arith): Handle
4103         only POINTER_PLUS_EXPR.  Removing all the extra
4104         code which is trying to figure out which side is a pointer and 
4105         is the index.
4106         * tree-cfg.c (verify_expr): Add extra checking for pointers and
4107         PLUS_EXPR and MINUS_EXPR.
4108         Also add checking to make sure the operands of POINTER_PLUS_EXPR
4109         are correct.
4110         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
4111         with make_tree, instead of a pointer type.
4112         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
4113         for pointers instead of PLUS_EXPR.
4114         (s390_gimplify_va_arg): Likewise.
4115         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
4116         instead of PLUS_EXPR when doing addition on pointer
4117         types.  Use sizetype for the second operand.
4118         (spu_gimplify_va_arg_expr): Likewise.
4119         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
4120         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
4121         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
4122         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
4123         for the pointer addition and also use size_int/sizetype
4124         for the offset.
4125         (ix86_gimplify_va_arg): Likewise.
4126         Perform BIT_AND_EXPR on sizetype arguments.
4127         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
4128         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
4129         for the pointer additions and also use size_int for the offsets.
4130         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
4131         additions and also use size_int for the offsets.  Perform
4132         BIT_AND_EXPR on sizetype arguments.
4133         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
4134         POINTER_PLUS_EXPR for pointers and create the
4135         BIT_AND_EXPR in sizetype.
4136         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
4137         instead of PLUS_EXPR for pointer addition.
4138         (rs6000_va_start): Likewise.
4139         Also use sizetype for the offset.
4140         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
4141         as PLUS_EXPR/MINUS_EXPR.
4142         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
4143         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
4144         Don't use BIT_AND_EXPR on a pointer type, convert the
4145         expression to sizetype first.
4146         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
4147         for pointers.
4148         (mips_gimplify_va_arg_expr): Likewise.
4149         Don't create BIT_AND_EXPR in a pointer type.
4150
4151 2007-06-15  Eric Christopher  <echristo@apple.com>
4152
4153         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
4154         (x86_64-*-darwin*): Ditto.
4155         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
4156         for above.
4157
4158 2007-06-15  Matthew Wilcox <matthew@wil.cx>
4159
4160         * doc/extend.texi: Document behavior of __attribute__((aligned))
4161         on typedefs.
4162
4163 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
4164
4165         * rtlanal.c (note_stores): Improve documentation.
4166
4167 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
4168
4169         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
4170         LOCAL_LABEL_PREFIX): Delete.
4171         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
4172         (bfin_internal_label): Delete.
4173
4174 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
4175
4176         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
4177         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
4178         otherwise define to LIBGCC2_TF_CEXT.
4179         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
4180         (LIBGCC_TF_CEXT): Ditto.
4181         (TF_SIZE): Ditto.
4182
4183 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
4184
4185         PR rtl-optimization/32339
4186         * df-scan.c (df_uses_record): Don't modify flags but just add to
4187         it for df_ref_record.
4188
4189 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4190
4191         * tree-mudflap.c: Fix whitespace issues.
4192
4193 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
4194
4195         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
4196
4197 2007-06-14  Eric Christopher  <echristo@apple.com>
4198
4199         * config/i386/sse.md (movdi_to_sse): Rewrite body.
4200         (movv4sf): Use gcc_unreachable instead of abort.
4201
4202 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
4203
4204         PR target/32268
4205         * config/i386/sfp-machine.h (CMPtype): New define.
4206         (mach stubs): Use CMPtype instead of int as a return type.
4207
4208 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
4209
4210         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
4211         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
4212         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
4213         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
4214         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
4215         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
4216         config/soft-fp/soft-fp.h: Update from glibc CVS.
4217
4218 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
4219
4220         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
4221
4222 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
4223
4224         PR target/32341
4225         * config/v850/v850.c: Include dataflow header file.
4226         (substitute_ep_register): Fix typo.
4227
4228 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
4229
4230         * configure.ac: Fix earlier checkin.
4231         * configure: Regenerated.
4232
4233 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
4234
4235         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
4236         * aclocal.m4: Regenerate.
4237         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
4238         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
4239         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
4240         * configure: Regenerate.
4241         * Makefile.in (LOOSE_WARN): Subst loose_warn.
4242
4243         * Makefile.in (quickstrap): Build libgcc too.
4244
4245 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
4246
4247         * configure.ac: Add --enable-checking=df.  Explicitly mention that
4248         the variables are initialized as for "release".
4249         * df-core.c: Use it.
4250         * configure: Regenerate.
4251         * config.in: Regenerate.
4252
4253 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
4254
4255         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
4256         validate_replace_rtx instead of replace_rtx.
4257         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
4258
4259 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
4260
4261         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
4262         (DWARF2_UNWIND_INFO): Override default if configured with
4263         SJLJ EH disabled.
4264         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
4265         (ENDFILE_SPEC): Add crtend.o.
4266         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
4267         (ENDFILE_SPEC): Add crtend.o.
4268         (TARGET_USE_JCR_SECTION): Define.
4269         (MD_UNWIND_SUPPORT): Define for 32-bit target.
4270
4271         * config/i386/cygming-crtbegin.c: New file.
4272         * config/i386/cygming-crtend.c: New file.
4273
4274 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
4275
4276         * config/i386/w32-unwind.h: New file.
4277
4278 2007-06-13  Eric Christopher  <echristo@apple.com>
4279
4280         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
4281         the user set a value below STACK_BOUNDARY.
4282
4283 2007-06-13  Thiemo Seufer  <ths@networkno.de>
4284
4285         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
4286         imply -lpthread for -pthread.
4287
4288 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
4289
4290         * basic-block.h: Remove the prototype for
4291         free_basic_block_vars.
4292         * cfglayout.h: Remove the prototype for
4293         insn_locators_initialize.
4294         * tree.h: Remove the prototype for emit_line_note.
4295
4296         * tree-ssa-pre.c (mergephitemp): Remove.
4297         (init_pre): Don't use mergephitemp.
4298
4299 2007-06-13  Eric Christopher  <echristo@apple.com>
4300
4301         * config/i386/i386.c (override_options): If we've specified
4302         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
4303
4304 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
4305
4306         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
4307         is defined.
4308
4309 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
4310
4311         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
4312         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
4313         (eh_store_handler): New pattern.
4314         (eh_return): Emit it instead of a plain move.
4315
4316 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
4317
4318         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
4319         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
4320         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
4321         def_builtin_const.
4322
4323 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
4324
4325         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
4326         (find_next_insn_start, find_load): New functions.
4327         (bfin_reorg): Use them to deal with the fact that parallel insns are
4328         no longer represented as a SEQUENCE.
4329
4330 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
4331
4332         * config/sparc/sparc.c (sparc_override_options): Initialize
4333         fpu mask correctly.
4334
4335 2007-06-13  Dave Korn  <dave.korn@artimi.com>
4336
4337         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
4338         df_get_live_out.
4339
4340 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
4341
4342         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
4343         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
4344         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
4345         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
4346         tree-vect-transform.c: Fix comment typos.  Follow spelling
4347         conventions.
4348
4349 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
4350
4351        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
4352        to the exit block use set.
4353        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
4354        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
4355        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
4356
4357 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
4358
4359         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
4360         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
4361         to indicate an error.
4362         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
4363         New functions.
4364         (dbg_cnt_process_opt): Print an error on a bad argument.
4365         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
4366         * common.opt (-fdbg-cnt-list): New.
4367         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
4368
4369 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
4370
4371         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
4372         flag on ref-all pointers.
4373
4374 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4375
4376         PR middle-end/31579
4377         * expr.c (expand_expr_addr_expr_1): Call expand_expr
4378         for the offset with the modifier as EXPAND_INITIALIZER
4379         if the modifier is EXPAND_INITIALIZER.
4380         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
4381         a register if we had an overflow.
4382
4383 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4384
4385         * real.c (real_isfinite): New.
4386         (real_sqrt): Use it.
4387         * real.h (real_isfinite): New.
4388         * builtins.c: Use it.
4389
4390 2007-06-12  Ian Lance Taylor  <iant@google.com>
4391             Daniel Berlin  <dberlin@dberlin.org>
4392
4393         PR libstdc++/29286
4394         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
4395         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
4396         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
4397         (DECL_NO_TBAA_P): Define.
4398         (struct tree_decl_common): Add no_tbaa_flag field.
4399         * tree-ssa-structalias.c (struct variable_info): Add
4400         no_tbaa_pruning field.
4401         (new_var_info): Initialize no_tbaa_pruning field.
4402         (unify_nodes): Copy no_tbaa_pruning field.
4403         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
4404         (dump_solution_for_var): Print no_tbaa_pruning flag.
4405         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
4406         callers.
4407         (compute_tbaa_pruning): New static function.
4408         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
4409         Call compute_tbaa_pruning.
4410         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
4411         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
4412         * gimple-low.c (lower_stmt): Likewise.
4413         * tree-gimple.c (is_gimple_stmt): Likewise.
4414         * tree-ssa-operands.c (get_expr_operands): Likewise.
4415         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
4416         * tree-inline.c (estimate_num_insns_1): Likewise.
4417         (copy_result_decl_to_var): Likewise.
4418         * expr.c (expand_expr_real_1): Likewise.
4419         * tree-pretty-print.c (dump_generic_node): Likewise.
4420         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
4421         * omp-low.c (omp_copy_decl_2): Likewise.
4422         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
4423         * doc/c-tree.texi (Expression trees): Document
4424         CHANGE_DYNAMIC_TYPE_EXPR.
4425
4426 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4427
4428         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
4429         with !HONOR_NANS and !HONOR_INFINITIES.
4430         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
4431
4432 2007-06-12  Tristan Gingold  <gingold@adacore.com>
4433
4434         * gcov.c: Comments updated.
4435         (source_info): Add file_time field.
4436         (source_index): New variable.
4437         (mutiple_files): New variable.
4438         (generate_results): New function extracted from process_file.
4439         (process_file): Save and restore chain of functions, generate
4440         results and free structures only if not merging results.
4441         (release_structures): File names are now freed in create_file_names
4442         (create_file_names): Free previous file names.
4443         (find_source): File date is now read here and modifications in
4444         source files is checked here.
4445         (read_graph_file): Only reverse order of functions for the current
4446         object file.
4447         (make_gcov_file_name): Do not generate long names if input_name is
4448         NULL.
4449         (output_lines): If merging results do not display graph, data and
4450         runs informations.
4451         Checking source file modification is done in find_source.
4452
4453         * doc/gcov.texi: Append an s to sourcefile.
4454
4455 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
4456
4457         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
4458         (forced_nop): New pattern.
4459         * config/bfin/bfin.c: Include "df.h".
4460         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
4461         (bfin_discover_loop): Use df_get_live_in instead of
4462         global_live_at_start.
4463         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
4464         df_analyze when done.
4465         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
4466         the insns.  Use QImode for the final insn in a bundle.  Call
4467         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
4468         gen_nop.
4469         (reorder_var_tracking_notes): New function.
4470         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
4471         update_life_info.  Call df_analyze after scheduling and bundle
4472         generation.  Call reorder_var_tracking_notes if generating these
4473         notes.  Call df_finish_pass at the end.
4474
4475 2007-06-12  Dirk Mueller  <dmueller@suse.de>
4476
4477         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
4478         a comparison, not an assignment.
4479
4480 2007-06-12  Olivier Hainque  <hainque@adacore.com>
4481
4482         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
4483         Request walking the subtrees only, leaving the current is_lhs/val_only
4484         untouched.
4485         (convert_non_local_reference): Likewise.
4486
4487 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
4488
4489         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
4490
4491 2007-06-12  Richard Guenther  <rguenther@suse.de>
4492
4493         PR tree-optimization/15353
4494         PR tree-optimization/31657
4495         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
4496         * timevar.def: Add TV_TREE_IFCOMBINE.
4497         * tree-pass.h (pass_tree_ifcombine): Declare.
4498         * tree-ssa-ifcombine.c: New file.
4499         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
4500         * tree-flow.h (blocks_in_phiopt_order): Declare.
4501         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
4502         (tree-ssa-ifcombine.o): New dependencies.
4503
4504 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
4505
4506         PR rtl-optimization/32293
4507         * combine.c (simplify_if_then_else): Truncate return from
4508         nonzero_bits() to correct mode.
4509
4510 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
4511
4512         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
4513         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
4514
4515 2007-06-11  Diego Novillo  <dnovillo@google.com>
4516
4517         * Makefile.in (reload1.o-warn): Remove.
4518
4519 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
4520
4521         * combine.c (subst): Use reg_overlap_mentioned_p
4522         instead of comparing register numbers directly.
4523
4524 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
4525
4526         * reload1.c (mark_home_live_1): Use the mode parameter.
4527
4528 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
4529
4530         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
4531         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
4532         word "deferred".
4533         * df-core.c: Ditto.
4534
4535 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
4536
4537         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
4538
4539 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
4540
4541         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
4542         from integer registers.
4543         (FP mode splitters): Handle TFmode.
4544
4545 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
4546
4547         * tree-ssa-structalias.c (find_what_p_points_to): Return false
4548         for ref-all pointers that point-to anything.
4549
4550 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
4551
4552         * config/arm/arm.c (arm_output_dwarf_dtprel,
4553         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
4554
4555 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
4556
4557         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
4558         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
4559         to memory moves.
4560
4561 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
4562
4563         * gcc/tree.c (signed_or_unsigned_type_for): New.
4564         (unsigned_type_for): Use signed_or_unsigned_type_for.
4565         (signed_type_for): Use signed_or_unsigned_type_for.
4566         * gcc/tree.h (signed_or_unsigned_type_for): New.
4567         (get_signed_or_unsigned_type): Remove.
4568         * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
4569         lang_hooks.types.signed_type
4570         (size_diffop): Likewise.
4571         (all_ones_mask_p): Likewise.
4572         (build_range_check): Likewise.
4573         (fold_cond_expr_with_comparison): Likewise.
4574         (fold_cond_expr_with_comparison): Likewise.
4575         (unextend): Likewise.
4576         (extract_muldiv_1): Likewise.
4577         (fold_single_bit_test_into_sign_test): Likewise.
4578         (fold_binary): Likewise.
4579         (fold_ternary): Likewise.
4580         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
4581         instead of get_signed_or_unsigned_type.
4582         * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
4583         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
4584         * gcc/expr.c (signed_or_unsigned_type_for): Use
4585         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
4586         * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
4587         (lhd_signed_or_unsigned_type): Remove.
4588         * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
4589         signed_or_unsigned_type.
4590         (lhd_signed_or_unsigned_type): Remove.
4591         * gcc/expmed.c (make_tree): Use signed_type_for instead of
4592         lang_hooks.types.signed_type.
4593         * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
4594         c_common_signed_type instead of lang_hooks.types.signed_type.
4595         (c_common_unsigned_type): New.
4596         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
4597         (shorten_compare): Use c_common_unsigned_type instead of
4598         c_common_signed_or_unsigned_type.
4599         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
4600         unsigned_type_for.
4601         * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
4602         lang_hooks.types.signed_type.
4603         * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
4604         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
4605         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
4606         * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
4607         instead of unsigned_type_for.
4608         * gcc/c-decl.c (groakdeclarator): Likewise.
4609         * gcc/c-typeck.c (convert_for_assignment): Likewise.
4610         * gcc/c-common.h (c_common_unsigned_type): New.
4611
4612 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
4613
4614         PR target/32280
4615         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
4616         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
4617
4618 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
4619
4620         PR middle-end/32279
4621         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
4622         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
4623
4624 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
4625             Sebastian Pop  <sebpop@gmail.com>
4626
4627         * lambda-code.c (remove_iv): New.
4628         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
4629
4630 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
4631
4632         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
4633         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
4634         * tree-ssa-loop-prefetch.c: Include optabs.h.
4635         (FENCE_FOLLOWING_MOVNT): New macro.
4636         (struct mem_ref): Add independent_p and storent_p fields.
4637         (record_ref): Initalize the new fields.
4638         (gather_memory_references_ref): Return true if the reference
4639         could be analysed.
4640         (gather_memory_references): Check whether all memory accesses
4641         in loop were recorded.
4642         (should_issue_prefetch_p): Return false for nontemporal stores.
4643         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
4644         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
4645         (determine_loop_nest_reuse): Detect independent memory references.
4646         (loop_prefetch_arrays): Call mark_nontemporal_stores.
4647         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
4648         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
4649         * config/i386/i386.h (x86_mfence): Declare.
4650         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
4651         * config/i386/i386.c (x86_mfence): New variable.
4652         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
4653
4654         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
4655         * optabs.c (init_optabs): Initialize storent_optab.
4656         * optabs.h (enum optab_index): Add OTI_storent.
4657         (storent_optab): Declare.
4658         * genopinit.c (optabs): Add initialization for storent_optab.
4659         * tree.h (MOVE_NONTEMPORAL): New macro.
4660         * expr.c (expand_assignment, store_expr, store_constructor_field,
4661         store_constructor, store_field, expand_expr_real_1): Propagate
4662         nontemporality of the expanded store.
4663         (emit_storent_insn): New function.
4664         * expr.h (expand_assignment, store_expr): Declaration changed.
4665         * function.c (assign_parm_setup_reg): Pass false as nontemporality
4666         to expand_assignment.
4667         * stmt.c (expand_asm_expr): Ditto.
4668         * calls.c (initialize_argument_information): Pass false as
4669         nontemporality to store_expr.
4670         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
4671         storentsi): New.
4672
4673 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
4674
4675         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
4676         parameter, use it.
4677         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
4678
4679 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
4680
4681         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
4682         and allow DECL_P here.
4683
4684 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
4685
4686         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
4687         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
4688         track of the size of the expression.
4689         * cfghooks.c (merge_blocks): Remove block from loops structure only
4690         after call of the merge_blocks hook.
4691
4692 2007-06-09  Tom Tromey  <tromey@redhat.com>
4693
4694         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
4695         (deprecated_state): Removed.
4696         (start_decl): Update.
4697         (enum deprecated_states): Moved earlier.
4698         (groktypename): Update.
4699         (push_parm_decl): Likewise.
4700         (grokfield): Likewise.
4701         (start_function): Likewise.
4702
4703 2007-06-09  Ian Lance Taylor  <iant@google.com>
4704
4705         PR tree-optimization/32169
4706         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
4707         CONVERT_EXPR, check whether min and max both converted to an
4708         overflow infinity representation.
4709
4710 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
4711
4712         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
4713         not inserted on the edge.
4714
4715 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
4716
4717         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
4718         instructions if they are supported.
4719         (__divsi3, __umodsi3, __modsi3): Likewise.
4720         (__ashldi3, __ashrdi3, __lshrdi3): New.
4721         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
4722
4723 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
4724             Tony Linthicum <tony.linthicum@amd.com>
4725
4726         * doc/invoke.texi: Add fvect-cost-model flag.
4727         * common.opt (fvect-cost-model): New flag.
4728         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
4729         cost fields in stmt_vec_info struct for STMT.
4730         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
4731         fields in stmt_vec_info struct and access functions for the same.
4732         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
4733         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
4734         load, store and vector to scalar operation.
4735         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
4736         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
4737         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
4738         (TARG_VEC_STORE_COST): Define cost of vector store.
4739         (vect_estimate_min_profitable_iters): Define new function.
4740         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
4741         check to evaluate if loop iterations are less than minimum profitable
4742         iterations determined by cost model or minimum vect loop bound defined
4743         by user, whichever is more conservative.
4744         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
4745         run-time check to evaluate if loop iterations are less than minimum
4746         profitable iterations determined by cost model or minimum vect loop
4747         bound defined by user, whichever is more conservative.
4748         (vect_estimate_min_profitable_iterations): New function to estimate
4749         mimimimum iterartions required for vector version of loop to be
4750         profitable over scalar version.
4751         (vect_model_reduction_cost): New function.
4752         (vect_model_induction_cost): New function.
4753         (vect_model_simple_cost): New function.
4754         (vect_cost_strided_group_size): New function.
4755         (vect_model_store_cost): New function.
4756         (vect_model_load_cost): New function.
4757         (vectorizable_reduction): Call vect_model_reduction_cost during
4758         analysis phase.
4759         (vectorizable_induction): Call vect_model_induction_cost during
4760         analysis phase.
4761         (vectorizable_load): Call vect_model_load_cost during analysis phase.
4762         (vectorizable_store): Call vect_model_store_cost during analysis phase.
4763         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
4764         vectorizable_promotion, vectorizable_demotion): Call
4765         vect_model_simple_cost during analysis phase.
4766
4767 2007-06-08  Simon Baldwin  <simonb@google.com>
4768
4769         * reg-stack.c (get_true_reg): Readability change.  Moved default case
4770         label into direct switch statement scope.
4771
4772 2007-06-08  Simon Baldwin  <simonb@google.com>
4773
4774         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
4775         in gcc_assert() with '==' comparison.
4776
4777 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
4778
4779         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
4780         TARGET_ABM handling of x86_popcnt variable.
4781
4782 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
4783
4784         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
4785         __builtin_copysignq and __builtin_infq built-in functions.
4786
4787 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
4788
4789         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
4790         SSE4.2 section.  Correct built-in function names in SSE4A section.
4791
4792 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
4793
4794         PR tree-optimization/32243
4795         * tree-vect-transform.c (vectorizable_type_promotion): Move check
4796         for ncopies after ratio check between nunits_out and nunits_in.
4797         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
4798
4799 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
4800
4801         PR tree-optimization/32224
4802         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
4803         vectorization upon a non GIMPLE_MODIFY_STMT.
4804
4805 2007-06-08  Christian Bruel  <christian.bruel@st.com>
4806
4807         PR target/29953
4808         * config/sh/sh.md (doloop_end): New pattern and splitter.
4809         * loop-iv.c (simple_rhs_p): Check for hardware registers.
4810
4811 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
4812
4813         PR middle-end/32209
4814         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
4815         functions.
4816         (verify_dominators): Do not change dominance tree.
4817
4818 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
4819
4820         * config/sh/constraints.md: New file.
4821         * config/sh/sh.c: Include tm-constrs.h.
4822         (reg_class_from_letter): Remove.
4823         (prepare_cbranch_operands): Use satisfies_constraint_*
4824         function instead of macro.
4825         (andcosts, broken_move, sh_secondary_reload): Likewise.
4826         * config/sh/predicates.md (trapping_target_operand): Likewise.
4827         (and_operand, arith_operand, arith_reg_or_0_operand,
4828         cmp_operand, logical_operand, target_operand,
4829         ua_address_operand, ua_offset, xor_operand): Likewise.
4830         * config/sh/sh.md: Include constraints.md.
4831         (*movsicc_t_false): Use satisfies_constraint_* function
4832         instead of macro.
4833         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
4834         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
4835         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
4836         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
4837         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
4838         (REG_CLASS_FROM_CONSTRAINT): Remove.
4839         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
4840         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
4841         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
4842         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
4843         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
4844         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
4845         function instead of macro.
4846         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
4847         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
4848         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
4849         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
4850         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
4851         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
4852         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
4853         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
4854         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
4855         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
4856         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
4857         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
4858         EXTRA_CONSTRAINT_STR): Likewise.
4859         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
4860
4861 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
4862
4863         * config/i386/darwin.h (STACK_BOUNDARY): Define.
4864
4865 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
4866
4867         PR c++/30759
4868         * c-common.h (flag_cpp0x): Replaced by...
4869         (cxx_dialect): ... this new variable specifying the C++ dialect that
4870         is used.
4871         * c-common.c (flag_cpp0x): Removed.
4872         (cxx_dialect): Defined.
4873         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
4874         cxx_dialect.
4875         * c-opts.c (c_common_post_options): Likewise.
4876         (set_std_cxx98): Set cxx_dialect to cxx98.
4877         (set_std_cxx0x): Set cxx_dialect to cxx0x.
4878
4879 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
4880             Hui-May Chang <hm.chang@apple.com>
4881
4882         * doc/invoke.texi (Darwin Options): Update documentation for
4883         -mmacosx-version-min.
4884         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
4885         * config/darwin-driver.c: New file.
4886         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
4887         * config/t-darwin (darwin-driver.o): New rule.
4888
4889         * config/darwin-c.c (version_as_macro): Ignore low digit.
4890
4891 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
4892
4893         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
4894         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
4895         (CSGNMODE): New mode macro.
4896         (CSGNVMODE): New mode attribute.
4897         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
4898         expander using CSGNMODE mode macro.  Handle TFmode.
4899         (copysign<mode>3_const): Rename from copysignsf3_const and
4900         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
4901         Handle TFmode.
4902         (copysign<mode>3_var): Rename from copysignsf3_var and
4903         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
4904         Handle TFmode.
4905         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
4906         mode macro.  Handle TFmode.
4907         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
4908         (iortf3, *iortf3): Ditto.
4909         (xortf3, *xortf3): Ditto.
4910         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
4911         TFmode and TImode masks.
4912         (ix86_expand_copysign): Expand TFmode copysign insn.
4913         (IX86_BUILTIN_INFQ): New.
4914         (IX86_BUILTIN_FABSQ): Ditto.
4915         (IX86_BUILTIN_COPYSIGNQ): Ditto.
4916         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
4917         [__builtin_fabsq]: Ditto.
4918         [__builtin_copysignq]: Ditto.
4919         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
4920         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
4921         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
4922         ix86_expand_binop_builtin().
4923
4924 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
4925
4926         * config/xtensa/lib1funcs.asm: Clean up whitespace.
4927
4928 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
4929
4930         PR target/31850
4931         * rtl.h (push_to_sequence2): New.
4932         * emit-rtl.c (push_to_sequence2): New.
4933         * function.c (assign_parm_data_all): Add new fields.
4934         (assign_parm_setup_block): Call push_to_sequence2 instead of
4935         push_to_sequence.
4936         (assign_parm_setup_reg): Ditto.
4937         (assign_parm_setup_stack): Ditto.
4938         (assign_parms_unsplit_complex): Ditto.
4939         (assign_parms): Change field name.
4940
4941 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
4942
4943         PR tree-optimization/32220
4944         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
4945         phi node is reached before defining statement.
4946
4947 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4948
4949         PR tree-opt/32231
4950         * tree-vect-transform.c (vectorizable_call): Call update_stmt
4951         after changing the right hand side of the assignment.
4952
4953 2007-06-06  Eric Christopher  <echristo@apple.com>
4954
4955         * config.gcc (i?86-*-darwin*): Remove arch parameter.
4956         (x86_64-*-darwin*): Ditto.
4957         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
4958         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
4959
4960 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
4961
4962         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
4963         coding conventions.
4964         (add_key): Likewise.
4965         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
4966         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
4967         variable names.
4968         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
4969         macros.
4970         (add_cost_one_coalesce): Likewise.
4971         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
4972         variable names. Rename orig to orig_name for consistency.
4973         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
4974         coding conventions.
4975         (cprop_into_successor_phis): Avoid using C++ keywords as variable
4976         names.
4977         (record_equivalences_from_stmt): Likewise.
4978         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
4979         the coding conventions.
4980         (memory_ssa_name_same): Likewise.
4981         (dse_optimize_stmt): Likewise.
4982         (dse_record_phis): Likewise.
4983         (dse_finalize_block): Likewise.
4984         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
4985         keywords as variable names.
4986         (may_move_till): Cast according to the coding conventions.
4987         (force_move_till_expr): Avoid using C++ keywords as variable names.
4988         (force_move_till): Cast according to the coding conventions.
4989         (memref_hash): Likewise.
4990         (memref_eq): Likewise.
4991         (gather_mem_refs_stmt): Likewise.
4992         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
4993         using C++ keywords as variable names.
4994         (idx_find_step): Cast according to the coding conventions.
4995         (idx_record_use): Likewise.
4996         (find_depends): Likewise.
4997         (prepare_decl_rtl): Likewise.
4998         (mbc_entry_hash): Likewise.
4999         (mbc_entry_eq): Likewise.
5000         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
5001         (simplify_replace_tree): Avoid using C++ keywords as variable names.
5002         (idx_infer_loop_bounds): Cast according to the coding conventions.
5003         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
5004         * tree-ssa-math-opts.c (occ_new ): Likwise.
5005         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
5006         macros.
5007         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
5008         variable names.
5009         (add_use_op): Likewise.
5010         (add_vop): Likewise.
5011         (add_vuse_op): Likewise.
5012         (add_vdef_op): Likewise.
5013         (get_expr_operands): Likewise.
5014         (push_stmt_changes): Use type safe memory macros.
5015         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
5016         keywords as variable names.
5017         (conditional_replacement): Likewise.
5018         (minmax_replacement): Likewise.
5019         (abs_replacement): Likewise.
5020         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
5021         coding conventions.
5022         (insert_fake_stores): Avoid using C++ keywords as variable names.
5023         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
5024         conventions.
5025         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
5026         (heapvar_insert): Use type safe memory macros.
5027         (new_var_info): Cast according to the coding conventions.
5028         (new_constraint): Likewise.
5029         (remove_preds_and_fake_succs): Use type safe memory macros.
5030         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
5031         conventions.
5032         (thread_single_edge): Likewise.
5033         (thread_through_loop_header): Likewise.
5034
5035 2007-06-06  Eric Christopher  <echristo@apple.com>
5036
5037         * config/i386/i386.c (override_options): Move handling
5038         of TARGET_SUBTARGET* earlier.
5039
5040 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
5041
5042         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
5043         use %n on printf.
5044
5045 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
5046
5047         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
5048         emited outside of basic block.
5049         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
5050         the created blocks.
5051         * rtl.h (delete_insn_chain): Declaration changed.
5052         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
5053         non-removed insns.
5054         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
5055         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
5056         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
5057         to delete_insn_chain.
5058         (rtl_verify_flow_info_1): Verify that the insns in header and footer
5059         do not have bb field set.
5060         (rtl_verify_flow_info): Verify that insns between basic blocks do not
5061         have bb field set.
5062         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
5063         * cfgcleanup.c (try_optimize_cfg): Ditto.
5064
5065 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
5066
5067         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
5068         (lambda_body_vector_new): Use type safe memory macros.
5069         (lambda_linear_expression_new): Likewise.
5070         (lambda_loopnest_new): Likewise.
5071         (lambda_lattice_new): Likewise.
5072         (replace_uses_equiv_to_x_with_y): Cast according to the coding
5073         conventions. Use type safe memory macros.
5074         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
5075         (lambda_body_vector_s): Likewise.
5076         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
5077         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
5078
5079 2007-06-06  Richard Guenther  <rguenther@suse.de>
5080
5081         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
5082         if we need to schedule cfg_cleanup.
5083         (tree_ssa_forward_propagate_single_use_vars): Do so.
5084
5085 2007-06-06  Ian Lance Taylor  <iant@google.com>
5086
5087         * fold-const.c (merge_ranges): If range_successor or
5088         range_predecessor fail, just return 0.
5089
5090 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
5091
5092         PR tree-optimization/32216
5093         * tree-vectorizer.c (supportable_widening_operation): Determine
5094         signedness of FIX_TRUNC_EXPR from output operand.
5095         (supportable_narrowing_operation): Ditto.
5096         * tree-vect-generic.c (expand_vector_operations_1): Determine
5097         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
5098         from input operand.
5099
5100 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
5101
5102         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
5103         (struct pta): ...from here. Change flags to unsigned to avoid
5104         excessive casting (as it is used as a bit mask).
5105         (override_options): Add casts according to the coding convenventions.
5106         (x86_64_elf_unique_section): Likewise.
5107         (examine_argument): Avoid using C++ keywords as variable names.
5108         (construct_container): Likewise.
5109         (legitimize_pic_address): Likewise.
5110         (get_dllimport_decl): Cast according to the coding conventions. Use
5111         type safe memory macros.
5112         (legitimize_address): Cast according to the coding conventions.
5113         (emit_i387_cw_initialization): Corrected the type of slot to enum
5114         ix86_stack_slot.
5115         (ix86_init_machine_status): Use type safe memory macros.
5116         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
5117         (bdesc_pcmpistr): Likewise.
5118         (bdesc_crc32): Likewise.
5119         (bdesc_sse_3arg): Likewise.
5120         (bdesc_2arg): Likewise.
5121         (bdesc_1arg): Likewise.
5122         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
5123         (ix86_expand_sse_pcmpistr): Likewise.
5124         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
5125         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
5126         int to match the langhook definition.
5127         (ix86_builtin_conversion): Change the type of code to unsigned init to
5128         match the langhook definition.
5129         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
5130         names.
5131         (ix86_preferred_output_reload_class): Likewise.
5132         (ix86_cannot_change_mode_class): Likewise.
5133         (ix86_memory_move_cost): Likewise.
5134         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
5135         avoid excessive casting later on.
5136         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
5137
5138 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
5139
5140         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
5141         as flags setting insn.
5142         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
5143
5144 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
5145
5146         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
5147         (UNSPEC_ROUND): New.
5148         ("sse4_1_round<mode>2"): New insn pattern.
5149         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
5150         SSE4.1 targets.
5151         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
5152         expander using SSEMODEF mode macro.  Expand using
5153         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
5154         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
5155         expander using SSEMODEF mode macro.  Expand using
5156         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
5157         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
5158         expander using SSEMODEF mode macro.  Expand using
5159         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
5160         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
5161         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
5162         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
5163         UNSPEC_ROUNDS.
5164
5165 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
5166             Sebastian Pop  <sebpop@gmail.com>
5167
5168         * lambda.h (build_linear_expr): New.
5169         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
5170         Use build_linear_expr, call fold and force_gimple_operand.
5171         (lambda_loopnest_to_gcc_loopnest): Check that there is
5172         something to insert.
5173         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
5174
5175 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
5176
5177         PR preprocessor/23479
5178         * doc/extend.texi: Document the 0b-prefixed binary integer
5179         constant extension.
5180
5181 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
5182
5183         PR tree-optimization/32215
5184         * tree-vectorizer.c (supportable_widening_operation): Return false
5185         for unsupported FIX_TRUNC_EXPR tree code.
5186         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
5187
5188 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
5189
5190         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
5191         register on SPE targets.  Change documentation to reflect
5192         reality.
5193         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
5194         Change FIXED_SCRATCH to 14 and document why we're keeping r14
5195         out of the register allocation pool.
5196         (rs6000_reg_live_or_pic_offset_p): New function.
5197         (rs6000_emit_prologue): Move the actual saving of LR up to free
5198         r0 for holding r11.  Split saving of SPE 64-bit registers into
5199         its own case.  Ensure that offsets will always be in-range for
5200         'evstdd' by using r11 as a scratch register to point at the start
5201         of the SPE save area.  Save r11 if necessary, as it is the static
5202         chain register.
5203         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
5204         into its own case.  Ensure that offsets will always be in-range
5205         for 'evldd' by using r11 as a scratch register to point at the
5206         start of the SPE save area.  Also adjust r11 when restoring
5207         the stack pointer to compensate for pre-loading r11.
5208
5209 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
5210
5211         * cfg.c (init_flow): Use type safe memory macros.
5212         (alloc_block): Likewise.
5213         (unchecked_make_edge): Likewise.
5214         (dump_flow_info): Avoid using C++ keywords as variable names.
5215         (copy_original_table_clear): Cast according to the coding conventions.
5216         (copy_original_table_set): Likewise.
5217         * cfgexpand (label_rtx_for_bb): Likewise.
5218         (expand_gimple_basic_block): Likewise.
5219         * cfghooks.c (dump_bb): Likewise.
5220         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
5221         variable names.
5222         (lv_add_condition_to_bb): Likewise.
5223         * cfglayout (relink_block_chain): Cast according to the coding
5224         conventions.
5225         (fixup_reorder_chain): Likewise.
5226         (fixup_fallthru_exit_predecessor): Likewise.
5227         * cfgloop.c (glb_enum_p): Likewise.
5228         (get_exit_description): Likewise.
5229         (dump_recorded_exit): Likewise.
5230         * cfgloop.h (enum loop_estimation): Move out of struct scope...
5231         (struct loop): ... from here.
5232         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
5233         conventions.
5234         * cfgrtl.c (rtl_create_basic_block): Likewise.
5235         (rtl_split_block): Likewise.
5236         (rtl_dump_bb): Likewise.
5237         (cfg_layout_split_block): Likewise.
5238         (init_rtl_bb_info): Use typesafe memory macros.
5239
5240         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
5241         * graphds.h: Updated all usages of edge to graph_edge.
5242         * graphds.c: Likewise.
5243         * cfgloopanal.c: Likewise.
5244
5245 2007-06-05  Ian Lance Taylor  <iant@google.com>
5246
5247         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
5248         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
5249         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
5250         expression.
5251         (test_for_singularity): Likewise.
5252
5253 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
5254
5255         * config/i386/constraints.md ("Y2"): Replaced by ...
5256         ("Yt"): This.
5257         * config/i386/i386.md: Likewise.
5258         * config/i386/mmx.md: Likewise.
5259         * config/i386/sse.md: Likewise.
5260
5261 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
5262
5263         * config/i386/constraints.md ("z"): Replaced by ...
5264         ("Y0"): This.
5265         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
5266         (sse4_1_blendvps): Likewise.
5267         (sse4_1_pblendvb): Likewise.
5268         (sse4_2_pcmpestr): Likewise.
5269         (sse4_2_pcmpestrm): Likewise.
5270         (sse4_2_pcmpestr_cconly): Likewise.
5271         (sse4_2_pcmpistr): Likewise.
5272         (sse4_2_pcmpistrm): Likewise.
5273         (sse4_2_pcmpistr_cconly): Likewise.
5274
5275 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
5276
5277         * matrix-reorg.c (transform_access_sites): Fix computation.
5278         (transform_allocation_sites): Same.
5279
5280 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
5281
5282         * config/i386/i386.c (override_options): Use
5283         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
5284
5285 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
5286
5287         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
5288         (nonimm_not_xmm0_operand): Ditto.
5289         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
5290         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
5291         as operand[2] predicate.  Require "z" class XMM register for
5292         operand[3].  Adjust asm template.
5293         ("sse4_1_blendvpd"): Ditto.
5294         ("sse4_1_pblendvb"): Ditto.
5295         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
5296         force op2 into xmm0 register for variable blend instructions.
5297
5298 2007-06-04  Tom Tromey  <tromey@redhat.com>
5299
5300         * c-tree.h (start_enum): Update.
5301         (build_enumerator): Likewise.
5302         * c-decl.c (enum_next_value): Removed.
5303         (enum_overflow): Likewise.
5304         (start_enum): Add c_enum_contents argument.  Don't use globals.
5305         (build_enumerator): Likewise.
5306         * c-tree.h (struct c_enum_contents): New struct.
5307
5308 2007-06-04  Tom Tromey  <tromey@redhat.com>
5309
5310         * c-common.c (c_common_get_alias_set): Fix indentation.
5311
5312 2007-06-04  Ian Lance Taylor  <iant@google.com>
5313
5314         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
5315         to overflow, reduce overflow infinity to regular infinity.
5316         (vrp_var_may_overflow): New static function.
5317         (vrp_visit_phi_node): Check vrp_var_may_overflow.
5318
5319 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
5320
5321         * stor-layout.c (layout_type): Remove duplicate code.
5322
5323 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
5324
5325         PR c/32191
5326         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
5327         before build_common_builtin_nodes ().
5328
5329 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
5330
5331         PR target/31733
5332         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
5333
5334 2007-06-04  Jan Hubicka  <jh@suse.cz>
5335
5336         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
5337         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
5338         instead of _stat version.
5339
5340 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
5341
5342         PR tree-optimization/32194
5343         * tree-predcom.c (determine_offset): Check that both references have
5344         the same type.
5345
5346 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
5347
5348         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
5349         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
5350         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
5351         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
5352         Add argument to iterate_fix_dominators call.
5353         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
5354         * gcse.c (hoist_code): Change domby to vector.
5355         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
5356         Add argument to iterate_fix_dominators call.
5357         * loop-doloop.c (doloop_modify): Changed recount_dominator to
5358         recompute_dominator.
5359         * lambda-code.c (perfect_nestify): Ditto.
5360         * cfgloopanal.c: Include graphds.h.
5361         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
5362         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
5363         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
5364         add_edge call.
5365         * graphds.c: New file.
5366         * graphds.h: New file.
5367         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
5368         (get_dominated_by, get_dominated_by_region): Change return type to
5369         vector.
5370         (verify_dominators): Recompute all dominators and compare the results.
5371         (recount_dominator): Renamed to ...
5372         (recompute_dominator): ... this.  Do not check that the block is
5373         dominated by entry.
5374         (iterate_fix_dominators): Reimplemented.
5375         (prune_bbs_to_update_dominators, root_of_dom_tree,
5376         determine_dominators_for_sons): New functions.
5377         * et-forest.c (et_root): New function.
5378         * et-forest.h (et_root): Declare.
5379         * Makefile.in (graphds.o): Add.
5380         (cfgloopanal.o): Add graphds.h dependency.
5381         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
5382         * basic-block.h (get_dominated_by, get_dominated_by_region,
5383         iterate_fix_dominators): Declaration changed.
5384         (recount_dominator): Renamed to ...
5385         (recompute_dominator): ... this.
5386         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
5387         (thread_through_all_blocks): Do not free dominance info.
5388
5389 2007-06-03  Andreas Schwab  <schwab@suse.de>
5390
5391         * config/m68k/m68k.c (override_options): Don't override
5392         REAL_MODE_FORMAT.
5393         * config/m68k/m68k-modes.def (SF, DF): Define to use
5394         motorola_single_format and motorola_double_format, resp.
5395         * real.c (motorola_single_format): Renamed from
5396         coldfire_single_format.
5397         (motorola_double_format): Renamed from coldfire_double_format.
5398         (encode_ieee_extended): Generate a proper canonical NaN image
5399         respecting canonical_nan_lsbs_set.
5400         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
5401         true.
5402         * real.h: Adjust declarations.
5403
5404 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
5405
5406         PR target/32163
5407         * config/sh/sh.md (symGOT_load): Don't schedule insns when
5408         the symbol is generated with the stack protector.
5409
5410 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
5411
5412         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
5413         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
5414         "interrupt".
5415         * doc/extend.texi (interrupt): Mention m68k.
5416
5417 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
5418
5419         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
5420         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
5421         (ix86_expand_sse_pcmpestr): Do not check operands for
5422         "register_operand", when insn operand predicate is "register_operand".
5423         (ix86_expand_sse_pcmpistr): Ditto.
5424
5425 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
5426             Uros Bizjak  <ubizjak@gmail.com>
5427
5428         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
5429         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
5430         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
5431         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
5432         * config/i386/constraints.md ("z"): New register constraint
5433         for members of SSE_FIRST_REG class.
5434         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
5435         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
5436         SSE_FIRST_REG class.
5437         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
5438         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
5439         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
5440         (IX86_BUILTIN_PCMPESTRM128): Likewise.
5441         (IX86_BUILTIN_PCMPESTRA128): Likewise.
5442         (IX86_BUILTIN_PCMPESTRC128): Likewise.
5443         (IX86_BUILTIN_PCMPESTRO128): Likewise.
5444         (IX86_BUILTIN_PCMPESTRS128): Likewise.
5445         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
5446         (IX86_BUILTIN_PCMPISTRI128): Likewise.
5447         (IX86_BUILTIN_PCMPISTRM128): Likewise.
5448         (IX86_BUILTIN_PCMPISTRA128): Likewise.
5449         (IX86_BUILTIN_PCMPISTRC128): Likewise.
5450         (IX86_BUILTIN_PCMPISTRO128): Likewise.
5451         (IX86_BUILTIN_PCMPISTRS128): Likewise.
5452         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
5453         (struct builtin_description): Change "flag" field to unsigned.
5454         (bdesc_pcmpestr): New builtin description table.
5455         (bdesc_pcmpistr): Likewise.
5456         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
5457         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
5458         Initialize pcmp[ei]str[im] insns for SSE4.2.
5459         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
5460         (ix86_expand_sse_pcmpistr): Likewise.
5461         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
5462         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
5463         (UNSPEC_PCMPISTR): Likewise.
5464         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
5465         (sse4_2_pcmpestri):New isns pattern.
5466         (sse4_2_pcmpestrm): Likewise.
5467         (sse4_2_pcmpestr_cconly): Likewise.
5468         (sse4_2_pcmpistr): New insn patern and splitter.
5469         (sse4_2_pcmpistri):New isns pattern.
5470         (sse4_2_pcmpistrm): Likewise.
5471         (sse4_2_pcmpistr_cconly): Likewise.
5472         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
5473         in SSE4.2.
5474
5475 2007-06-01  David Daney  <ddaney@avtrex.com>
5476
5477         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
5478         LOADGP_ABSOLUTE and not binds_local_p.
5479
5480 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
5481
5482         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
5483
5484 2007-06-01  Ian Lance Taylor  <iant@google.com>
5485
5486         * tree-vrp.c (compare_name_with_value): Always set
5487         used_strict_overflow if we get a result from the variable itself.
5488
5489 2007-06-01  Ian Lance Taylor  <iant@google.com>
5490
5491         PR rtl-optimization/31455
5492         * lower-subreg.c (find_decomposable_subregs): Don't decompose
5493         subregs which have a cast between modes which are not tieable.
5494
5495 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
5496
5497         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
5498         breaks after return statements.
5499
5500 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
5501
5502         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
5503         only after no_new_pseudos.
5504
5505 2007-05-31  Eric Christopher  <echristo@apple.com>
5506
5507         * expr.c (convert_move): Assert that we don't have a BLKmode
5508         operand.
5509         (store_expr): Handle BLKmode moves by calling emit_block_move.
5510
5511 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
5512
5513         * c-typeck.c (build_indirect_ref): Include type in error message.
5514         (build_binary_op): Pass types to binary_op_error.
5515         * c-common.c (binary_op_error): Take two type arguments, print out
5516         types with error.
5517         * c-common.h (binary_op_error): Update prototype.
5518
5519 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
5520
5521         * config/i386/i386.c: Correct coments on -mno-sse4.
5522
5523 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
5524
5525         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
5526         (x86_64-*-*): Likewise.
5527         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
5528         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
5529         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
5530         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
5531         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
5532         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
5533         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
5534         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
5535         (OPTION_MASK_ISA_SSE4): Likewise.
5536         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
5537         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
5538         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
5539         (override_options): Support SSE4.2.
5540         (ix86_build_const_vector): Support SImode and DImode.
5541         (ix86_build_signbit_mask): Likewise.
5542         (ix86_expand_int_vcond): Support V2DImode.
5543         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
5544         (IX86_BUILTIN_CRC32HI): Likewise.
5545         (IX86_BUILTIN_CRC32SI): Likewise.
5546         (IX86_BUILTIN_CRC32DI): Likewise.
5547         (IX86_BUILTIN_PCMPGTQ): Likewise.
5548         (bdesc_crc32): Likewise.
5549         (bdesc_sse_3arg): Likewise.
5550         (ix86_expand_crc32): Likewise.
5551         (ix86_init_mmx_sse_builtins): Support SSE4.2.
5552         (ix86_expand_builtin): Likewise.
5553         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
5554         __SSE4_2__ for -msse4.2.
5555         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
5556         (CRC32MODE): Likewise.
5557         (crc32modesuffix): Likewise.
5558         (crc32modeconstraint): Likewise.
5559         (sse4_2_crc32<mode>): Likewise.
5560         (sse4_2_crc32di): Likewise.
5561         * config/i386/i386.opt (msse4.2): New for SSE4.2.
5562         (msse4): Likewise.
5563         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
5564         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
5565         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
5566         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
5567         (vcondu<mode>): Likewise.
5568         * doc/extend.texi: Document SSE4.2 built-in functions.
5569         * doc/invoke.texi: Document -msse4.2/-msse4.
5570
5571 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
5572
5573         PR tree-optimization/32160
5574         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
5575         variable as gimple reg.
5576         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
5577
5578 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
5579
5580         * gcc.c (main): Don't consider linker options when issuing the
5581         warning about a linker input file not being used.
5582
5583 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5584
5585         * tree-vrp.c (compare_names): Initialize sop.
5586
5587 2007-05-30  Dirk Mueller  <dmueller@suse.de>
5588
5589         * cgraphunit.c (cgraph_analyze_function): Remove
5590         computation of inline parameters.
5591
5592 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
5593
5594         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
5595
5596 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
5597
5598         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
5599         Add vx-common.h.  Include vxworks.h between vx-common.h and
5600         arm/vxworks.h.
5601         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
5602         redefining.
5603         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
5604         (TARGET_ASM_DESTRUCTOR): Likewise.
5605         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
5606         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
5607         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
5608         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
5609         (VXWORKS_ENDIAN_SPEC): Define.
5610         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
5611         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
5612         VXWORKS_* equivalents.
5613         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
5614         (ASM_FILE_START): Delete.
5615         (TARGET_VERSION): Reformat.
5616         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
5617         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
5618         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
5619         (FPBIT, DPBIT): Define.
5620         (fp-bit.c, dp-bit.c): New rules.
5621         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
5622         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
5623         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
5624         * config/arm/arm.h: Include vxworks-dummy.h.
5625         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
5626         Mark with ATTRIBUTE_UNUSED.
5627         (arm_override_options): Do not allow VxWorks RTP PIC to be used
5628         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
5629         make it incompatible with -msingle-pic-base.
5630         (arm_function_ok_for_sibcall): Return false for calls that might
5631         go through a VxWorks PIC PLT entry.
5632         (require_pic_register): New function, split out from...
5633         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
5634         for VxWorks RTPs.
5635         (arm_load_pic_register): Handle the VxWorks RTP initialization
5636         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
5637         (arm_emit_call_insn): New function.
5638         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
5639         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
5640         (pic_offset_arm): New pattern.
5641         (call, call_value): Use arm_emit_call_insn.
5642         (call_internal, call_value_internal): New expanders.
5643         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
5644         VxWorks unless __PIC__.
5645
5646 2007-05-30  Eric Christopher  <echristo@gmail.com>
5647
5648         * genrecog.c: Include regs.h in generated file.
5649         * genemit.c: Ditto. Fix up formatting.
5650         * config/mn10300/constraints.md: New.
5651         * config/mn10300/mn10300.md: Include.
5652         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
5653         Fix up for removed macro.
5654         * config/mn10300/predicates.md (call_address_operand):  Ditto.
5655         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
5656         (CONST_OK_FOR_I): Ditto.
5657         (CONST_OK_FOR_J): Ditto.
5658         (CONST_OK_FOR_K): Ditto.
5659         (CONST_OK_FOR_L): Ditto.
5660         (CONST_OK_FOR_M): Ditto.
5661         (CONST_OK_FOR_N): Ditto.
5662         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
5663         (OK_FOR_Q): Ditto.
5664         (OK_FOR_R): Ditto.
5665         (OK_FOR_T): Ditto.
5666         (EXTRA_CONSTRAINT): Ditto.
5667
5668 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
5669
5670         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
5671         Remove defines.
5672         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
5673         OPTION_MASK_ISA_64BIT.
5674         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
5675
5676 2007-05-30  Richard Guenther  <rguenther@suse.de>
5677
5678         PR middle-end/32152
5679         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
5680         types for comparison.
5681         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
5682         with original typed arguments.
5683         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
5684
5685 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
5686
5687         PR tree-optimization/31769
5688         * except.c (duplicate_eh_regions): Clear prev_try if
5689         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
5690
5691 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
5692
5693         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
5694         * tree-ssa-sink.c (statement_sink_location): Return basic block and
5695         bsi of the location where statements should be inserted.
5696         (sink_code_in_bb): Take bsi from statement_sink_location.
5697         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
5698         instead of bsi_start.
5699         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
5700         bsi_insert_after.
5701         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
5702         (bsi_move_before): Document inconsistency with bsi_move_after.
5703         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
5704
5705 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
5706
5707         * config/i386/i386.h (TARGET_ABM): New define.
5708         (TARGET_POPCNT): Ditto.
5709         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
5710         New temporary defines to redefine from OPTION_ISA_* defines.
5711         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
5712         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
5713         (ix86_isa_flags): New extern int declaration.
5714         (TARGET_SUBTARGET_DEFAULT): New define.
5715         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
5716         (TARGET_SUBTARGET32_DEFAULT): Ditto.
5717         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
5718         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
5719         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
5720         * config/i386/darwin.h: Change TARGET_64BIT define to
5721         OPTION_ISA_64BIT.
5722
5723         * config/i386/i386.opt (m3dnowa): Define as undocumented option
5724         using existing "ix86_isa_flags" varible.
5725         (m32, m64): Use existing "ix86_isa_flags" variable.
5726         (mmmx, m3dnow): Ditto.
5727         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
5728         (mabm): Define as non-negative option using "x86_abm" variable.
5729         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
5730
5731         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
5732         Rewrite feature test bitmap.
5733         (ix86_isa_flags): New initialized global int varible.
5734         (ix86_isa_flags_explicit): New static int variable.
5735         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
5736         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
5737         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
5738         target_flags_explicit.
5739         (override_options): Remove "target_enable" and "target_disable" fields
5740         from "struct ptt". Update processor_target_table accordingly. Remove
5741         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
5742         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
5743         "target_flags" and "ix86_isa_flags_explicit" instead of
5744         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
5745         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
5746         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
5747         to true when either of PTA_POPCNT or PTA_ABM is set in
5748         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
5749         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
5750         processor_alias_table flags entry.  Remove handling of
5751         "target_enable" and "target_disable" fields of processor_target_table.
5752         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
5753         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
5754         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
5755         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
5756         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
5757         "target_flags".
5758         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
5759
5760 2007-05-29  David Daney  <ddaney@avtrex.com>
5761
5762         PR gcc/31975
5763         * config/mips/mips.c (mips_output_mi_thunk): Emit
5764         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
5765
5766 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
5767         * config/i386/i386.c (ix86_function_regparm): Added checking of
5768         ix86_force_align_arg_pointer to determine the number of
5769         register parameters.
5770
5771 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
5772
5773         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
5774         (SET_DR_MISALIGNMENT): New.
5775         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
5776         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
5777         Use SET_DR_MISALIGNMENT.
5778         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
5779         pointer.
5780         * tree-data-ref.c (create_data_ref, compute_all_dependences,
5781         find_loop_nest): Export.
5782         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
5783         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
5784         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
5785         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
5786         New macros.
5787         (struct mem_ref): Add field reuse_distance.
5788         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
5789         Initialize reuse_distance field.
5790         (issue_prefetch_ref): Select temporality of prefetch according to
5791         reuse_distance.
5792         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
5793         self_reuse_distance, determine_loop_nest_reuse): New functions.
5794         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
5795         (tree_ssa_prefetch_arrays): Dump L2 cache size.
5796         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
5797         dependency.
5798
5799 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
5800
5801         * tree-ssa-alias.c: Add aliasing overview.
5802
5803 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
5804             Danny Smith  <dannysmith@users.sourceforge.net>
5805
5806         PR target/29498
5807         * config/i386/t-crtfm: Compile crtfastmath.o with
5808         -minline-all-stringops.
5809         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
5810         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
5811
5812 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5813
5814         * doc/md.texi: Document constraints on HP PA-RISC.
5815
5816         * pa/constraints.md: New file.
5817         * pa.md: Include constraints.md.
5818         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
5819         (integer_store_memory_operand, ldil_cint_p): New functions.
5820         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
5821         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
5822         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
5823         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
5824         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
5825
5826 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
5827
5828         PR c/31339
5829         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
5830         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
5831         case POSTDECREMENT_EXPR>): Return the error_mark_node
5832         if either the real or imaginary parts would an
5833         error_mark_node.
5834
5835 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
5836
5837         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
5838         name when we remove it from a call.
5839
5840 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
5841
5842         * targhooks.c (default_narrow_bitfield): Remove.
5843         * targhooks.h: Remove the prototype for
5844         default_narrow_bitfield.
5845
5846         * langhooks-def.h: Remove the prototype for
5847         hook_get_alias_set_0.
5848         * langhooks.c (hook_get_alias_set_0): Remove.
5849
5850         * global.c (EXECUTE_IF_CONFLICT): Remove.
5851
5852 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5853
5854         PR tree-opt/32100
5855         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
5856         return true when truth_value_p is true and the type
5857         is of signed:1.
5858
5859 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
5860
5861         * doc/install.texi (Prerequisites): We no longer require Autoconf
5862         2.13 for the top-level.
5863
5864 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
5865
5866         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
5867         memory access via x86_expand_vector_move_misalign() only for
5868         TImode values on 32-bit targets.
5869
5870 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
5871
5872         * matrix-reorg.c: New file. Implement matrix flattening and
5873         transposing optimization.
5874         * tree-pass.h: Add matrix reorg pass.
5875         * common.opt: Add fipa-mreorg flag.
5876         * Makefile.in: Add matrix-reorg.c.
5877         * passes.c: Add matrix reorg pass.
5878         * varpool.c (add_new_static_var): New function.
5879         * cgraph.h (add_new_static_var): Declare.
5880
5881 2007-05-27  Eric Christopher  <echristo@apple.com>
5882
5883         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
5884         sp_offset depending on stack size. Save r12 depending
5885         on registers we're saving later.
5886         (rs6000_emit_epilogue): Update sp_offset depending only
5887         on stack size.
5888
5889 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
5890
5891         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
5892         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
5893         * ifcvt.c (if_convert): Ditto.
5894         * tree-ssa-threadupdate.c (thread_block): Ditto.
5895         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
5896         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
5897         verify_loop_closed_ssa): Check number_of_loops instead of
5898         current_loops.
5899         * predict.c (tree_estimate_probability): Ditto.
5900         * tree-if-conv.c (main_tree_if_conversion): Ditto.
5901         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
5902         * modulo-sched.c (sms_schedule): Ditto.
5903         * tree-scalar-evolution.c (scev_const_prop): Ditto.
5904         (scev_finalize): Do not do anything if scev analysis was not
5905         initialized.
5906         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
5907         current_loops == NULL.
5908         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
5909         * loop-init.c (loop_optimizer_init): Do not free current_loops when
5910         there are no loops.
5911         (loop_optimizer_finalize): Assert that loops were analyzed.
5912         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
5913         rtl_doloop): Check number_of_loops instead of current_loops.
5914         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
5915         current_loops == NULL.
5916         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
5917         gate_tree_vectorize tree_linear_transform, check_data_deps,
5918         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
5919         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
5920         Check number_of_loops instead of current_loops.
5921         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
5922         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
5923         free loops if available.
5924         (execute_pre): Do not pass do_fre to fini_pre.
5925
5926 2007-05-27  Tobias Burnus  <burnus@net-b.de>
5927
5928         PR middle-end/32083
5929         * real.c (mpfr_from_real): Fix sign of -Inf.
5930
5931 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
5932
5933         * tree-vect-transform.c (vectorizable_conversion): Initialize
5934         tree_code variables to ERROR_MARK.
5935         (vectorizable_type_demotion): Likewise.
5936         (vectorizable_type_promotion): Likewise.
5937
5938 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
5939
5940         PR target/32065
5941         * config/i386/i386.md (movti): Handle push operands via
5942         ix86_expand_push().
5943
5944 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
5945
5946         * basic-block.h: Remove the prototype for merge_seq_blocks.
5947         * cfgcleanup.c (merge_seq_blocks): Remove.
5948
5949         * tree-flow.h: Remove the prototype for is_aliased_with.
5950         * tree-ssa-alias.c (is_aliased_with): Remove.
5951
5952 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
5953
5954         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
5955
5956         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
5957
5958         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
5959         ix86_expand_sse4_unpack if SSE4.1 is enabled.
5960         (vec_unpacks_hi_v16qi): Likewise.
5961         (vec_unpacku_lo_v16qi): Likewise.
5962         (vec_unpacks_lo_v16qi): Likewise.
5963         (vec_unpacku_hi_v8hi): Likewise.
5964         (vec_unpacks_hi_v8hi): Likewise.
5965         (vec_unpacku_lo_v8hi): Likewise.
5966         (vec_unpacks_lo_v8hi): Likewise.
5967         (vec_unpacku_hi_v4si): Likewise.
5968         (vec_unpacks_hi_v4si): Likewise.
5969         (vec_unpacku_lo_v4si): Likewise.
5970         (vec_unpacks_lo_v4si): Likewise.
5971
5972 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
5973
5974         * c-typeck.c, config/arm/arm.c, config/darwin.c,
5975         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
5976         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
5977         follow spelling conventions in various
5978         warning/error/diagnostic messages.
5979
5980         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
5981         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
5982         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
5983         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
5984         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
5985         * doc/tm.texi: Follow spelling conventions.
5986
5987 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5988
5989         PR tree-opt/32090
5990         * tree-ssa-forwprop.c
5991         (forward_propagate_addr_into_variable_array_index): Remove
5992         the lhs argument.  Use the type of def_rhs instead of lhs.
5993         (forward_propagate_addr_expr_1): Update use of
5994         forward_propagate_addr_into_variable_array_index.
5995
5996 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
5997             Nigel Stephens  <nigel@mips.com>
5998
5999         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
6000         function attributes, "far" being an alias for "long_call".
6001         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
6002         (mips_near_type_p, mips_far_type_p): New.
6003         (mips_comp_type_attributes): New function to check that attributes
6004         attached to a function type are compatible.
6005         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
6006         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
6007         to the target function of the thunk.
6008         (mips_encode_section_info): Check for "near" and "far" function
6009         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
6010
6011         * config/mips/predicates.md (const_call_insn_operand): Test only
6012         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
6013
6014         * doc/extend.texi (Function Attributes): Document MIPS "near" and
6015         "far" attributes.
6016
6017         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
6018         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
6019         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
6020         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
6021
6022 2007-05-25  Eric Christopher  <echristo@apple.com>
6023
6024         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
6025         to x86-darwin configurations.
6026         * config/i386/t-darwin: Add softfp support.
6027         * config/i386/t-darwin64: Ditto.
6028         * config/i386/sfp-machine.h: If mach then don't use
6029         aliasing, emit a stub to call.
6030
6031 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
6032
6033         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
6034         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
6035         tree-predcom.c, tree-ssa-alias-warnings.c,
6036         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
6037         comment typos.  Follow spelling conventions.
6038         * doc/cpp.texi, doc/invoke.texi: Fix typos.
6039
6040 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
6041
6042         PR target/32065
6043         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
6044         constants into memory.  Expand unaligned memory references for
6045         SSE modes via x86_expand_vector_move_misalign() function.
6046
6047 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
6048
6049         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
6050         "memory" attribute for "sseishft" type insn without operands[2].
6051
6052 2007-05-25  Dirk Mueller  <dmueller@suse.de>
6053             Marcus Meissner <meissner@suse.de>
6054
6055         * doc/extend.texi (alloc_size): New attribute.
6056         * c-common.c (handle_alloc_size_attribute): New.
6057         * tree-object-size.c (alloc_object_size): Use alloc_size
6058         attribute, if available.
6059
6060 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
6061
6062         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
6063         with MASK_SSE2.
6064         (__builtin_ia32_vec_ext_v2di): Likewise.
6065         (__builtin_ia32_vec_ext_v4si): Likewise.
6066         (__builtin_ia32_vec_ext_v8hi): Likewise.
6067         (__builtin_ia32_vec_ext_v16qi): Likewise.
6068         (__builtin_ia32_vec_set_v8hi): Likewise.
6069
6070 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
6071
6072         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
6073
6074 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
6075
6076         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
6077         (arm_is_longcall_p): Rename to...
6078         (arm_is_long_call_p): ...this.  Take a single tree argument and
6079         return a bool.
6080         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
6081         (CUMULATIVE_ARGS): Remove call_cookie.
6082         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
6083         (ENCODED_LONG_CALL_ATTR_P): Delete.
6084         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
6085         LONG_CALL_FLAG_CHAR cases.
6086         (ARM_DECLARE_FUNCTION_SIZE): Delete.
6087         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
6088         ARM_DECLARE_FUNCTION_SIZE.
6089         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
6090         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
6091         (arm_encode_call_attribute, current_file_function_operand): Delete.
6092         (arm_function_in_section_p): New function.
6093         (arm_is_longcall_p): Rename to...
6094         (arm_is_long_call_p): ...this.  Take the target function as a single
6095         argument and return a bool.  Do not rely on call cookies.  Check
6096         whether the target symbol is in the same section as the current
6097         function, not just the same compilation unit.
6098         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
6099         (arm_encode_section_info): Don't encode a call type.
6100         * config/arm/arm.md (call, call_value): Update calls to
6101         arm_is_long(_)call_p.  Simplify logic.
6102         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
6103         Update calls to arm_is_long(_)call_p.
6104
6105 2007-05-25  Richard Guenther  <rguenther@suse.de>
6106
6107         PR tree-optimization/31982
6108         * tree-ssa-forwprop.c
6109         (forward_propagate_addr_into_variable_array_index): Handle arrays
6110         with element size one.
6111
6112 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6113
6114         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
6115         (umulsi3_highpart): Likewise.
6116
6117 2007-05-24  Ian Lance Taylor  <iant@google.com>
6118
6119         PR rtl-optimization/32069
6120         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
6121         is NULL.
6122
6123 2007-05-24  Ollie Wild  <aaw@google.com>
6124
6125         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
6126         description.
6127
6128 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
6129
6130         * postreload-gcse.c (reg_changed_after_insn_p): New function.
6131         (oprs_unchanged_p): Use it to check all registers in a REG.
6132         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
6133         (reg_set_between_after_reload_p): Delete.
6134         (reg_used_between_after_reload_p): Likewise.
6135         (reg_set_or_used_since_bb_start): Likewise.
6136         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
6137         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
6138         Use reg_set_between_p instead of reg_set_between_after_reload_p.
6139         * rtlanal.c (reg_set_p): Check whether REG overlaps
6140         regs_invalidated_by_call, rather than just checking the
6141         membership of REGNO (REG).
6142
6143 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
6144
6145         * doc/passes.texi: Document predictive commoning.
6146         * doc/invoke.texi (-fpredictive-commoning): Document.
6147         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
6148         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
6149         adding indices to the generated name.
6150         (schedule_sm): Pass 0 to get_lsm_tmp_name.
6151         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
6152         * tree-pretty-print.c (op_symbol_1): Renamed to ...
6153         (op_symbol_code): ... and exported.
6154         (dump_omp_clause, op_symbol): Use op_symbol_code
6155         instead of op_symbol_1.
6156         * tree-pass.h (pass_predcom): Declare.
6157         * timevar.def (TV_PREDCOM): New timevar.
6158         * tree-ssa-loop.c (run_tree_predictive_commoning,
6159         gate_tree_predictive_commoning, pass_predcom): New.
6160         * tree-data-ref.c (find_data_references_in_loop): Find the
6161         references in dominance order.
6162         (canonicalize_base_object_address): Ensure that the result has
6163         pointer type.
6164         (dr_analyze_innermost): Export.
6165         (create_data_ref): Code to fail for references with invariant
6166         address moved ...
6167         (find_data_references_in_stmt): ... here.
6168         * tree-data-ref.h (dr_analyze_innermost): Declare.
6169         * tree-affine.c: Include tree-gimple.h and hashtab.h.
6170         (aff_combination_find_elt, name_expansion_hash,
6171         name_expansion_eq, tree_to_aff_combination_expand,
6172         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
6173         New functions.
6174         * tree-affine.h (aff_combination_constant_multiple_p,
6175         tree_to_aff_combination_expand): Declare.
6176         * tree-predcom.c: New file.
6177         * common.opt (fpredictive-commoning): New option.
6178         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
6179         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
6180         * Makefile.in (tree-predcom.o): Add.
6181         (tree-affine.o): Add TREE_GIMPLE_H dependency.
6182         * passes.c (init_optimization_passes):  Add dceloop after
6183         copy propagation in loop optimizer.  Add predictive commoning
6184         to loop optimizer passes.
6185
6186 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
6187
6188         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
6189         default hook.
6190
6191 2007-05-24  Jan Hubicka  <jh@suse.cz>
6192
6193         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
6194         statistics.
6195         (genheader): Include statistics.h.
6196
6197         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
6198         notes are gone.
6199         * print-rtl.c (flag_dump_unnumbered): Update comments.
6200         (print_rtl): Fix my previous change.
6201         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
6202         specific data.
6203
6204 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
6205
6206         PR middle-end/32018
6207         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
6208         set_loop_copy.
6209         (thread_through_all_blocks): Call initialize_original_copy_tables
6210         and free_original_copy_tables.
6211         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
6212         Use set_loop_copy.
6213         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
6214         * cfghooks.c (duplicate_block): Use get_loop_copy.
6215         * cfg.c: Include cfgloop.h.
6216         (loop_copy): New hash table.
6217         (initialize_original_copy_tables): Initialize loop_copy table.
6218         (free_original_copy_tables): Free loop_copy table.
6219         (copy_original_table_clear, copy_original_table_set,
6220         set_loop_copy, get_loop_copy): New functions.
6221         (set_bb_original, set_bb_copy): Use copy_original_table_set.
6222         * cfgloop.h (struct loop): Remove copy field.
6223         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
6224         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
6225
6226 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
6227
6228         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
6229         -msse/-msse2/-msse3.
6230
6231 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
6232
6233         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
6234         __builtin_ia32_vec_set_v2di with MASK_64BIT.
6235
6236 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
6237
6238         PR target/27067
6239         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
6240         * targhooks.h (default_mangle_decl_assembler_name): Declare
6241         default hook.
6242         * targhooks.c (default_mangle_decl_assembler_name): Define
6243         default hook.
6244         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
6245         default hook.
6246         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
6247         * langhooks.c (lhd_set_decl_assembler_name): Call
6248         targetm.mangle_decl_assembler_name for names with global scope.
6249
6250         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
6251         default.
6252         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
6253         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
6254         Declare.
6255         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
6256         New. Factored out of i386_pe_encode_section_info.
6257         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
6258         Move check for prior decoration of stdcall
6259         symbols to i386_pe_encode_section_info.
6260         (i386_pe_encode_section_info): Adjust call to
6261         gen_stdcall_or_fastcall_suffix.  Use
6262         i386_pe_maybe_mangle_decl_assembler_name, if needed.
6263         (i386_pe_mangle_decl_assembler_name): New. Wrap
6264         i386_pe_maybe_mangle_decl_assembler_name.
6265
6266 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
6267
6268         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
6269         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
6270         * langhooks.c (get_signed_or_unsigned_type): Don't check for
6271         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
6272         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
6273         TYPE_UNSIGNED.
6274
6275 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
6276             Nigel Stephens  <nigel@mips.com>
6277             Richard Sandiford  <richard@codesourcery.com>
6278
6279         Fix up MIPS16 hard float and add support for complex.
6280
6281         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
6282         (TARGET_SOFT_FLOAT_ABI): New.
6283         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
6284         __mips_soft_float to reflect the ABI in use, not whether the
6285         FPU is directly accessible (e.g., in MIPS16 mode).
6286         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
6287         (UNITS_PER_FPVALUE): Likewise.
6288
6289         * config/mips/mips.c (mips_expand_call): Remove redundant
6290         TARGET_MIPS16 check.
6291         (mips_arg_regno): New.
6292         (function_arg_advance): When setting bits in cum->fp_code for
6293         MIPS16, don't subtract 1 from cum->arg_number, since it is now
6294         zero-based.
6295         (function_arg): Use mips_arg_regno.
6296         (mips_return_mode_in_fpr_p): New.
6297         (mips16_call_stub_mode_suffix): New.
6298         (mips16_cfun_returns_in_fpr_p): New.
6299         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
6300         (mips_output_function_prologue): Test mips16_hard_float, not
6301         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
6302         (mips_expand_epilogue): Call MIPS16 helper routines to copy
6303         return value into a floating-point register.
6304         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
6305         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
6306         (mips16_fp_args): Handle MIPS32r2 ISA which supports
6307         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
6308         word of double arguments from or to the high bits of 64-bit
6309         floating point registers.
6310         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
6311         (mips16_fpret_double): New helper function.
6312         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
6313         support for complex modes.  Fill in DECL_RESULT for stubdecl.
6314         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
6315
6316         * config/mips/mips16.S
6317         (RET, ARG1, ARG2): New.
6318         (MERGE_GPRf, MERGE_GPRt): New.
6319         (DELAYt, DELAYf): New.
6320         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
6321         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
6322         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
6323         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
6324         (SFOP): Renamed to...
6325         (OPSF3): This, and macro-ified.  Updated all uses.
6326         (SFOP2): Renamed to...
6327         (OPSF2): This, and macro-ified.  Updated all uses.
6328         (SFCMP): Renamed to...
6329         (CMPSF): This, and macro-ified.  Updated all uses.
6330         (SFREVCMP): Renamed to...
6331         (REVCMPSF): This, and macro-ified.  Updated all uses.
6332         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
6333         (LDDBL1, LDDBL2, RETDBL): Deleted.
6334         (DFOP): Renamed to...
6335         (OPDF3): This, and macro-ified.  Updated all uses.
6336         (DFOP2): Renamed to...
6337         (OPDF2): This, and macro-ified.  Updated all uses.
6338         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
6339         (DFCMP): Renamed to...
6340         (CMPDF): This, and macro-ified.  Updated all uses.
6341         (DFREVCMP): Renamed to...
6342         (REVCMPDF): This, and macro-ified.  Updated all uses.
6343         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
6344         (RET_FUNCTION): New.
6345         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
6346         (__mips16_ret_sc, __mips16_ret_dc): New.
6347         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
6348         STUB_ARGS_6, STUB_ARGS_10): New.
6349         (CALL_STUB_NO_RET): New.
6350         (__mips16_call_stub_1): Macro-ified.
6351         (__mips16_call_stub_5): Macro-ified.
6352         (__mips16_call_stub_2): Macro-ified.
6353         (__mips16_call_stub_6): Macro-ified.
6354         (__mips16_call_stub_9): Macro-ified.
6355         (__mips16_call_stub_10): Macro-ified.
6356         (CALL_STUB_RET): New.
6357         (__mips16_call_stub_sf_0): Macro-ified.
6358         (__mips16_call_stub_sf_1): Macro-ified.
6359         (__mips16_call_stub_sf_5): Macro-ified.
6360         (__mips16_call_stub_sf_2): Macro-ified.
6361         (__mips16_call_stub_sf_6): Macro-ified.
6362         (__mips16_call_stub_sf_9): Macro-ified.
6363         (__mips16_call_stub_sf_10): Macro-ified.
6364         (__mips16_call_stub_df_0): Macro-ified.
6365         (__mips16_call_stub_df_1): Macro-ified.
6366         (__mips16_call_stub_df_5): Macro-ified.
6367         (__mips16_call_stub_df_2): Macro-ified.
6368         (__mips16_call_stub_df_6): Macro-ified.
6369         (__mips16_call_stub_df_9): Macro-ified.
6370         (__mips16_call_stub_df_10): Macro-ified.
6371         (__mips16_call_stub_sc_0): New.
6372         (__mips16_call_stub_sc_1): New.
6373         (__mips16_call_stub_sc_5): New.
6374         (__mips16_call_stub_sc_2): New.
6375         (__mips16_call_stub_sc_6): New.
6376         (__mips16_call_stub_sc_9): New.
6377         (__mips16_call_stub_sc_10): New.
6378         (__mips16_call_stub_dc_0): New.
6379         (__mips16_call_stub_dc_1): New.
6380         (__mips16_call_stub_dc_5): New.
6381         (__mips16_call_stub_dc_2): New.
6382         (__mips16_call_stub_dc_6): New.
6383         (__mips16_call_stub_dc_9): New.
6384         (__mips16_call_stub_dc_10): New.
6385
6386         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
6387         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
6388         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
6389
6390 2007-05-23  Ian Lance Taylor  <iant@google.com>
6391
6392         * doc/invoke.texi (Invoking GCC): Document that the order of the
6393         -l option matters.
6394
6395 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
6396
6397         PR target/30987
6398         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
6399         * config/score/predicate.md (const_pow2, const_npow2): Remove.
6400         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
6401         undef.
6402
6403         PR target/30474
6404         * config/score/score.c (score_print_operand): Make sure that only
6405         lower bits are used.
6406
6407 2007-05-22  Ian Lance Taylor  <iant@google.com>
6408
6409         * tree-vrp.c (avoid_overflow_infinity): New static function,
6410         broken out of set_value_range_to_value.
6411         (set_value_range_to_value): Call avoid_overflow_infinity.
6412         (extract_range_from_assert): Likewise.
6413
6414 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6415
6416         PR middle-end/31095
6417          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
6418         change the type before looking for a COMPOUND_EXPR.
6419
6420 2007-05-22  Ian Lance Taylor  <iant@google.com>
6421
6422         * lower-subreg.c (decompose_multiword_subregs): If we change an
6423         insn, call remove_retval_note on it.
6424
6425 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
6426
6427         * regs.h (end_hard_regno): New function.
6428         (END_HARD_REGNO, END_REGNO): New macros.
6429         (add_to_hard_reg_set): New function.
6430         (remove_from_hard_reg_set): Likewise.
6431         (in_hard_reg_set_p): Likewise.
6432         (overlaps_hard_reg_set_p): Likewise.
6433         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
6434         (note_btr_set): Use END_HARD_REGNO.
6435         * caller-save.c (setup_save_areas): Use end_hard_regno.
6436         (mark_set_regs): Use END_HARD_REGNO.
6437         (add_stored_regs): Use end_hard_regno.
6438         (mark_referenced_regs): Use add_to_hard_reg_set.
6439         * combine.c (update_table_tick): Use END_REGNO.
6440         (record_value_for_reg): Likewise.
6441         (record_dead_and_set_regs): Likewise.
6442         (get_last_value_validate): Likewise.
6443         (use_crosses_set_p): Likewise.
6444         (reg_dead_at_p_1): Likewise.
6445         (reg_dead_at_p): Likewise.
6446         (mark_used_regs_combine): Use add_to_hard_reg_set.
6447         (move_deaths): Use END_HARD_REGNO.
6448         (reg_bitfield_target_p): Use end_hard_regno.
6449         (distribute_notes): Use END_HARD_REGNO.
6450         * cse.c (mention_regs): Use END_REGNO.
6451         (insert): Use add_to_hard_reg_set.
6452         (invalidate): Use END_HARD_REGNO.
6453         (invalidate_for_call): Likewise.
6454         (exp_equiv_p): Use END_REGNO.
6455         (cse_insn): Likewise.
6456         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
6457         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
6458         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
6459         * function.c (keep_stack_depressed): Use end_hard_regno.
6460         * global.c (global_alloc): Use end_hard_regno.
6461         (global_conflicts): Use add_to_hard_reg_set instead of
6462         mark_reg_live_nc.
6463         (find_reg): Likewise.
6464         (mark_reg_store): Likewise.
6465         (mark_reg_conflicts): Likewise.
6466         (mark_reg_death): Use remove_from_hard_reg_set.
6467         (mark_reg_live_nc): Delete.
6468         (set_preference): Use end_hard_regno.
6469         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
6470         remove_from_hard_reg_set.
6471         (post_mark_life): Use add_to_hard_reg_set.
6472         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
6473         (reg_becomes_live): Use add_to_hard_reg_set.
6474         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
6475         (peep2_find_free_register): Use add_to_hard_reg_set.
6476         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
6477         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
6478         * regrename.c (note_sets): Use add_to_hard_reg_set.
6479         (clear_dead_regs): Use remove_from_hard_reg_set.
6480         (regrename_optimize): Use add_to_hard_reg_set.
6481         (find_oldest_value_reg): Use in_hard_reg_set_p.
6482         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
6483         (hard_reg_set_here_p): Use end_hard_regno.
6484         (decompose): Likewise.
6485         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
6486         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
6487         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
6488         (mark_home_live): Use end_hard_regno.
6489         (spill_hard_reg): Likewise.
6490         (clear_reload_reg_in_use): Likewise.
6491         * reorg.c (delete_prior_computation): Use END_REGNO.
6492         * resource.c (update_live_status): Use END_HARD_REGNO.
6493         (mark_referenced_resources): Use add_to_hard_reg_set.
6494         (mark_set_resources): Likewise.
6495         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
6496         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
6497         (reg_overlap_mentioned_p): Likewise.
6498         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
6499         (covers_regno_no_parallel_p): Use END_REGNO.
6500         (find_regno_note): Likewise.
6501         (find_reg_fusage): Use END_HARD_REGNO.
6502         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
6503         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
6504
6505 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
6506
6507         * mode-switching.c (reg_dies): Change type of second argument to
6508         "HARD_REG_SET *".
6509         (optimize_mode_switching): Update accordingly.
6510
6511 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
6512
6513         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
6514         in favor of...
6515         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
6516         (hard_reg_set_empty_p): ...these new functions.
6517         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
6518         GO_IF_HARD_REG_SUBSET.
6519         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
6520         instead of GO_IF_HARD_REG_EQUAL.
6521         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
6522         instead of GO_IF_HARD_REG_EQUAL.
6523         * global.c (find_reg): Use hard_reg_set_empty_p instead of
6524         GO_IF_HARD_REG_SUBSET.
6525         (modify_reg_pav): Use hard_reg_set_empty_p instead of
6526         GO_IF_HARD_REG_EQUAL.
6527         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
6528         of GO_IF_HARD_REG_SUBSET.
6529         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
6530         instead of GO_IF_HARD_REG_EQUAL.
6531         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
6532         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
6533         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
6534         of GO_IF_HARD_REG_SUBSET,
6535         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
6536         GO_IF_HARD_REG_SUBSET.
6537         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
6538         instead of GO_IF_HARD_REG_EQUAL.
6539         * config/sh/sh.c (push_regs, calc_live_regs): Use
6540         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
6541         (hard_regs_intersect_p): Delete.
6542
6543 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
6544
6545         * doc/sourcebuild.texi (Test Directives) Add dg-message.
6546
6547 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
6548             Richard Henderson  <rth@redhat.com>
6549
6550         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
6551         extra_headers.
6552         (x86_64-*-*): Likewise.
6553
6554         * i386/i386-modes.def (V2QI): New.
6555
6556         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
6557         SSE4A.
6558         (override_options): Support SSE4.1.
6559         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
6560         (IX86_BUILTIN_BLENDPS): Likewise.
6561         (IX86_BUILTIN_BLENDVPD): Likewise.
6562         (IX86_BUILTIN_BLENDVPS): Likewise.
6563         (IX86_BUILTIN_PBLENDVB128): Likewise.
6564         (IX86_BUILTIN_PBLENDW128): Likewise.
6565         (IX86_BUILTIN_DPPD): Likewise.
6566         (IX86_BUILTIN_DPPS): Likewise.
6567         (IX86_BUILTIN_INSERTPS128): Likewise.
6568         (IX86_BUILTIN_MOVNTDQA): Likewise.
6569         (IX86_BUILTIN_MPSADBW128): Likewise.
6570         (IX86_BUILTIN_PACKUSDW128): Likewise.
6571         (IX86_BUILTIN_PCMPEQQ): Likewise.
6572         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
6573         (IX86_BUILTIN_PMAXSB128): Likewise.
6574         (IX86_BUILTIN_PMAXSD128): Likewise.
6575         (IX86_BUILTIN_PMAXUD128): Likewise.
6576         (IX86_BUILTIN_PMAXUW128): Likewise.
6577         (IX86_BUILTIN_PMINSB128): Likewise.
6578         (IX86_BUILTIN_PMINSD128): Likewise.
6579         (IX86_BUILTIN_PMINUD128): Likewise.
6580         (IX86_BUILTIN_PMINUW128): Likewise.
6581         (IX86_BUILTIN_PMOVSXBW128): Likewise.
6582         (IX86_BUILTIN_PMOVSXBD128): Likewise.
6583         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
6584         (IX86_BUILTIN_PMOVSXWD128): Likewise.
6585         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
6586         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
6587         (IX86_BUILTIN_PMOVZXBW128): Likewise.
6588         (IX86_BUILTIN_PMOVZXBD128): Likewise.
6589         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
6590         (IX86_BUILTIN_PMOVZXWD128): Likewise.
6591         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
6592         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
6593         (IX86_BUILTIN_PMULDQ128): Likewise.
6594         (IX86_BUILTIN_PMULLD128): Likewise.
6595         (IX86_BUILTIN_ROUNDPD): Likewise.
6596         (IX86_BUILTIN_ROUNDPS): Likewise.
6597         (IX86_BUILTIN_ROUNDSD): Likewise.
6598         (IX86_BUILTIN_ROUNDSS): Likewise.
6599         (IX86_BUILTIN_PTESTZ): Likewise.
6600         (IX86_BUILTIN_PTESTC): Likewise.
6601         (IX86_BUILTIN_PTESTNZC): Likewise.
6602         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
6603         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
6604         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
6605         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
6606         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
6607         (bdesc_ptest): New.
6608         (bdesc_sse_3arg): Likewise.
6609         (bdesc_2arg): Likewise.
6610         (bdesc_1arg): Likewise.
6611         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
6612         with 3 args.
6613         (ix86_expand_sse_4_operands_builtin): New.
6614         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
6615         smaller than 8 bits as the 2nd arg.
6616         (ix86_expand_sse_ptest): New.
6617         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
6618         (ix86_expand_vector_set): Support SSE4.1.
6619         (ix86_expand_vector_extract): Likewise.
6620
6621         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
6622         __SSE4_1__ for -msse4.1.
6623
6624         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
6625         (UNSPEC_INSERTPS): Likewise.
6626         (UNSPEC_DP): Likewise.
6627         (UNSPEC_MOVNTDQA): Likewise.
6628         (UNSPEC_MPSADBW): Likewise.
6629         (UNSPEC_PHMINPOSUW): Likewise.
6630         (UNSPEC_PTEST): Likewise.
6631         (UNSPEC_ROUNDP): Likewise.
6632         (UNSPEC_ROUNDS): Likewise.
6633
6634         * config/i386/i386.opt (msse4.1): New for SSE4.1.
6635
6636         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
6637         (const_pow2_1_to_32768_operand): Likewise.
6638
6639         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
6640         file.
6641
6642         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
6643         SSE4.1.
6644         (sse4_1_insertps): Likewise.
6645         (*sse4_1_extractps): Likewise.
6646         (sse4_1_ptest): Likewise.
6647         (sse4_1_mulv2siv2di3): Likewise.
6648         (*sse4_1_mulv4si3): Likewise.
6649         (*sse4_1_smax<mode>3): Likewise.
6650         (*sse4_1_umax<mode>3): Likewise.
6651         (*sse4_1_smin<mode>3): Likewise.
6652         (*sse4_1_umin<mode>3): Likewise.
6653         (sse4_1_eqv2di3): Likewise.
6654         (*sse4_1_pinsrb): Likewise.
6655         (*sse4_1_pinsrd): Likewise.
6656         (*sse4_1_pinsrq): Likewise.
6657         (*sse4_1_pextrb): Likewise.
6658         (*sse4_1_pextrb_memory): Likewise.
6659         (*sse4_1_pextrw_memory): Likewise.
6660         (*sse4_1_pextrq): Likewise.
6661         (sse4_1_blendpd): Likewise.
6662         (sse4_1_blendps): Likewise.
6663         (sse4_1_blendvpd): Likewise.
6664         (sse4_1_blendvps): Likewise.
6665         (sse4_1_dppd): Likewise.
6666         (sse4_1_dpps): Likewise.
6667         (sse4_1_movntdqa): Likewise.
6668         (sse4_1_mpsadbw): Likewise.
6669         (sse4_1_packusdw): Likewise.
6670         (sse4_1_pblendvb): Likewise.
6671         (sse4_1_pblendw): Likewise.
6672         (sse4_1_phminposuw): Likewise.
6673         (sse4_1_extendv8qiv8hi2): Likewise.
6674         (*sse4_1_extendv8qiv8hi2): Likewise.
6675         (sse4_1_extendv4qiv4si2): Likewise.
6676         (*sse4_1_extendv4qiv4si2): Likewise.
6677         (sse4_1_extendv2qiv2di2): Likewise.
6678         (*sse4_1_extendv2qiv2di2): Likewise.
6679         (sse4_1_extendv4hiv4si2): Likewise.
6680         (*sse4_1_extendv4hiv4si2): Likewise.
6681         (sse4_1_extendv2hiv2di2): Likewise.
6682         (*sse4_1_extendv2hiv2di2): Likewise.
6683         (sse4_1_extendv2siv2di2): Likewise.
6684         (*sse4_1_extendv2siv2di2): Likewise.
6685         (sse4_1_zero_extendv8qiv8hi2): Likewise.
6686         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
6687         (sse4_1_zero_extendv4qiv4si2): Likewise.
6688         (*sse4_1_zero_extendv4qiv4si2): Likewise.
6689         (sse4_1_zero_extendv2qiv2di2): Likewise.
6690         (*sse4_1_zero_extendv2qiv2di2): Likewise.
6691         (sse4_1_zero_extendv4hiv4si2): Likewise.
6692         (*sse4_1_zero_extendv4hiv4si2): Likewise.
6693         (sse4_1_zero_extendv2hiv2di2): Likewise.
6694         (*sse4_1_zero_extendv2hiv2di2): Likewise.
6695         (sse4_1_zero_extendv2siv2di2): Likewise.
6696         (*sse4_1_zero_extendv2siv2di2): Likewise.
6697         (sse4_1_roundpd): Likewise.
6698         (sse4_1_roundps): Likewise.
6699         (sse4_1_roundsd): Likewise.
6700         (sse4_1_roundss): Likewise.
6701         (mulv4si3): Don't expand for SSE4.1.
6702         (smax<mode>3): Likewise.
6703         (umaxv4si3): Likewise.
6704         (uminv16qi3): Likewise.
6705         (umin<mode>3): Likewise.
6706         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
6707
6708         * doc/extend.texi: Document SSE4.1 built-in functions.
6709
6710         * doc/invoke.texi: Document -msse4.1.
6711
6712 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
6713
6714         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
6715         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
6716         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
6717         (ASM_SPEC): Add asm_pcrel_spec.
6718         (EXTRA_SPECS): Add asm_pcrel_spec.
6719
6720 2007-05-21  David Daney  <ddaney@avtrex.com>
6721
6722         * doc/install.texi (Building a cross compiler): Add requirements
6723         for Java cross compiler.
6724
6725 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6726
6727         PR middle-end/31995
6728         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
6729         Add loopno argument.  Use evolution_function_is_invariant_rec_p
6730         instead of evolution_function_is_constant_p.
6731         Update calls to evolution_function_is_affine_multivariate_p.
6732         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
6733         Add loopno argument.
6734         * tree-scalar-evolution.c (gather_chrec_stats): Call
6735         evolution_function_is_affine_multivariate_p with a loop
6736         number of 0.
6737         * tree-data-ref.c (analyze_miv_subscript): Likewise.
6738         (analyze_overlapping_iterations): Likewise.
6739         (access_functions_are_affine_or_constant_p): Likewise.
6740         (build_classic_dist_vector_1): If the access functions
6741         are equal, don't do anything.
6742
6743 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
6744             Paolo Carlini  <pcarlini@suse.de>
6745             Uros Bizjak  <ubizjak@gmail.com>
6746
6747         * c-cppbuiltin.c (c_cpp_builtins): Define
6748         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
6749         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
6750         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
6751         * doc/cpp.texi ([Standard Predefined Macros]): Document.
6752
6753 2007-05-21  Mike Stump  <mrs@apple.com>
6754
6755         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
6756         handling as well.
6757         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
6758
6759 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
6760
6761         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
6762         implementation if __OPTIMIZE__ is not defined.
6763         (_mm_alignr_pi8): Ditto.
6764         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
6765         (_mm_inserti_si64): Ditto.
6766         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
6767         (_mm_slli_epi16): Ditto.
6768         (_mm_slli_epi32): Ditto.
6769         (_mm_slli_epi64): Ditto.
6770         (_mm_srai_epi16): Ditto.
6771         (_mm_srai_epi32): Ditto.
6772         (_mm_srli_si128): Ditto.
6773         (_mm_slli_si128): Ditto.
6774         (_mm_srli_epi16): Ditto.
6775         (_mm_srli_epi32): Ditto.
6776         (_mm_srli_epi64): Ditto.
6777         (_mm_extract_epi16): Ditto.
6778         (_mm_insert_epi16): Ditto.
6779         (_mm_shufflehi_epi16): Ditto.
6780         (_mm_shufflelo_epi16): Ditto.
6781         (_mm_shuffle_epi32): Ditto.
6782         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
6783         (_m_pextrw): Ditto.
6784         (_mm_insert_pi16): Ditto.
6785         (_m_pinsrw): Ditto.
6786         (_mm_shuffle_pi16): Ditto.
6787         (_m_pshufw): Ditto.
6788         (_mm_shufle_ps): Ditto.
6789         (_mm_prefetch): Ditto.
6790
6791 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
6792
6793         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
6794         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
6795         * real.c (encode_i370_single, decode_i370_single,
6796         encode_i370_double, decode_i370_double): Functions removed.
6797         (i370_single_format, i370_double_format): Initializations removed.
6798         (real_maxval, round_for_format, exact_real_truncate, significand_size):
6799         Consider the log2_b field to always be one.
6800         (ieee_single_format, mips_single_format, coldfire_single_format,
6801         ieee_double_format, mips_double_format, coldfire_double_format,
6802         ieee_extended_motorola_format, ieee_extended_intel_96_format,
6803         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
6804         ibm_extended_format, mips_extended_format, ieee_quad_format,
6805         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
6806         decimal_single_format, decimal_double_format, decimal_quad_format,
6807         c4x_single_format, c4x_extended_format, real_internal_format): Remove
6808         initialization of log2_b.
6809         * real.h (i370_single_format, i370_double_format): Declarations
6810         removed.
6811         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
6812         field to always be one.
6813
6814 2007-05-21  Andreas Schwab  <schwab@suse.de>
6815
6816         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
6817         NOTE_INSN_BASIC_BLOCK_P.
6818         (process_for_unwind_directive): Likewise.
6819
6820 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
6821
6822         * builtins.c (expand_builtin_setjmp_setup): Update comment.
6823         * function.h (struct function): Move va_list_gpr_size,
6824         va_list_fpr_size, function_frequency to front of bitfields.  Add
6825         calls_unwind_init.
6826         (current_function_calls_unwind_init): New.
6827         * except.c (expand_builtin_unwind_init): Set
6828         current_function_calls_unwind_init not
6829         current_function_has_nonlocal_label.
6830         * reload1.c (has_nonexceptional_receiver): New.
6831         (reload): Use it and current_function_calls_unwind_init to
6832         determine whether call-saved regs must be saved.
6833
6834 2007-05-20  Jan Hubicka  <jh@suse.cz>
6835
6836         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
6837         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
6838         * ddg.c (create_ddg): LIkewise.
6839         * final.c (final): Remove hunk moving line number notes around since
6840         they are no longer present at this stage.
6841         (final_scan_insn): Use NOTE_KIND instead of
6842         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
6843         (output_asm_label): Likewise.
6844         * reorg.c (dbr_schedule): Likewise.
6845         * haifa-sched.c (unlink_other_notes): Likewise.
6846         * mode-switching.c (optimize_mode_switching): Likewise.
6847         * graph.c (start_bb): Likewise.
6848         * rtl.def (NOTE): Update description.
6849         * jump.c (squeeze_notes): Delete.
6850         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
6851         NOTE_INSN_BASIC_BLOCK_P when possible.
6852         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
6853         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
6854         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
6855         (dwarf2out_var_location): Likewise.
6856         * cfgbuild.c (make_edges): Likewise.
6857         (find_basic_blocks_1): Likewise.
6858         * function.c (reorder_blocks_1): Likewise.
6859         (epilogue_done): Likewise.
6860         (reposition_prologue_and_epilogue_notes): Likewise.
6861         * print-rtl.c (print_rtx): Likewise; drop code for printing
6862         line number notes.
6863         (print_rtl): Likewise.
6864         (print_rtl_single): Likewise.
6865         * gcse.c (insert_insn_start_bb): Likewise.
6866         * alias.c (init_alias_analysis): Likewise.
6867         * calls.c (fixup_tail_calls): Likewise.
6868         * except.c (sjlj_emit_function_enter): Likewise.
6869         * emit-rtl.c (add_insn_after): Likeiwse.
6870         (emit_label_before): Likewise.
6871         (emit_label_after): Likewise.
6872         (emit_note_before, emit_note_after, emit_note): Update
6873         parameter to be enum insn_note; do not deal with source
6874         files.
6875         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
6876         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
6877         when possible.
6878         (merge_blocks_move_successor_nojumps): Simplify now when
6879         we don't have BLOCK notes.
6880         (try_optimize_cfg): Likewise.
6881         * cfglayout.c (skip_insns_after_block): Likewise.
6882         (record_effective_endpoints): Likewise.
6883         (duplicate_insn_chain): Likewise.
6884         * varasm.c (output_constant_pool_1): Likewise.
6885         * sched-deps.c (sched_analyze): Likewise.
6886         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
6887         Exterminate.
6888         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
6889         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
6890         (SET_INSN_DELETED): Simplify.
6891         (NOTE_LINE_NUMBER): Exterminate.
6892         (NOTE_LINE_KIND): New.
6893         (NOTE_INSN_BASIC_BLOCK_P): Update.
6894         (enum insn_note): Simplify.
6895         (GET_NOTE_INSN_NAME) Simplify.
6896         (emit_note_before, emit_note_after, emit_note): Update prototype.
6897         (squeeze_notes): Remove.
6898         * sched-int.h (NOTE_NOT_BB_P): Update.
6899         * resource.c (mark_target_live_regs): Update.
6900         * sched-rgn.c (debug_dependencies): Update.
6901         * sched-vis.c (print_insn): Update.
6902         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
6903         * config/i386/i386.c (ix86_output_function_epilogue): Update.
6904         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
6905         (TARGET_ADJUST_UNROLL_MAX): Likewise.
6906         (split_branches): Update.
6907         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
6908         4.0.0.
6909         (sh_adjust_unroll_max): Exterminate.
6910         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
6911         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
6912         (m68hc11_reorg): Likewise.
6913         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
6914         (emit_predicate_relation_info): Update.
6915         (process_for_unwind_directive): Update.
6916         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
6917         (output_call): Update.
6918         * config/pa/pa.c (output_lbranch): Update.
6919         (output_millicode_call): Update.
6920         (output_call): Update.
6921         (pa_combine_instructions): Update.
6922         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
6923         * config/bfin/bfin.c (gen_one_bundle): Update.
6924         * cfgrtl.c (can_delete_note_p): Update.
6925         (delete_insn): Update.
6926         (rtl_merge_blocks): Update.
6927         (commit_one_edge_insertion): Update.
6928         (rtl_verify_flow_info): Update.
6929         * stmt.c (expand_case): Do not call squeeze_notes.
6930
6931 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6932
6933         PR middle-end/7651
6934         PR c++/11856
6935         PR c/12963
6936         PR c/23587
6937         PR other/29694
6938         * c.opt (Wtype-limits): New.
6939         * doc/invoke.texi (Wtype-limits): Document it.
6940         (Wextra): Enabled by -Wextra.
6941         * c-opts.c (c_common_post_options): Enabled by -Wextra.
6942         * c-common.c (shorten_compare): Warn with Wtype-limits.
6943
6944 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
6945
6946         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
6947         inlined function, not as a macro.
6948         (_mm_alignr_pi8): Ditto.
6949         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
6950         (_mm_inserti_si64): Ditto.
6951         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
6952         (_mm_extract_epi16): Ditto.
6953         (_mm_insert_epi16): Ditto.
6954         (_mm_shufflehi_epi16): Ditto.
6955         (_mm_shufflelo_epi16): Ditto.
6956         (_mm_shuffle_epi32): Ditto.
6957         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
6958         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
6959         all functions.
6960         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
6961         float constant.
6962         (_m_to_float): Use C89 compatible assignment.
6963
6964 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
6965
6966         PR target/32007
6967         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
6968
6969 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6970
6971         PR middle-end/7651
6972         * doc/invoke.texi (Wreturn-type): Complete description.
6973         (Wextra): Delete item about return-type warning.
6974         * c-decl.c: Delete redundant Wextra warning.
6975
6976 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
6977
6978         PR target/31585
6979         * config/i386/pmmintrin.h: Do not include xmmintrin.h
6980         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
6981         inlined function, not as a macro.
6982         (_mm_prefetch): Ditto.
6983         (_m_pextrw): Ditto.
6984         (_mm_insert_pi16): Ditto.
6985         (_m_pinsrw): Ditto.
6986         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
6987         (_m_pshufw): Ditto. Add const to __N argument.
6988         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
6989         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
6990         (_mm_slli_epi32): Ditto.
6991         (_mm_srli_si128): Implement as always inlined function, not as a
6992         macro.  Add __inline to function declaration.
6993         (_mm_slli_si128): Ditto.
6994
6995 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
6996
6997         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
6998         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
6999         New constants.
7000         (struct fenv): New structure.
7001         (FP_HANDLE_EXCEPTIONS): New define.
7002         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
7003         (_FP_DECL_EXP): New define.
7004         (FP_INIT_ROUNDMODE): New define.
7005         (FP_ROUNDMODE): New define.
7006
7007 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7008
7009         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
7010         (Wconversion): Update description.
7011         (Wconversion-sign): New.
7012         * c.opt (Wconversion-sign): New.
7013         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
7014         means disabled for C++. Otherwise, take the status of Wconversion.
7015         * c-common.c (conversion_warning): Warn with either Wconversion or
7016         Wconversion-sign.
7017         (warnings_for_convert_and_check): Conditions are already checked by
7018         conversion_warning.
7019         (convert_and_check): Don't check warnings if the conversion failed.
7020
7021 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
7022            Anatoly Sokolov <aesok@dol.ru>
7023
7024         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
7025         avr_epilogue_uses) : Add declaration.
7026         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
7027         * config/avr/constraints.md (R): New constraint.
7028         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
7029         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
7030         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
7031         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
7032         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
7033         call_prologue_saves, epilogue_restores, return_from_epilogue,
7034         return_from_main_epilogue, return_from_interrupt_epilogue,
7035         return_from_naked_epilogue, prologue, epilogue): New patterns.
7036         (jump): Handle symbol reference.
7037         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
7038         avr_output_function_prologue, avr_output_function_epilogue): Remove
7039         functions.
7040         (avr_init_machine_status, expand_prologue, expand_epilogue,
7041         avr_asm_function_end_prologue, avr_epilogue_uses,
7042         avr_asm_function_begin_epilogue): New functions.
7043         (prologue_size, epilogue_size, jump_tables_size): Remove global
7044         variables.
7045         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
7046         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
7047         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
7048         (avr_override_options): Initialise init_machine_status.
7049         (output_movhi): Handle all stack pointer loads.
7050         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
7051         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
7052         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
7053         (EPILOGUE_USES) Redefine.
7054         (machine_function) Declare.
7055
7056 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
7057
7058         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
7059         Use a single return statement.
7060
7061 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7062
7063         PR middle-end/30250
7064         * builtins.c (do_mpfr_lgamma_r): New.
7065         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
7066         * tree.h (CASE_FLT_FN_REENT): New.
7067
7068 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
7069
7070         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
7071         (output_die): Use 'unsigned long' with %x.
7072         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
7073         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
7074         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
7075
7076         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
7077
7078 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
7079
7080         PR target/31989
7081         PR target/31681
7082         PR target/31666
7083         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
7084         true if function has no argument.
7085
7086 2007-05-18  DJ Delorie  <dj@redhat.com>
7087
7088         * config/mips/mips.c (mips_offset_within_alignment_p): New.
7089         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
7090
7091 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
7092
7093         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
7094         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
7095         count_trailing_zeros.
7096         (__i386__): Implement count_leading_zeros using __builtin_clz().
7097         Implement count_trailing_zeros usign __builtin_ctz().
7098
7099 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
7100
7101         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
7102
7103 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
7104
7105         PR middle-end/31344
7106         * expr.c (emit_move_change_mode): Change mode of push operands here.
7107
7108 2007-05-17  Ian Lance Taylor  <iant@google.com>
7109
7110         PR tree-optimization/31953
7111         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
7112         Change all callers.
7113         (set_value_range_to_null): Call set_value_range_to_value.
7114         (extract_range_from_comparison): Likewise.
7115
7116 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7117
7118         * toplev.c (print_version): Output GMP/MPFR version info.
7119
7120         * builtins.c (CASE_MATHFN_REENT): New macro.
7121         (mathfn_built_in): Use it.
7122         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
7123         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
7124         BUILT_IN_LGAMMAL_R): New.
7125         * doc/extend.texi: Document new builtins.
7126
7127         PR middle-end/31796
7128         * builtins.c (do_mpfr_remquo): New.
7129         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
7130         (fold_builtin_3): Handle BUILT_IN_REMQUO.
7131
7132         PR middle-end/30251
7133         * builtins.c (fold_builtin_1): Handle y0, y1.
7134         (fold_builtin_2): Handle yn.
7135
7136         PR middle-end/30251
7137         * builtins.c (do_mpfr_bessel_n): New.
7138         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
7139         (fold_builtin_2): Handle BUILT_IN_JN.
7140
7141 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
7142
7143         PR target/31965
7144         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
7145         TYPE_PRECISION (intmax_type_node).
7146
7147 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
7148
7149         PR target/31850
7150         * reload.c (subst_reloads): Remove checking.
7151
7152 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
7153
7154         PR rtl-optimization/31691
7155         * combine.c (simplify_set): Build a new src pattern instead of
7156         substituting its operands in the COMPARE case.
7157
7158 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
7159
7160         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
7161         (execute_vrp): Preserve loops through jump threading.
7162         * tree-ssa-threadupdate.c (thread_single_edge,
7163         dbds_continue_enumeration_p, determine_bb_domination_status,
7164         thread_through_loop_header): New functions.
7165         (create_edge_and_update_destination_phis,
7166         create_edge_and_update_destination_phis): Set loops for the new blocks.
7167         (prune_undesirable_thread_requests): Removed.
7168         (redirect_edges): Do not pretend that redirect_edge_and_branch can
7169         create new blocks.
7170         (thread_block): Do not call prune_undesirable_thread_requests.
7171         Update loops.
7172         (mark_threaded_blocks): Select edges to thread here.
7173         (thread_through_all_blocks): Take may_peel_loop_headers argument.
7174         Thread edges through loop headers independently.
7175         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
7176         * tree-pass.h (TODO_mark_first_instance): New.
7177         (first_pass_instance): Declare.
7178         * cfghooks.c (duplicate_block): Put the block to the original loop
7179         if copy is not specified.
7180         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
7181         jump threading.  Pass may_peel_loop_headers to
7182         thread_through_all_blocks according to first_pass_instance.
7183         * cfgloop.h (create_preheader): Declare.
7184         * tree-flow.h (thread_through_all_blocks): Declaration changed.
7185         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
7186         * passes.c (first_pass_instance): New variable.
7187         (next_pass_1): Set TODO_mark_first_instance.
7188         (execute_todo): Set first_pass_instance.
7189
7190 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
7191
7192         PR tree-optimization/24659
7193         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
7194         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
7195         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
7196         OTI_vec_pack_ufix_trunc.
7197         (vec_unpacks_float_hi_optab): Define new macro.
7198         (vec_unpacks_float_lo_optab): Ditto.
7199         (vec_unpacku_float_hi_optab): Ditto.
7200         (vec_unpacku_float_lo_optab): Ditto.
7201         (vec_pack_sfix_trunc_optab): Ditto.
7202         (vec_pack_ufix_trunc_optab): Ditto.
7203         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
7204         and vec_pack_[s|u]fix_trunc_optab using
7205         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
7206         * tree-vectorizer.c (supportable_widening_operation): Handle
7207         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
7208         (supportable_narrowing_operation): New function.
7209         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
7210         * tree-vect-transform.c (vectorizable_conversion): Handle
7211         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
7212         (vect_gen_widened_results_half): Move before vectorizable_conversion.
7213         (vectorizable_type_demotion): Call supportable_narrowing_operation()
7214         to check for target support.
7215         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
7216         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
7217         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
7218         for VEC_PACK_FIX_TRUNC_EXPR.
7219         (expand_binop): Special case mode of the result for
7220         vec_pack_[u|s]fix_trunc_optab.
7221         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
7222         vec_pack_[u|s]fix_trunc_optab.
7223
7224         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
7225         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
7226         * tree-pretty-print.c (dump_generic_node): Handle
7227         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
7228         VEC_PACK_FIX_TRUNC_EXPR.
7229         (op_prio): Ditto.
7230         * expr.c (expand_expr_real_1): Ditto.
7231         * tree-inline.c (estimate_num_insns_1): Ditto.
7232         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
7233
7234         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
7235         (vec_unpacks_float_lo_v8hi): Ditto.
7236         (vec_unpacku_float_hi_v8hi): Ditto.
7237         (vec_unpacku_float_lo_v8hi): Ditto.
7238         (vec_unpacks_float_hi_v4si): Ditto.
7239         (vec_unpacks_float_lo_v4si): Ditto.
7240         (vec_pack_sfix_trunc_v2df): Ditto.
7241
7242         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
7243         Document.
7244         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
7245         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
7246         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
7247         [vec_pack_ufix_trunc]: Ditto.
7248         [vec_unpacks_float_hi]: Ditto.
7249         [vec_unpacks_float_lo]: Ditto.
7250         [vec_unpacku_float_hi]: Ditto.
7251         [vec_unpacku_float_lo]: Ditto.
7252
7253 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
7254
7255         * soft-fp/README: Update for new files.
7256         * soft-fp/floattisf.c: New file.
7257         * soft-fp/floattidf.c: New file.
7258         * soft-fp/floattitf.c: New file.
7259         * soft-fp/floatuntisf.c: New file.
7260         * soft-fp/floatuntidf.c: New file.
7261         * soft-fp/floatuntitf.c: New file.
7262         * soft-fp/fixsfti.c: New file.
7263         * soft-fp/fixdfti.c: New file.
7264         * soft-fp/fixtfti.c: New file.
7265         * soft-fp/fixunssfti.c: New file.
7266         * soft-fp/fixunsdfti.c: New file.
7267         * soft-fp/fixunstfti.c: New file.
7268         * soft-fp/extendxftf.c: New file.
7269         * soft-fp/trunctfxf.c: New file.
7270
7271         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
7272         (__trunctfxf2): Ditto.
7273
7274         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
7275         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
7276         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
7277         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
7278         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
7279         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
7280
7281         * config/i386/t-fprules-softfp64: New file.
7282         * config/i386/sfp-machine.h: New file.
7283         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
7284         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
7285         and soft-fp/t-softfp to tmake_file.
7286         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
7287         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
7288
7289         * config/i386/t-linux64 (softfp_wrap_start): New.
7290         (softfp_wrap_end): New.
7291         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
7292         supported for TARGET_64BIT.
7293
7294 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
7295
7296         * c-common.c (c_common_signed_or_unsigned_type): Emulate
7297         c_common_unsigned_type behavior.
7298
7299 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
7300
7301         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
7302         calls as pure.
7303
7304 2007-05-16  Eric Christopher  <echristo@apple.com>
7305
7306         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
7307         saving after stack push. Set sp_offset whenever we push.
7308         (rs6000_emit_epilogue): Move altivec register restore before
7309         stack push.
7310
7311 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
7312
7313         * configure.ac: Allow sysroots to be relocated under $prefix as
7314         well as $exec_prefix.
7315         * configure: Regenerate.
7316
7317 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
7318
7319         Revert:
7320
7321         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
7322
7323         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
7324         (gcc_tooldir): Likewise.
7325         * configure: Regenerate.
7326         * Makefile.in (libsubdir_to_prefix): New variable, based on the
7327         old configure.ac gcc_tooldir setting.
7328         (prefix_to_exec_prefix): New variable.
7329         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
7330         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
7331
7332 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
7333
7334         * c-typeck.c (build_binary_op): Return early for error.
7335
7336 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
7337
7338         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
7339         struct nb_iter_bound.
7340         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
7341         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
7342         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
7343         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
7344         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
7345         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
7346         (del_scev_info): Use ggc_free.
7347         (scev_initialize): Allocate scalar_evolution_info in gc memory.
7348         * loop-init.c: Include ggc.h.
7349         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
7350         (loop_optimizer_finalize): Use ggc_free.
7351         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
7352         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
7353         pass_iv_optimize): Add TODO_ggc_collect.
7354         * function.h (struct function): Remove skip marker from
7355         x_current_loops.
7356         * cfgloop.c: Include ggc.h.
7357         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
7358         memory.
7359         (establish_preds): Vector superloops is gc allocated.
7360         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
7361         loop->exits list.
7362         (flow_loops_find): Vector larray is gc allocated.
7363         (loop_exit_free): Use ggc_free.
7364         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
7365         that head of exits list is now not a part of struct loop.
7366         (record_loop_exits): Allocate exits table in gc memory.
7367         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
7368         that head of exits list is now not a part of struct loop.
7369         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
7370         struct loop_exit): Add GTY marker.
7371         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
7372         Add skip marker to aux field.  Make head of exits list a separate
7373         object.
7374         (struct loops): Add GTY marker.  Make larray vector gc allocated.
7375         Add param marker to exits table.
7376         (get_loops): Type changed.
7377         * Makefile.in (tree-scalar-evolution.o): Add
7378         gt-tree-scalar-evolution.h dependency.
7379         (cfgloop.o, loop-init.o): Add ggc.h dependency.
7380         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
7381         * basic-block.h (struct basic_block_def): Remove skip marker from
7382         loop_father field.
7383
7384 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
7385
7386         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
7387         of 0 in the call to expand_expr().
7388         (expand_builtin_mathfn_3): Ditto.
7389         (expand_builtin_interclass_mathfn): Ditto.
7390         (expand_builtin_cexpi): Ditto.
7391         (expand_builtin_int_roundingfn): Ditto.
7392         (expand_builtin_int_roundingfn_2): Ditto.
7393         (expand_builtin_pow): Ditto.
7394         (expand_builtin_powi): Ditto.
7395         (expand_builtin_bswap): Ditto.
7396         (expand_builtin_unop): Ditto.
7397         (expand_builtin_fabs): Ditto.
7398         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
7399         the call to expand_expr().
7400         (expand_builtin_sync_operation): Ditto.
7401         (expand_builtin_compare_and_swap): Ditto.
7402         (expand_builtin_lock_test_and_set): Ditto.
7403         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
7404         instead of 0 in the call to expand_expr().
7405         (expand_builtin_extract_return_addr): Ditto.
7406         (expand_builtin_eh_return): Ditto.
7407         (expand_eh_return): Ditto.
7408         * explow.c (expr_size): Ditto.
7409         * expr.c (optimize_bitfield_assignment_op): Ditto.
7410         (expand_assignement): Ditto.
7411         (store_expr): Ditto.
7412         (store_field): Ditto.
7413         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
7414         the call to expand_expr().
7415         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
7416         in the call to expand_expr().
7417         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
7418         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
7419         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
7420         of expand_expr().
7421         * optabs.c (expand_vec_shift_expr): Ditto.
7422         (expand_vec_cond_expr): Ditto.
7423         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
7424         call to expand_expr().
7425         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
7426         in the call to expand_expr().
7427
7428 2007-05-14  Dave Korn  <dave.korn@artimi.com>
7429
7430         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
7431
7432 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
7433
7434         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
7435         instead of c_common_unsigned_type.
7436         (c_common_unsigned_type): Remove.
7437         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
7438         c_common_unsigned_type.
7439         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
7440         c_common_unsigned_type.
7441         * c-common.h (c_common_unsigned_type): Remove.
7442         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
7443         c_common_unsigned_type.
7444         * c-format.c (check_format_types): Use unsigned_type_for instead of
7445         c_common_unsigned_type.
7446         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
7447         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
7448         of c_common_unsigned_type.
7449         * convert.c (convert_to_integer): Use unsigned_type_for instead of
7450         lang_hooks.types.unsigned_type.
7451         * expmed.c (make_tree): Use unsigned_type_for instead of
7452         lang_hooks.types.unsigned_type.
7453         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
7454         lang_hooks.types.unsigned_type.
7455         (build_range_check): Likewise.
7456         (fold_unary): Likewise.
7457         (fold_binary): Likewise.
7458         (fold_ternary): Likewise.
7459         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
7460         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
7461         * tree.c (get_unsigned_type): New.
7462         (unsigned_type_for): Use get_unsigned_type instead of
7463         lang_hooks.types.unsigned_type.
7464
7465 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
7466
7467         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
7468         to m68k_get_function_kind.  Update its prototype.
7469         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
7470         interrupt_thread.
7471         (m68k_interrupt_function_p): Return enum m68k_function_type
7472         instead of bool.  Rename to m68k_get_function_kind.
7473         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
7474         target is not fido.
7475         (m68k_compute_frame_layout): Don't mark any register for save
7476         if an interrupt_thread attribute is specified.
7477         (m68k_hard_regno_rename_ok): Update a use of
7478         m68k_interrupt_function_p.
7479         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
7480         m68k_interrupt_function_p.
7481         (m68k_function_type): New.
7482         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
7483         for a function with an interrupt_thread attribute.
7484         * doc/extend.texi: Document the interrupt_thread attribute.
7485
7486 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
7487
7488         Fix PR tree-optimization/31911
7489         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
7490         if they didn't change the expression.
7491
7492 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
7493
7494         * tree-scalar-evolution.c (resolve_mixers): Exported.
7495         * tree-scalar-evolution.h (resolve_mixers): Declare.
7496         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
7497         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
7498         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
7499         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
7500         init_array_ref, init_pointer_ref, analyze_indirect_ref,
7501         strip_conversion, analyze_offset_expr, address_analysis,
7502         object_analysis, analyze_offset): Removed.
7503         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
7504         split_constant_offset, canonicalize_base_object_address,
7505         object_address_invariant_in_loop_p, disjoint_objects_p,
7506         dr_may_alias_p, dr_address_invariant_p): New functions.
7507         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
7508         and dr_analyze_alias.
7509         (initialize_data_dependence_relation): Use dr_may_alias_p
7510         and object_address_invariant_in_loop_p.
7511         (compute_self_dependence): Handle the case when
7512         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
7513         (find_data_references_in_stmt): Restrict the analysis of data
7514         references to the given loop nest.
7515         (find_data_references_in_loop): Made static.  Pass loop nest to
7516         find_data_references_in_stmt.
7517         (compute_data_dependences_for_loop): Use DR_VOPS.
7518         (free_data_ref): Free DR_VOPS.
7519         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
7520         (struct innermost_loop_behavior): ... new.
7521         (struct base_object_info): Replaced by ...
7522         (struct indices): ... new.
7523         (struct dr_alias): New.
7524         (enum data_ref_type): Removed.
7525         (struct data_reference): Consist of struct innermost_loop_behavior,
7526         struct indices and struct dr_alias.
7527         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
7528         (DR_MEMTAG): Renamed to ...
7529         (DR_SYMBOL_TAG): ... this.
7530         (find_data_references_in_loop): Declaration removed.
7531         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
7532         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
7533         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
7534         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
7535
7536 2007-05-13  Revital Eres  <eres@il.ibm.com>
7537
7538         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
7539         which walks virtual def-use chains to find redundant stores.
7540         (dse_optimize_stmt): Call it.
7541
7542 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
7543
7544         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
7545         * passes.c (init_optimization_passes): Move pass_jump_bypass
7546         after loop2.
7547
7548         * basic-block.h (bb_has_eh_pred): Fix style issue.
7549
7550 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
7551
7552         PR rtl-optimization/31848
7553         * loop-invariant.c (move_invariant_reg): If we move an insn
7554         with a REG_EQUAL note, and that insn is not always executed,
7555         remove the REG_EQUAL note.
7556
7557 2007-05-12  Richard Guenther  <rguenther@suse.de>
7558
7559         PR tree-optimization/31797
7560         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
7561         propagate into a stmt that has volatile ops.
7562
7563 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
7564
7565         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
7566         (gcc_tooldir): Likewise.
7567         * configure: Regenerate.
7568         * Makefile.in (libsubdir_to_prefix): New variable, based on the
7569         old configure.ac gcc_tooldir setting.
7570         (prefix_to_exec_prefix): New variable.
7571         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
7572         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
7573
7574 2007-05-11  Silvius Rus  <rus@google.com>
7575
7576         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
7577         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
7578         * c-common.h (strict_aliasing_warning): Change return type.
7579         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
7580         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
7581         (build_c_cast): Condition call to strict_aliasing_warning.
7582         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
7583         * flags.h (set_Wstrict_aliasing): Declare.
7584         * opts.c (set_Wstrict_alising): Define, add call to.
7585         * tree-flow.h (strict_aliasing_warning_backend): Declare.
7586         * tree-ssa-alias-warnings.c: New file.
7587         * tree-ssa-alias.c (compute_may_aliases): Add call to
7588         strict_aliasing_warning_backend.
7589
7590 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
7591
7592         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
7593         Use loop_depth and loop_outer accessor functions.
7594         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
7595         determine_invariantness_stmt, move_computations_stmt): Ditto.
7596         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
7597         add_loop, loopify, unloop, fix_loop_structure): Ditto.
7598         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
7599         * tree-scalar-evolution.c (interpret_loop_phi,
7600         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
7601         instantiate_parameters_1, scev_const_prop): Ditto.
7602         * cfghooks.c (make_forwarder_block): Ditto.
7603         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
7604         * modulo-sched.c (loop_canon_p): Ditto.
7605         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
7606         slpeel_can_duplicate_loop_p): Ditto.
7607         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
7608         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
7609         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
7610         cancel_loop, verify_loop_structure): Ditto.
7611         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
7612         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
7613         superloops vector instead of "pred" array.
7614         (establish_preds): Take father loop as an argument.  Initialize the
7615         superloops vector.
7616         (flow_loop_tree_node_add): Pass father loop to establish_preds.
7617         Do not initialize loop->outer.
7618         (flow_loop_tree_node_remove): Truncate the superloops vector.
7619         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
7620         "pred" merged to "superloops" vector.
7621         (loop_depth, loop_outer): New.
7622         (fel_init): Use loop_outer.
7623
7624 2007-05-11  Jan Hubicka  <jh@suse.cz>
7625
7626         * cgraphunit.c: Include gt-cgraphunit.h
7627         (static_ctors, static_dtors): New static vars.
7628         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
7629         based on implementation in c-common.c
7630         (cgraph_finalize_function): Call record_cdtor_fn.
7631         (cgraph_optimize): Call cgraph_build_cdtor_fns.
7632         * decl.c (finish_function): Do not call c_record_cdtor_fn.
7633         (c_write_global_declarations): Do not call c_build_cdtor_fns.
7634         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
7635         build_cdtor, c_build_cdtor_fns): Remove.
7636         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
7637         c_build_cdtor_fns): Remove prototype.
7638
7639 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
7640
7641         PR other/31852
7642         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
7643         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
7644         * builtins.c (fold_builtin_memchr): New.
7645         (expand_builtin_memchr): Call the latter.
7646         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
7647         * doc/extend.texi ([Other built-in functions provided by GCC]):
7648         Document memchr.
7649
7650 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
7651
7652         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
7653         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
7654         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
7655         PFPO_OP1_TYPE_SHIFT): Constants added.
7656         (DFP_ALL): Mode macro defined.
7657         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
7658         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
7659         Insn definitions added.
7660         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
7661         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
7662         Expanders added.
7663
7664 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
7665
7666         PR tree-optimization/31885
7667         * tree-chrec.c (chrec_contains_undetermined): Do not consider
7668         NULL_TREE to be undetermined.
7669         (automatically_generated_chrec_p): Return false for NULL.
7670
7671 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
7672
7673         * config/bfin/bfin.h (MOVE_RATIO): Define.
7674
7675 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
7676
7677         * config.gcc (sparc-wrs-vxworks): New target.
7678         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
7679         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
7680         * config/sparc/sparc.h: Include vxworks-dummy.h.
7681         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
7682         include LABEL_REFs too.
7683         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
7684         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
7685         VxWorks.
7686         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
7687         on VxWorks.
7688         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
7689         (sparc_emit_call_insn): New function.
7690         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
7691         functions when generating VxWorks PIC.
7692         * config/sparc/sparc.md (vxworks_load_got): New pattern.
7693         (call, call_value): Use sparc_emit_call_insn instead of
7694         emit_call_insn.
7695
7696 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
7697
7698         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
7699
7700 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
7701
7702         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
7703         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
7704         split_double instead of operand_subword.
7705
7706 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
7707
7708         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
7709         * config/bfin/bfin.c (bfin_local_alignment): New function.
7710         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
7711
7712 2007-05-08  Chao-ying Fu  <fu@mips.com>
7713
7714         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
7715         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
7716         (smsub_widen_optab, umsub_widen_optab): Define.
7717         * optabs.c (init_optabs): Initialize smsub_widen_optab and
7718         umsub_widen_optab.
7719         * genopinit.c (optabs): Fill in smsub_widen_optab and
7720         umsub_widen_optab.
7721         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
7722         and umsub_widen_optab to implement multiply-subtract sequences.
7723         * config/mips/mips.md (*msac<u>_di): Rename to...
7724         (<u>msubsidi4): ...this.  Extend condition to include
7725         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
7726         of operand 0 to "ka" and use the three-operand form of msub<u>
7727         for TARGET_DSPR2.
7728         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
7729         to define_expands.
7730
7731 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
7732
7733         PR rtl-optimization/28011
7734         * reload.c (push_reload): Set dont_share if IN appears in OUT
7735         also when IN is a PLUS rtx.
7736         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
7737         are same PLUS rtx.
7738
7739 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
7740
7741         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
7742         call unshare_all_decls.
7743         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
7744         (unshare_all_decls): Remove.
7745
7746 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
7747
7748         PR 31847
7749         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
7750         dumps.
7751
7752 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
7753             Nigel Stephens  <nigel@mips.com>
7754
7755         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
7756         Update comments and all uses.
7757         (MIN_FPRS_PER_FMT): Define.
7758         * config/mips/mips.c (function_arg): Fix to correctly handle
7759         the -mips32r2 -mfp64 -mabi=32 case.
7760         (override_options): Enable use of odd-numbered registers for
7761         SFmode values on MIPS32.
7762         (mips_save_reg_p): Save whole floating-point register pair if
7763         either half is used.
7764         (compute_frame_size): Fix comment.
7765
7766 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
7767
7768         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
7769         argument of type bool.
7770         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
7771         argument. Safely select temporary P register according to it.
7772         (do_link): Change call site of add_to_reg accordingly.
7773         (do_unlink): Add epilogue_p as a fourth argument and pass it
7774         to add_to_reg.
7775         (expand_interrupt_handler_epilogue): Change call of do_unlink
7776         accordingly.
7777         (bfin_expand_prologue): Add a third argument sibcall_p.
7778         * config/bfin/bfin.md (epilogue): Change call of
7779         bfin_expand_epilogue accordingly.
7780         (sibcall_epilogue): Likewise.
7781         (eh_return_internal): Likewise.
7782
7783         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
7784         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
7785         * config/bfin/bfin.c (bfin_handle_option): Handle
7786         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
7787         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
7788         Support bf534, bf536 and bf561.
7789         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
7790
7791 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
7792
7793         PR target/31854
7794         * config/i386/i386.c (ix86_function_regparm): Process local
7795         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
7796
7797 2007-05-07  Mike Stump  <mrs@apple.com>
7798
7799         * doc/invoke.texi (Warning Options): Document that -Wempty-body
7800         also checks for and while statements in C++.
7801
7802 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
7803
7804         * gcc.c (at_file_supplied): New variable.
7805         (main): Set it if we expanded argv.
7806         (do_spec_1): Pass an @-file to the linker if we were called with
7807         an @-file argument and HAVE_GNU_LD.
7808         * collect2.c (at_file_supplied): New variable.
7809         (response_file): New variable.
7810         (collect_exit): Unlink response_file if necessary.
7811         (handler): Likewise.
7812         (do_wait): Likewise.
7813         (main): Set at_file_supplied if we expanded argv.
7814         (collect_execute): Pass an @-file to subprocesses if we were called
7815         with an @-file argument.
7816         * configure.ac: Add define for HAVE_GNU_LD.
7817         * configure: Regenerate.
7818         * config.in: Regenerate.
7819
7820 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
7821
7822         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
7823         operand to HI mode.
7824         (mulsi3): New.
7825         (divsi3): New.
7826         (udivsi3): New.
7827
7828 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
7829
7830         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
7831         (TARGET_ENCODE_SECTION_INFO): Re-define.
7832         (m32c_encode_section_info): New
7833         (function_vector_handler): New
7834         (current_function_special_page_vector): New
7835         (m32c_special_page_vector_p): New.
7836         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
7837         Prototype.
7838         * config/m32c/jump.md: Added instruction JSRS for functions
7839         with attribute "function_vector".
7840         * doc/extend.texi (function_vector): Added description
7841         for M16C, M32C targets.
7842
7843 2007-05-07  DJ Delorie  <dj@redhat.com>
7844
7845         PR 31794
7846         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
7847         ashrpsi3, lshrpsi3): Update shift count constraint.
7848
7849 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
7850             Nathan Froyd  <froydnj@codesourcery.com>
7851
7852         PR 22133
7853         * c-incpath.c (add_path): Strip trailing path separators.
7854
7855 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
7856
7857         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
7858         Free dominance info before purging EH edges.
7859         (eliminate_degenerate_phis): Likewise.
7860         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
7861
7862 2007-05-07  Jan Hubicka  <jh@suse.cz>
7863
7864         * gimplify.c (gimplify_expr): Do not crash when folding
7865         (void *)(int)&a + 4.
7866
7867 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
7868
7869         PR driver/31694
7870         * c-opts.c (lang_fortran): Make it non static.
7871         * c-common.h (lang_fortran): New prototype.
7872         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
7873         -lang-fortran option was passed by the driver.
7874
7875 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
7876
7877         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
7878         of ASSERT_CHECKING.  Tweak message.
7879
7880 2007-05-06  Revital Eres  <eres@il.ibm.com>
7881
7882         PR 30957
7883         * loop-unroll.c (insert_var_expansion_initialization):
7884         Initialize the expansions with -zero instead of +zero.
7885
7886 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
7887
7888         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
7889         into pic and non-pic versions. Mark r19 as used for
7890         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
7891         for tgd_load, tld_load and tie_load .
7892         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
7893         version of tgd_load, tld_load and tie_load depending on the
7894         value of flag_pic.
7895
7896 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
7897             Jakub Jelinek  <jakub@redhat.com>
7898
7899         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
7900         (__do_global_dtors_aux): Use more paranoid loop to run
7901         destructors if HIDDEN_DTOR_LIST_END.
7902         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
7903
7904 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
7905
7906         * varasm.c (align_variable): Don't increase alignment for
7907         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
7908         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
7909
7910 2007-05-04  Josh Conner  <jconner@apple.com>
7911
7912         * basic-block.h (cdi_direction): Assign values to all enumeration
7913         constants.
7914         (dom_computed): Remove.
7915         (dom_info_state): New.
7916         (set_dom_info_availability): New.
7917         * tree-ssa-loop-im.c (determine_invariantness): Initialize
7918         walk_data.dom_direction.
7919         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
7920         instead of dom_computed[].
7921         (split_edge): Likewise.
7922         (create_basic_block): Likewise.
7923         (merge_blocks): Likewise.
7924         * ifcvt.c (find_if_header): Likewise.
7925         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
7926         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
7927         * tree-ssa.c (verify_ssa): Likewise.
7928         * tree-cfg.c (tree_verify_flow_info): Likewise.
7929         (remove_edge_and_dominated_blocks): Likewise.
7930         * dominance.c (dom_computed): Make static.
7931         (calc_dfs_tree_nonrec): Change third param to a bool.
7932         (calc_dfs_tree): Change second param to a bool.
7933         (calc_idioms): Change second param to a bool.  Use
7934         dom_convert_dir_to_idx.
7935         (init_dom_info): Validate dir before using.
7936         (dom_convert_dir_to_idx): New.
7937         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
7938         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
7939         (free_dominance_info): Use dom_convert_dir_to_idx.
7940         (get_immediate_dominator): Likewise.
7941         (set_immediate_dominator): Likewise.
7942         (get_dominated_by): Likewise.
7943         (redirect_immediate_dominators): Likewise.
7944         (nearest_common_denominator): Likewise.
7945         (dominated_by_p): Likewise.
7946         (bb_dom_dfs_in): Likewise.
7947         (bb_dom_dfs_out): Likewise.
7948         (recount_dominator): Likewise.
7949         (iterate_fix_dominators): Likewise.
7950         (add_to_dominance_info): Likewise.
7951         (delete_from_dominance_info): Likewise.
7952         (first_dom_son): Likewise.
7953         (next_dom_son): Likewise.
7954         (dom_info_available_p): Likewise.
7955         (dom_info_state): New.
7956         (set_dom_info_availability): New.
7957
7958 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
7959
7960         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
7961         Expander removed.
7962         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
7963
7964 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
7965
7966         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
7967         (subdi3, subdi_carry): Delete.
7968
7969 2007-05-04  Jan Hubicka  <jh@suse.cz>
7970             Richard Guenther  <rguenther@suse.de>
7971
7972         * opts.c (decode_options): Do not fiddle with inlining
7973         parameters in case of optimizing for size.
7974         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
7975         for size do nothing.
7976         (cgraph_decide_inlining_of_small_function): When optimizing for
7977         size never inline functions increasing caller size.
7978         (cgraph_early_inlining): Inline for size when optimizing for size.
7979
7980 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
7981
7982         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
7983         logical operations piecewise.
7984         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
7985         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
7986         subdi_sesidi_di): Delete.
7987         (add_with_carry): Produce carry in CC instead of a DREG to shorten
7988         the generated sequence.  Allow three-reg add in constraints.  Rewrite
7989         the rtl expression for carry to avoid zero_extend of a constant.
7990         (sub_with_carry): New pattern.
7991         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
7992         different sequence not involving jumps.
7993         (notbi): Now a named pattern.
7994
7995 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
7996
7997         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
7998         Add the note about a significant loss of accuracy of some
7999         mathematical routines when these options are used.
8000
8001 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
8002
8003         * haifa-sched.c (rtx_vec_t): New typedef.
8004         (contributes_to_priority_p): Extract piece of priority () into new
8005         static function.
8006         (priority): Use the function.  Add assertion.
8007         (rank_for_schedule, set_priorities): Add assertion to check that
8008         insn's priority is initialized.
8009         (clear_priorities, calc_priorities): Change signature.  Make it update
8010         all relevant insns.  Update all callers ('add_to_speculative_block ()'
8011         and 'create_block_check_twin ()').
8012         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
8013         Add new field 'priority_status'.
8014         (INSN_PRIORITY_STATUS): New macro.
8015         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
8016
8017 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
8018
8019         * sched-ebb.c (debug_ebb_dependencies): New static function.
8020         (init_ready_list): Use it.
8021
8022         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
8023         with changed signature and 'debug_rgn_dependencies ()'.
8024         (debug_rgn_dependencies): New static function.
8025         (init_ready_list): Use it.
8026
8027         * sched-int.h (debug_dependencies): Declare.
8028
8029 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
8030
8031         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
8032
8033 2007-05-04  Dirk Mueller  <dmueller@suse.de>
8034
8035         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
8036
8037 2007-05-03  Jan Hubicka  <jh@suse.cz>
8038
8039         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
8040         ((T1)X op (T1)Y), for pointer type in more cases than before.
8041
8042         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
8043
8044         * tree-object-size.c (plus_expr_object_size): When operand size is
8045         unknown, return unknown.
8046
8047 2007-05-03  Dirk Mueller  <dmueller@suse.de>
8048
8049         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
8050
8051         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
8052         options.
8053
8054         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
8055
8056 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
8057
8058         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
8059
8060 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
8061
8062         * config/soft-fp/double.h, config/soft-fp/extended.h,
8063         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
8064         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
8065         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
8066         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
8067         glibc CVS.
8068
8069 2007-05-03  Ian Lance Taylor  <iant@google.com>
8070
8071         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
8072         MASK_PPC_GFXOPT for 8540 or 8548.
8073
8074 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
8075
8076         * tree-vect-transform.c (vect_update_inits_of_drs): Use
8077         vect_print_dump_info() to output debug information.
8078
8079 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
8080
8081         PR target/31768
8082         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
8083         operands of size 2 when operand is not MEM_P.
8084
8085 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
8086
8087         PR tree-optimization/30565
8088         * lambda-code.c (perfect_nestify): Fix updating of dominators.
8089
8090 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
8091
8092         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
8093         (umulsi3_highpart): Use them.
8094         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
8095         for final accumulator to D regisster tranfser.
8096
8097 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
8098
8099         PR tree-optimization/31699
8100         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
8101         wrong code.
8102         (vect_enhance_data_refs_alignment): Compute peel amount using
8103         TYPE_VECTOR_SUBPARTS instead of vf.
8104         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
8105
8106 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
8107
8108         PR bootstrap/31776
8109         * system.h: Remove inclusion of double-int.h
8110         * tree.h: Include double-int.h
8111         * gengtype.c: Likewise
8112         * cfgloop.h: Likewise
8113         * Makefile.in: Adjust dependencies on double-int.h
8114
8115 2007-05-02  Eric Christopher  <echristo@apple.com>
8116
8117         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
8118         -shared to -Zdynamiclib.
8119
8120 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
8121
8122         PR c++/31663
8123         * c-common.c (strip_pointer_or_array_types): New function.
8124         * c-common.h (strip_pointer_or_array_types): New function declaration.
8125
8126 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
8127
8128         PR tree-optimization/31771
8129         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
8130
8131 2007-05-02  Paul Brook  <paul@codesourcery.com>
8132
8133         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
8134
8135 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8136
8137         PR middle-end/29715
8138         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
8139         transformation.
8140
8141 2007-05-02  Nick Clifton  <nickc@redhat.com>
8142
8143         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
8144
8145 2007-05-02  Richard Guenther  <rguenther@suse.de>
8146
8147         PR tree-optimization/31146
8148         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
8149         argument, single_use_p.  If we have a single use that is
8150         a conversion to the definition rhs type, propagate that rhs.
8151         (forward_propagate_addr_expr): Pass single_use_p argument
8152         to forward_propagate_addr_expr_1.
8153
8154 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
8155
8156         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
8157         variable.
8158
8159 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
8160
8161         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
8162         'AMD Family 10 core'.
8163
8164 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
8165
8166         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
8167         and athlon64-sse3 as improved versions of k8, opteron and athlon64
8168         with SSE3 instruction set support.
8169         * doc/invoke.texi: Likewise.
8170
8171 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
8172
8173         * config/i386/i386.c (override_options): Tuning 32-byte loop
8174         alignment for amdfam10 architecture. Increasing the max loop
8175         alignment to 24 bytes.
8176
8177 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
8178
8179         * config/m68k/constraints.md: New.
8180         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
8181         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
8182         EXTRA_CONSTRAINT): Remove.
8183         * config/m68k/m68k.md: Include constraints.md.
8184         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
8185
8186 2007-05-01  Ian Lance Taylor  <iant@google.com>
8187
8188         PR tree-optimization/31739
8189         * tree-vrp.c (vrp_val_is_max): New static function.
8190         (vrp_val_is_min): New static function.
8191         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
8192         copying the node.
8193         (set_value_range): Use vrp_val_is_{max,min}.
8194         (extract_range_from_assert): Likewise.
8195         (extract_range_from_binary_expr): Likewise.
8196         (extract_range_from_unary_expr): Likewise.
8197         (dump_value_range, vrp_meet): Likewise.
8198         (vrp_visit_phi_node): Likewise.
8199         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
8200
8201 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
8202
8203         * config/i386/gmon-sol2.c (size_t): New type.
8204         (intptr_t): Likewise.
8205         (s_textsize): Declare as size_t.
8206         (sbrk): Declare.
8207         (monstartup): Use size_t for sizes.
8208         (_mcount): Save and restore registers.
8209         (internal_mcount): Pass 0 as the first argument to monstartup
8210         in 64-bit mode.
8211         (moncontrol): Convert pointer to appropriately sized integer
8212         before passing to profil.
8213
8214 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
8215
8216         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
8217         __NO_FPRS__, not just if _SOFT_DOUBLE.
8218         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
8219         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
8220         also for E500 double.
8221         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
8222         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
8223         && !TARGET_FPRS).
8224
8225 2007-05-01  Richard Guenther  <rguenther@suse.de>
8226
8227         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
8228         is NULL.
8229
8230 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
8231
8232         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
8233
8234 2007-05-01  Jan Hubicka  <jh@suse.cz>
8235
8236         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
8237         invariant.
8238
8239 2007-05-01  Jan Hubicka  <jh@suse.cz>
8240
8241         * tree.h (maybe_fold_offset_to_component_ref): Remove.
8242         (maybe_fold_offset_to_reference): Declare.
8243         * fold-const.c (fold_unary): Do not fold
8244         (type *)&A into &A->field_of_type_and_offset_0
8245         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
8246         size is unknown, give up.
8247         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
8248         offsets.
8249         (maybe_fold_offset_to_reference): New.
8250         (maybe_fold_stmt_indirect): Use it.
8251         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
8252         * gimplify.c (gimplify_conversion): Canonicalize conversions to
8253         field references.
8254         (gimplify_expr): Likewise for plus_expr.
8255
8256 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
8257
8258         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
8259         bsi_after_labels.  Always insert statements before bsi.
8260         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
8261         * predict.c (apply_return_prediction): Check for empty blocks.
8262         * cfgexpand.c (lab_rtx_for_bb): New variable.
8263         (label_rtx_for_bb): Do not create new tree labels.
8264         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
8265         (tree_expand_cfg): Initialize lab_rtx_for_bb.
8266         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
8267         creating edges.
8268         (label_for_bb): Add field used.
8269         (update_eh_label, main_block_label): Mark the label used.
8270         (cleanup_dead_labels): Remove unused labels.
8271
8272 2007-05-01  Richard Guenther  <rguenther@suse.de>
8273
8274         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
8275         if it is not about to be set.
8276         (get_value_range): Do not pre-allocate equiv bitmap.
8277         (update_value_range): No need to clear equiv field.
8278         (add_equivalence): Change prototype to get bitmap pointer.
8279         Allocate bitmap here if it is not already.
8280         (extract_range_from_assert): Do not allocate bitmap here.
8281         Update callers to add_equivalence.
8282         (extract_range_from_ssa_name): Likewise.
8283         (get_vr_for_comparison): New static helper.
8284         (compare_name_with_value): Handle NULL equiv bitmap by
8285         peeling the first iteration of the comparison loop.
8286         Use get_vr_for_comparison.
8287         (compare_names): Handle NULL equiv bitmaps by using fake
8288         ones.  Use get_vr_for_comparison.
8289
8290 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
8291
8292         * double-int.c (mpz_set_double_int): Moved from
8293         tree-ssa-loop-niter.c.
8294         (mpz_get_double_int): Likewise; also, add option to wrap
8295         out-of-range integers.
8296         * double-int.h: New prototypes for above.
8297         * tree.c (get_static_type_bounds): Moved from
8298         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
8299         TYPE_MAX_VALUE if they exist..
8300         * tree.h: New prototype for above.
8301         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
8302         get_type_bounds calls.
8303         (mpz_set_double_int): Move to double-int.c.
8304         (get_type_bounds): Move to tree.c, rename to
8305         get_static_type_bounds.
8306         (mpz_to_double_int): Move to double-int.c, rename to
8307         mpz_get_double_int.
8308
8309 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
8310
8311         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
8312         DIV0 exception can fall through to a normal return.
8313
8314 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
8315
8316         PR middle-end/22156
8317         Temporarily revert:
8318         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
8319         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
8320         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
8321         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
8322         initialize align to silence bogus warning.
8323         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
8324         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
8325         all_no_warning.
8326         (struct sra_walk_fns): Remove use_all parameter from use.
8327         (sra_hash_tree): Handle BIT_FIELD_REFs.
8328         (sra_elt_hash): Don't hash bitfld blocks.
8329         (sra_elt_eq): Skip them in parent compares as well.  Handle
8330         BIT_FIELD_REFs.
8331         (sra_walk_expr): Don't maintain or pass down use_all_p.
8332         (scan_use): Remove use_all parameter.
8333         (scalarize_use): Likewise.  Re-expand assignment to
8334         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
8335         output, and re-scalarize after output.  Don't mark anything
8336         for no warning.
8337         (scalarize_ldst): Adjust.
8338         (scalarize_walk_gimple_modify_statement): Likewise.
8339         (build_element_name_1): Handle BIT_FIELD_REFs.
8340         (instantiate_element): Don't warn for any element whose parent
8341         is used as a whole.
8342         (instantiate_missing_elements_1): Return the sra_elt.
8343         (canon_type_for_field): New.
8344         (try_instantiate_multiple_fields): New.
8345         (instantiate_missing_elemnts): Use them.
8346         (mark_no_warning): Removed.
8347         (generate_one_element_ref): Handle BIT_FIELD_REFs.
8348         (REPLDUP, sra_build_elt_assignment): New.
8349         (generate_copy_inout): Use them.
8350         (generate_element_copy): Likewise.  Handle bitfld differences.
8351         (generate_element_zero): Don't recurse for blocks.  Use
8352         sra_build_elt_assignment.
8353         (generate_one_element_int): Take elt instead of var.  Use
8354         sra_build_elt_assignment.
8355         (generate_element_init_1): Adjust.
8356         (scalarize_use, scalarize_copy): Use REPLDUP.
8357         (scalarize_ldst): Move assert before dereference.
8358         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
8359
8360 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8361
8362         PR C++/31721
8363         * tree.c (reconstruct_complex_type): Reconstruct a reference
8364         correctly.
8365         Also use the same mode for the pointer as the old pointer type.
8366
8367 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
8368
8369         * doc/trouble.texi (Interoperation): Remove note about Ultrix
8370         Fortran compiler.
8371
8372 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
8373
8374         PR rtl-optimization/31676
8375         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
8376         (df_refs_record): Call it.
8377
8378 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
8379
8380         * rtl.def (SS_ABS): New code.
8381         * config/bfin/bfin.c (print_operand): New modifier 'v'.
8382         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
8383         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
8384         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
8385         (bfin_init_builtins): Define them.
8386         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
8387         (bfin_expand_builtin): ... and handle the others here.
8388         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
8389         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
8390         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
8391         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
8392         operand is only HImode.
8393
8394 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
8395
8396         * regclass.c (scan_one_insn): Remove splitting of
8397         two address insns.
8398
8399 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
8400             Nigel Stephens  <nigel@mips.com>
8401
8402         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
8403
8404 2007-04-28  Jan Hubicka  <jh@suse.cz>
8405
8406         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
8407         insn_locators_alloc instead of insn_locators_initialize;
8408         call reset_block_changes.
8409         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
8410         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
8411         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
8412         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
8413         * config/score/score.c (th_output_mi_thunk): Likewise.
8414         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
8415         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
8416         tolerate uninitialized locator info.
8417
8418         Re-apply:
8419         * function.c (init_function_start): Don't init line number info.
8420         (expand_function_end): Update.
8421         (reset_block_changes, record_block_change, finalize_block_changes,
8422         check_block_change, free_block_changes): Kill.
8423         * function.h (reset_block_changes, record_block_change,
8424         finalize_block_changes, check_block_change, free_block_changes):
8425         Remove prototypes.
8426         (struct function): Remove ib_boundaries_block.
8427         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
8428         Use curr_insn_locator to initialize locator.
8429         (emit_line_note): Remove.
8430         * cfgexpand.c (expand_gimple_cond_expr): Update.
8431         (construct_exit_block): Likewise.
8432         (tree_expand_cfg): Initialize/finalize locators.
8433         * expr.c (expand_expr_real): Update.
8434         * cfglayout.c (line_locators_locs, line_locators_lines,
8435         file_locators_locs, file_locators_files): Remove.
8436         (set_block_levels): Move to cfgexpand.c.
8437         (insn_locators_initialize): Remove.
8438         (pass_insn_locators_initialize): Remove.
8439         (locations_locators_locs, locations_locators_vals): New static vars.
8440         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
8441         Likewise.
8442         (insn_locators_alloc, insn_locators_finalize,
8443         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
8444         New functions.
8445         (locator_location): New.
8446         (locator_line, locator_file): Rewrite.
8447         * rtl.h (emit_line_note): Kill.
8448         (insn_locators_alloc, insn_locators_finalize,
8449         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
8450         Declare.
8451         * tree-inline.c (initialize_cfun): Do not initialize
8452         ib_boundaries_block.
8453         * passes.c (pass_insn_locators_initialize): Remove.
8454
8455 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
8456
8457         * tree-cfg.c (move_block_to_fn): Release bb from dominance
8458         info.  Update last_basic_block correctly.
8459
8460 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
8461
8462         PR target/31701
8463         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
8464         register itself to hold the offset constant.  Tell flow the use
8465         of r4 and r5 when they are used.
8466
8467 2007-04-27  Richard Guenther  <rguenther@suse.de>
8468
8469         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
8470         if we simplified anything.
8471         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
8472         warnings until we did a simplification and the stmt was not
8473         marked as TREE_NO_WARNING.
8474
8475 2007-04-27  Mike Stump  <mrs@apple.com>
8476
8477         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
8478
8479 2007-04-27  Ian Lance Taylor  <iant@google.com>
8480
8481         PR middle-end/31710
8482         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
8483         TYPE_MAX_VALUE exist, convert them to the new type.
8484
8485 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
8486
8487         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
8488         if it claims to be available.
8489         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
8490         edge is redirected.
8491         (perform_tree_ssa_dce): Always free postdominators.
8492
8493 2007-04-27  Richard Henderson  <rth@redhat.com>
8494
8495         * config/alpha/predicates.md (aligned_memory_operand): Mark
8496         as define_special_predicate.
8497         (unaligned_memory_operand, normal_memory_operand): Likewise.
8498         (reg_or_unaligned_mem_operand): Remove.
8499         (any_memory_operand): Match the documentation and check for
8500         non-renumbered pseudos during reload.
8501         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
8502         alpha_secondary_reload_class, update to new interface, make static.
8503         Handle CQImode like HImode.  Remove FP subreg check.
8504         (alpha_expand_mov): Use replace_equiv_address.
8505         (alpha_expand_mov_nobwx): Use any_memory_operand.
8506         (TARGET_SECONDARY_RELOAD): New.
8507         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
8508         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
8509         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
8510         * config/alpha/alpha.md: ... here.
8511         (RELOAD12, reloadmode): New.
8512         (movcqi): New.
8513         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
8514         Don't handle the aligned case here.
8515         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
8516         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
8517         reload_inhi_help.  Don't expect a scratch register.
8518         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
8519         reload_outhi_help.
8520         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
8521
8522 2007-04-27  Richard Guenther  <rguenther@suse.de>
8523
8524         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
8525
8526 2007-04-27  Richard Guenther  <rguenther@suse.de>
8527
8528         PR tree-optimization/30965
8529         PR tree-optimization/30978
8530         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
8531         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
8532         (find_equivalent_equality_comparison): Likewise.
8533         (simplify_cond): Likewise.
8534         (get_prop_source_stmt): New helper.
8535         (get_prop_dest_stmt): Likewise.
8536         (can_propagate_from): Likewise.
8537         (remove_prop_source_from_use): Likewise.
8538         (combine_cond_expr_cond): Likewise.
8539         (forward_propagate_comparison): New function.
8540         (forward_propagate_into_cond): Rewrite to use fold for
8541         tree combining.
8542         (tree_ssa_forward_propagate_single_use_vars): Call
8543         forward_propagate_comparison to propagate comparisons.
8544
8545 2007-04-27  Richard Guenther  <rguenther@suse.de>
8546
8547         PR tree-optimization/31715
8548         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
8549         sure to do computation on the offset in an appropriate
8550         signed type.
8551
8552 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
8553
8554         * reload.h (elimination_target_reg_p): Declare.
8555         * reload.c (find_reloads): Don't apply the reg_rtx move
8556         optimization if the SET_DEST satisfies elimination_target_reg_p.
8557         * reload1.c (elimination_target_reg_p): New function.
8558         (gen_reload): In the move/add2 fallback, make sure that op0
8559         does not overlap the destination register.
8560
8561 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
8562
8563         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
8564         transform only GIMPLE_MODIFY_STMTs.
8565         * tree-complex.c (expand_complex_operations_1): Ditto.
8566         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
8567         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
8568         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
8569         branches.
8570         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
8571         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
8572         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
8573         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
8574         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
8575         slpeel_add_loop_guard): Ditto.
8576         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
8577         * lambda-code.c (perfect_nestify): Ditto.
8578         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
8579         before the first statement.
8580         * tree-optimize.c (execute_free_datastructures): Fix comments.
8581         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
8582         * tree-flow.h (disband_implicit_edges): Declaration removed.
8583         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
8584         branches.
8585         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
8586         COND_EXPRs without gotos.
8587         (disband_implicit_edges, has_label_p): Removed.
8588         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
8589         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
8590         branches.
8591         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
8592         side effects.
8593         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
8594         also for COND_EXPRs.
8595         * cfgexpand.c (label_rtx_for_bb): New function.
8596         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
8597         Use label_rtx_for_bb to find the labels.
8598         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
8599         last block.  Detect fallthru edges.
8600
8601 2007-04-26  Ian Lance Taylor  <iant@google.com>
8602
8603         PR target/28675
8604         * reload.c (find_reloads_subreg_address): If the address was valid
8605         in the original mode but not in the new mode, reload the whole
8606         address.
8607
8608 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
8609
8610         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
8611         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
8612         (cleanup_control_expr_graph): Do not invalidate dominance info.
8613         Record altered blocks.
8614         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
8615         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
8616         cleanup_tree_cfg_bb): New functions.
8617         (remove_forwarder_block): Do not maintain the worklist of blocks.
8618         Record altered blocks.
8619         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
8620         not over whole cfg.
8621         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
8622         delete_unreachable_blocks if dominators are not available.
8623         * tree-inline.c (optimize_inline_calls): Free dominance information
8624         earlier.
8625         * tree-flow.h (remove_edge_and_dominated_blocks,
8626         cfgcleanup_altered_bbs): Altered.
8627         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
8628         blocks.
8629         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
8630         functions.
8631         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
8632         do not invalidate dominators.
8633
8634 2007-04-26  Anatoly Sokolov <aesok@post.ru>
8635
8636         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
8637         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
8638         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
8639         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
8640
8641 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
8642
8643         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
8644
8645 2007-04-26  Richard Guenther  <rguenther@suse.de>
8646
8647         PR tree-optimization/31703
8648         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
8649         the right type for the target of the bittest.
8650
8651 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
8652
8653         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
8654         ix86_sol10_return_in_memory.
8655
8656 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
8657
8658         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
8659         variables.
8660
8661 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
8662
8663         PR c++/31598
8664         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
8665
8666         PR tree-optimization/30558
8667         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
8668         clear this_state.prev_try.
8669
8670 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
8671             Mark Mitchell  <mark@codesourcery.com>
8672
8673         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
8674         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
8675         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
8676
8677 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
8678
8679         PR driver/31107
8680         * doc/invoke.texi (%:print-asm-header): Document.
8681         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
8682         and -ftarget-help.
8683         (static_spec_functions): Add print-asm-header.
8684         (main): Print a banner before the --target-help linker options.
8685         (print_asm_header_spec_function): New function.
8686
8687 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
8688
8689         PR target/31403
8690         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
8691         (movsf_ie): Likewise.
8692
8693 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
8694
8695         * doc/extend.texi ([Type Traits]): Adjust per N2255.
8696
8697 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
8698
8699         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
8700         exception for divide-by-zero.
8701         (__umodsi3, __modsi3): Likewise.
8702
8703 2007-04-25  Dirk Mueller  <dmueller@suse.de>
8704
8705         * c-typeck.c (build_compound_expr): Annotate warning()
8706         call with OPT_Wunused_value.
8707         * tree-ssa.c (warn_uninit): Annotate warning with
8708         OPT_Wunintialized.
8709         * c-common.c (handle_sentinel_attribute): Annotate warning
8710         call with OPT_Wattributes.
8711
8712 2007-04-25  Thiemo Seufer  <ths@mips.com>
8713
8714         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
8715         (mips16): Fix typo.
8716         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
8717         on to the assembler.  Improve handling of -mno-mips16.  Add handling
8718         of -mno-mips3d, -mno-dsp, -mno-dspr2.
8719         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
8720         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
8721         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
8722
8723 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
8724
8725         PR target/31680
8726         * config/i386/winnt.c (i386_pe_file_end): Strip only
8727         USER_LABEL_PREFIX when writing export name.
8728
8729 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
8730
8731         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
8732         sh/elf.h, vx-common.h and vxworks.h.
8733         * config/sh/sh.h: Include config/vxworks-dummy.h.
8734         (SUBTARGET_OVERRIDE_OPTIONS): Define.
8735         (OVERRIDE_OPTIONS): Use it.
8736         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
8737         (vxworks_picreg): New pattern.
8738         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
8739         VXWORKS_OS_CPP_BUILTINS.
8740         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
8741         to their VXWORKS_* equivalents.
8742         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
8743         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
8744         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
8745         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
8746         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
8747         -mrtp/-fPIC multilibs.
8748         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
8749         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
8750         (MULTILIB_OSDIRNAMES): Delete.
8751
8752 2007-04-25  Anatoly Sokolov <aesok@post.ru>
8753
8754         PR target/18989
8755         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
8756
8757 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
8758
8759         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
8760         rounding mode to be specified by the caller.
8761         (real_to_mpfr) Likewise.
8762         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
8763         include new arguments.
8764         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
8765
8766 2007-04-24  Ian Lance Taylor  <iant@google.com>
8767
8768         PR tree-optimization/31605
8769         * tree-vrp.c (set_value_range): Check that min and max are not
8770         both overflow infinities.
8771         (set_value_range_to_value): New static function.
8772         (extract_range_from_binary_expr): Call set_value_range_to_value.
8773         (extract_range_from_cond_expr): Likewise.
8774         (extract_range_from_expr): Likewise.
8775         (extract_range_from_unary_expr): Likewise.  Don't create a range
8776         which overflows on both sides.
8777         (vrp_meet): Check for a useless range.
8778         (vrp_visit_phi_node): If we see a constant which looks like an
8779         overflow infinity, turn off the TREE_OVERFLOW flag.
8780
8781 2007-04-24  Ian Lance Taylor  <iant@google.com>
8782
8783         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
8784
8785 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
8786
8787         PR diagnostic/25923
8788         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
8789         diagnostic message is being built.
8790         * tree-pretty-print.c (dump_generic_node): Only write the
8791         formatted text into BUFFER's stream if we are not building a
8792         diagnostic message.
8793         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
8794         dump_generic_node.
8795         * Makefile.in (toplev.o): Depend on tree-pass.h.
8796
8797 2007-04-24  Ian Lance Taylor  <iant@google.com>
8798
8799         PR tree-optimization/31602
8800         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
8801         conditionals in the copied loop header.
8802         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
8803         warnings if TREE_NO_WARNING is set.
8804         * doc/invoke.texi (Warning Options): Clarify that
8805         -Wstrict-overflow does not warn about loops.
8806
8807 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
8808
8809         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
8810         expand on the comment about _Decimal128 arguments and check the
8811         integer result of the modulus operation; for 64-bit ELF ABI, ensure
8812         that _Decimal128 argument uses even/odd register pair.
8813         (function_arg): Ditto.
8814
8815 2007-04-24  Hui-May Chang <hm.chang@apple.com>
8816
8817         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
8818         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
8819
8820 2007-04-24  Richard Guenther  <rguenther@suse.de>
8821             Olga Golovanevsky  <olga@il.ibm.com>
8822
8823         * fold-const.c (multiple_of_p): Check for bottom
8824         to be zero.
8825
8826 2007-04-24  Richard Henderson  <rth@redhat.com>
8827
8828         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
8829         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
8830         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
8831         looking for non-zero bits shifted out.  Avoid a recursive call
8832         when constructing the scalar.
8833         (__floatundisf): Likewise.
8834
8835 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
8836
8837         * dwarf2out.c (field_byte_offset): Move the existing logic
8838         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
8839         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
8840
8841 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
8842
8843         PR target/31641
8844         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
8845         length argument of 0 for memset.
8846         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
8847         unsigned shift instead of the signed variant.
8848
8849 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
8850
8851         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
8852         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
8853         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
8854         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
8855         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
8856         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
8857         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
8858         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
8859         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
8860         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
8861         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
8862         "mul<mode>3", "div<mode>3"): Insn definitions added.
8863         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
8864         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
8865         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
8866         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
8867         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
8868         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
8869         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
8870         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
8871         TARGET_FLOAT_FORMAT): Macro definitions removed.
8872         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
8873         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
8874         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
8875         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
8876         (s390_gen_rtx_const_DI): Function removed.
8877         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
8878
8879 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
8880
8881         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
8882         over an external ffs function.
8883
8884 2007-04-24  Chao-ying Fu  <fu@mips.com>
8885             Richard Sandiford  <richard@nildram.co.uk>
8886
8887         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
8888         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
8889         (smadd_widen_optab, umadd_widen_optab): Define.
8890         * optabs.c (init_optabs): Initialize smadd_widen_optab and
8891         umadd_widen_optab.
8892         * genopinit.c (optabs): Fill in smadd_widen_optab and
8893         umadd_widen_optab.
8894         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
8895         and umadd_widen_optab to implement multiply-add sequences.
8896         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
8897         (<u>maddsidi4): ...this.  Extend condition to include
8898         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
8899         of operand 0 to "ka" and use the three-operand form of madd<u>
8900         for TARGET_DSPR2.
8901         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
8902         to define_expands.
8903         * config/mips/constraints.md (ka): New register constraint.
8904
8905 2007-04-24  Jan Hubicka  <j@suse.cz>
8906
8907         Revert:
8908
8909         2007-04-23  Jan Hubicka  <jh@suse.cz>
8910         * function.c (init_function_start): Don't init line number info.
8911         (expand_function_end): Update.
8912         (reset_block_changes, record_block_change, finalize_block_changes,
8913         check_block_change, free_block_changes): Kill.
8914         * function.h (reset_block_changes, record_block_change,
8915         finalize_block_changes, check_block_change, free_block_changes):
8916         Remove prototypes.
8917         (struct function): Remove ib_boundaries_block.
8918         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
8919         Use curr_insn_locator to initialize locator.
8920         (emit_line_note): Remove.
8921         * cfgexpand.c (expand_gimple_cond_expr): Update.
8922         (construct_exit_block): Likewise.
8923         (tree_expand_cfg): Initialize/finalize locators.
8924         * expr.c (expand_expr_real): Update.
8925         * cfglayout.c (line_locators_locs, line_locators_lines,
8926         file_locators_locs, file_locators_files): Remove.
8927         (set_block_levels): Move to cfgexpand.c.
8928         (insn_locators_initialize): Remove.
8929         (pass_insn_locators_initialize): Remove.
8930         (locations_locators_locs, locations_locators_vals): New static vars.
8931         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
8932         Likewise.
8933         (insn_locators_alloc, insn_locators_finalize,
8934         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
8935         New functions.
8936         (locator_location): New.
8937         (locator_line, locator_file): Rewrite.
8938         * rtl.h (emit_line_note): Kill.
8939         (insn_locators_alloc, insn_locators_finalize,
8940         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
8941         Declare.
8942         * tree-inline.c (initialize_cfun): Do not initialize
8943         ib_boundaries_block.
8944         * passes.c (pass_insn_locators_initialize): Remove.
8945
8946 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
8947
8948         * doc/invoke.texi: Removed leading '-' from option index entries.
8949
8950 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
8951
8952         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
8953         Use phi_nodes_ptr.
8954         (create_phi_node): Use set_phi_nodes.
8955         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
8956         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
8957         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
8958         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
8959         (bsi_start, bsi_last): Use bb_stmt_list.
8960         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
8961         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
8962         Traverse the statements using tsi iterator.
8963         * basic-block.h (struct basic_block_def): Fields stmt_list
8964         and phi_nodes moved to ...
8965         (struct tree_bb_info): ... new structure.
8966         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
8967         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
8968         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
8969         (tree_verify_flow_info): Verify that il.tree is not set for
8970         entry and exit block.
8971         (tree_split_block): Use set_bb_stmt_list.
8972
8973 2007-04-23  Mike Stump  <mrs@apple.com>
8974
8975         * config/i386/i386.c (ix86_tune_features
8976         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
8977         nocona and core2.
8978
8979 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
8980
8981         * config/i386/i386.md (prefix_extra): New attribute.
8982         (length): Add prefix_extra.
8983
8984         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
8985         (sse2_movntv2di): Likewise.
8986         (sse2_cvtps2dq): Likewise.
8987         (sse2_cvtpd2pi): Likewise.
8988         (sse2_cvttpd2pi): Likewise.
8989         (*sse2_cvtpd2ps): Likewise.
8990         (*add<mode>3): Likewise.
8991         (sse2_ssadd<mode>3): Likewise.
8992         (sse2_usadd<mode>3): Likewise.
8993         (*sub<mode>3): Likewise.
8994         (sse2_sssub<mode>3): Likewise.
8995         (sse2_ussub<mode>3): Likewise.
8996         (*mulv8hi3): Likewise.
8997         (*smulv8hi3_highpart): Likewise.
8998         (*umulv8hi3_highpart): Likewise.
8999         (sse2_umulv2siv2di3): Likewise.
9000         (sse2_pmaddwd): Likewise.
9001         (ashr<mode>3): Likewise.
9002         (lshr<mode>3): Likewise.
9003         (ashl<mode>3): Likewise.
9004         (sse2_ashlti3): Likewise.
9005         (sse2_lshrti3): Likewise.
9006         (*umaxv16qi3): Likewise.
9007         (*smaxv8hi3): Likewise.
9008         (*uminv16qi3): Likewise.
9009         (*sminv8hi3): Likewise.
9010         (sse2_eq<mode>3): Likewise.
9011         (sse2_gt<mode>3): Likewise.
9012         (*and<mode>3): Likewise.
9013         (sse2_nand<mode>3): Likewise.
9014         (*ior<mode>3): Likewise.
9015         (*xor<mode>3): Likewise.
9016         (sse2_packsswb): Likewise.
9017         (sse2_packssdw): Likewise.
9018         (sse2_packuswb): Likewise.
9019         (sse2_punpckhbw): Likewise.
9020         (sse2_punpcklbw): Likewise.
9021         (sse2_punpckhwd): Likewise.
9022         (sse2_punpcklwd): Likewise.
9023         (sse2_punpckhdq): Likewise.
9024         (sse2_punpckldq): Likewise.
9025         (sse2_punpckhqdq): Likewise.
9026         (sse2_punpcklqdq): Likewise.
9027         (*sse2_pinsrw): Likewise.
9028         (*sse2_pextrw): Likewise.
9029         (sse2_pshufd_1): Likewise.
9030         (sse2_uavgv16qi3): Likewise.
9031         (sse2_uavgv8hi3): Likewise.
9032         (sse2_psadbw): Likewise.
9033         (sse2_pmovmskb): Likewise.
9034         (*sse2_maskmovdqu): Likewise.
9035         (*sse2_maskmovdqu_rex64): Likewise.
9036         (sse4a_extrqi): Likewise.
9037         (sse4a_extrq): Likewise.
9038         (sse3_lddqu): Set prefix_rep.
9039         (sse3_addsubv4sf3): Likewise.
9040         (sse3_haddv4sf3): Likewise.
9041         (sse3_hsubv4sf3): Likewise.
9042         (sse_cvtss2si): Likewise.
9043         (sse_cvtss2si_2): Likewise.
9044         (sse_cvtss2siq): Likewise.
9045         (sse_cvtss2siq_2): Likewise.
9046         (sse_cvttss2si): Likewise.
9047         (sse_cvttss2siq): Likewise.
9048         (sse2_cvttps2dq): Likewise.
9049         (sse3_movshdup): Likewise.
9050         (sse3_movsldup): Likewise.
9051         (sse2_cvtsd2si): Likewise.
9052         (sse2_cvtsd2si_2): Likewise.
9053         (sse2_cvtsd2siq): Likewise.
9054         (sse2_cvtsd2siq_2): Likewise.
9055         (sse2_cvttsd2si): Likewise.
9056         (sse2_cvttsd2siq): Likewise.
9057         (*sse2_cvtpd2dq): Likewise.
9058         (*sse2_cvttpd2dq): Likewise.
9059         (sse2_pshuflw_1): Likewise.
9060         (sse2_pshufhw_1): Likewise.
9061         (sse4a_insertqi): Likewise.
9062         (sse4a_insertq): Likewise.
9063         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
9064         (ssse3_phadddv4si3): Likewise.
9065         (ssse3_phaddswv8hi3): Likewise.
9066         (ssse3_phsubwv8hi3): Likewise.
9067         (ssse3_phsubdv4si3): Likewise.
9068         (ssse3_phsubswv8hi3): Likewise.
9069         (ssse3_pmaddubswv8hi3): Likewise.
9070         (ssse3_pmulhrswv8hi3): Likewise.
9071         (ssse3_pshufbv16qi3): Likewise.
9072         (ssse3_psign<mode>3): Likewise.
9073         (ssse3_palignrti): Likewise.
9074         (abs<mode>2): Likewise.
9075         (ssse3_phaddwv4hi3): Set prefix_extra.
9076         (ssse3_phadddv2si3): Likewise.
9077         (ssse3_phaddswv4hi3): Likewise.
9078         (ssse3_phsubwv4hi3): Likewise.
9079         (ssse3_phsubdv2si3): Likewise.
9080         (ssse3_phsubswv4hi3): Likewise.
9081         (ssse3_pmaddubswv4hi3): Likewise.
9082         (ssse3_pmulhrswv4hi3): Likewise.
9083         (ssse3_pshufbv8qi3): Likewise.
9084         (ssse3_psign<mode>3): Likewise.
9085         (ssse3_palignrdi): Likewise.
9086         (abs<mode>2): Likewise.
9087         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
9088         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
9089         (sse2_pmovmskb): Set mode to SI instead of V2DF.
9090
9091 2007-04-23  Nick Clifton  <nickc@redhat.com>
9092
9093         * params.def: Fix formatting of emacs local variables.
9094
9095 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
9096
9097         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
9098         move if inter-unit move isn't allowed.
9099         Don't split moving the first element of V2DI to DI to inter-unit
9100         move if inter-unit move isn't allowed.
9101
9102 2007-04-23  Richard Guenther  <rguenther@suse.de>
9103
9104         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
9105         and CDI_POST_DOMINATORS separately.
9106
9107 2007-04-23  Nick Clifton  <nickc@redhat.com>
9108
9109         * c.opt (Wformat-contains-nul): Add warning attribute.
9110
9111 2007-04-23  Jan Hubicka  <jh@suse.cz>
9112
9113         * function.c (init_function_start): Don't init line number info.
9114         (expand_function_end): Update.
9115         (reset_block_changes, record_block_change, finalize_block_changes,
9116         check_block_change, free_block_changes): Kill.
9117         * function.h (reset_block_changes, record_block_change,
9118         finalize_block_changes, check_block_change, free_block_changes):
9119         Remove prototypes.
9120         (struct function): Remove ib_boundaries_block.
9121         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
9122         Use curr_insn_locator to initialize locator.
9123         (emit_line_note): Remove.
9124         * cfgexpand.c (expand_gimple_cond_expr): Update.
9125         (construct_exit_block): Likewise.
9126         (tree_expand_cfg): Initialize/finalize locators.
9127         * expr.c (expand_expr_real): Update.
9128         * cfglayout.c (line_locators_locs, line_locators_lines,
9129         file_locators_locs, file_locators_files): Remove.
9130         (set_block_levels): Move to cfgexpand.c.
9131         (insn_locators_initialize): Remove.
9132         (pass_insn_locators_initialize): Remove.
9133         (locations_locators_locs, locations_locators_vals): New static vars.
9134         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
9135         Likewise.
9136         (insn_locators_alloc, insn_locators_finalize,
9137         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
9138         New functions.
9139         (locator_location): New.
9140         (locator_line, locator_file): Rewrite.
9141         * rtl.h (emit_line_note): Kill.
9142         (insn_locators_alloc, insn_locators_finalize,
9143         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
9144         Declare.
9145         * tree-inline.c (initialize_cfun): Do not initialize
9146         ib_boundaries_block.
9147         * passes.c (pass_insn_locators_initialize): Remove.
9148
9149 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9150
9151         PR middle-end/31448
9152         * expr.c (reduce_to_bit_field_precision): Handle
9153         CONST_INT rtx's.
9154
9155 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
9156
9157         PR tree-optimization/24659
9158         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
9159         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
9160         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
9161         * genopinit.c (optabs): Rename vec_pack_mod_optab
9162         to vec_pack_trunc_optab.
9163         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
9164         early for scalar floating point operands for NOP_EXPR.
9165         (vectorizable_type_promotion): Ditto.
9166         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
9167         vec_pack_trunc_optab.
9168         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
9169
9170         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
9171         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
9172         Rename from VEC_PACK_MOD_EXPR.
9173         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
9174         * expr.c (expand_expr_real_1): Ditto.
9175         * tree-inline.c (estimate_num_insns_1): Ditto.
9176         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
9177
9178         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
9179         (vec_unpacks_lo_v4sf): Ditto.
9180         (vec_pack_trunc_v2df): Ditto.
9181         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
9182         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
9183         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
9184
9185         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
9186         vec_pack_mod_v8hi.
9187         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
9188
9189         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
9190         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
9191         packing of floating point operands.
9192         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
9193         represent unpacking of floating point operands.
9194         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
9195         [vec_unpacks_hi]: Ditto.
9196         [vec_unpacks_lo]: Ditto.
9197
9198 2007-04-22  Jan Hubicka  <jh@suse.cz>
9199
9200         * final.c (rest_of_handle_final): Call
9201         targetm.asm_out.constructor/targetm.asm_out.destructor
9202         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
9203         proper priority via decl_*_priority_insert.
9204         * c-common.c (c_expand_body): Likewise.
9205
9206 2007-04-22  Richard Guenther  <rguenther@suse.de>
9207
9208         PR tree-optimization/29789
9209         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
9210         (rewrite_reciprocal): New helper split out from
9211         determine_invariantness_stmt.
9212         (rewrite_bittest): Likewise.
9213         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
9214         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
9215         is not.
9216
9217 2007-04-22  Revital Eres  <eres@il.ibm.com>
9218
9219         * loop-unroll.c (var_to_expand): New field to support also
9220         insns of the form x = something + x.
9221         (analyze_insn_to_expand_var): Use it.
9222         (expand_var_during_unrolling): Likewise.
9223
9224 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
9225
9226         * predict.c: Include pointer-set.h.
9227         (bb_predictions): New variable.
9228         (tree_predicted_by_p, tree_predict_edge,
9229         remove_predictions_associated_with_edge): Use bb_predictions map
9230         instead of bb->predictions.
9231         (clear_bb_predictions, assert_is_empty): New functions.
9232         (combine_predictions_for_bb): Use bb_predictions map.  Call
9233         clear_bb_predictions.
9234         (tree_estimate_probability): Create and free bb_predictions map.
9235         * Makefile.in (predict.o): Add pointer-set.h dependency.
9236         * basic-block.h (struct basic_block_def): Remove predictions
9237         field.
9238         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
9239
9240 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
9241
9242         PR target/31480
9243         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
9244         is null.
9245
9246 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9247
9248         * timevar.c (timevar_print): Change reference of --disable-checking to
9249         --enable-checking=release.  Also warn if assert checking is disabled.
9250
9251 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9252
9253         PR C/30265
9254         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
9255         decl as addressable if the compound literal was marked as
9256         addressable.
9257         Mark the decl as a gimple register if it is a complex or
9258         vector decl and does not live in memory.
9259
9260 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9261
9262         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
9263         (GENERIC_NEXT): New function macro.
9264         (PHI_CHAIN): Use phi_node's new chain variable.
9265         (tree_phi_node): Change tree_common to tree_base
9266         and add the chain field.
9267         * tree-phinodes.c (make_phi_node): Don't set
9268         TREE_TYPE on the new node.
9269         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
9270         instead of checking GIMPLE_TUPLE_P in chain_next.
9271         * tree-vect-transform.c
9272         (get_initial_def_for_induction): Look at
9273         PHI_RESULT_TREE for the type of the phi node.
9274         (update_vuses_to_preheader): Use PHI_CHAIN
9275         instead of TREE_CHAIN on the phi node.
9276         * tree-ssa-structalias.c (compute_points_to_sets):
9277         Likewise.
9278         (ipa_pta_execute): Likewise.
9279
9280 2007-04-21  Richard Guenther  <rguenther@suse.de>
9281
9282         PR middle-end/31136
9283         * fold-const.c (fold_unary): Call fold_convert_const on the
9284         original tree.
9285
9286 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
9287
9288         * gcse.c (store_killed_in_insn): Handle PARALLELs.
9289         (store_killed_in_pat): New.
9290
9291 2007-04-20  Richard Henderson  <rth@redhat.com>
9292
9293         PR target/31628
9294         * config/i386/i386.c (type_has_variadic_args_p): Look for any
9295         TREE_LIST with a void_type_node value, not void_list_node exactly.
9296
9297 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
9298
9299         * doc/standards.texi: Re-arrange into language-specific
9300         subsections. Add a C++ section, documenting which standards we
9301         support.
9302
9303 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
9304
9305         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
9306         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
9307
9308 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
9309
9310         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
9311         ecrti.o and crtbegin.o.
9312         (LIB_DEFAULT_SPEC): Include -lc.
9313         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
9314
9315 2007-04-20  Richard Henderson  <rth@redhat.com>
9316
9317         PR target/28623
9318         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
9319         argument; update all callers.
9320         (get_unaligned_offset): New.
9321         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
9322         get_unaligned_address, just pass on the address directly.
9323         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
9324         the subreg in the helper patterns.
9325         (unaligned_extendqidi_le): Use get_unaligned_offset.
9326         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
9327         (unaligned_extendhidi_be): Likewise.
9328         (unaligned_extendhidi): Tidy.
9329         * config/alpha/alpha-protos.h: Update.
9330
9331 2007-04-20  Richard Henderson  <rth@redhat.com>
9332
9333         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
9334         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
9335         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
9336         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
9337         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
9338         (CPP_SPEC): Don't include %(cpp_subtarget).
9339         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
9340         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
9341         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
9342
9343 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
9344
9345         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
9346         for __builtin_ia32_cmpordss.
9347
9348         PR tree-optimization/31632
9349         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
9350         and arg1 for optimizations of comparison against min/max values.
9351         Fold arg0 to arg1's type for optimizations of comparison against
9352         min+1 and max-1 values.
9353
9354 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
9355
9356         * reload.c (combine_reloads): When trying to use a dying register,
9357         check whether it's uninitialized and don't use if so.
9358
9359 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
9360
9361         * fold-const.c: Remove prototypes for native_encode_expr and
9362         native_interpret_expr.
9363         (native_encode_expr): Make non-static.
9364         (native_interpret_expr): Likewise.
9365         * tree.h: Add prototypes for the above.
9366
9367 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
9368
9369         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
9370         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
9371         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
9372         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
9373         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
9374         Add length attributes.
9375
9376 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
9377
9378         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
9379         not that it is 1.
9380
9381         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
9382         __STDC_WANT_DEC_FP__.
9383
9384 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
9385
9386         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
9387         for long double compatibility.
9388         * configure: Regenerate.
9389
9390 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
9391
9392         PR rtl-optimization/29841
9393         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
9394         trap instructions.
9395         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
9396         that may cause control flow transfer from being moved.
9397
9398 2007-04-18  Jan Hubicka  <jh@suse.cz>
9399
9400         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
9401         types.
9402
9403 2007-04-18  Eric Christopher  <echristo@apple.com>
9404
9405         * config/rs6000/darwin.md (load_macho_picbase): Use link register
9406         only. Update operands.
9407         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
9408         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
9409         link register to pic register.
9410
9411 2007-04-18  Dirk Mueller  <dmueller@suse.de>
9412
9413         PR diagnostic/31227
9414         * tree-vrp.c (search_for_addr_array): New.
9415         (check_array_bounds): Suppress warning about
9416         address taken of array refs if its not de-referenced.
9417
9418 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
9419
9420         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
9421         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
9422
9423         * tree-vectorizer.h (NITERS_KNOWN_P): New.
9424         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
9425         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
9426
9427         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
9428         dump print.
9429         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
9430         print message.
9431         (vect_analyze_scalar_cycles): Fix indentation.
9432         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
9433         (vect_mark_relevant): Include phis in relevance analysis.
9434
9435         * tree-vect-transform.c (vect_transform_loop): Add an assert.
9436
9437 2007-04-18  Anatoly Sokolov <aesok@post.ru>
9438
9439         * config/avr/avr.c (ptrreg_to_str): Replace error() with
9440         output_operand_lossage().
9441
9442 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
9443
9444         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
9445         the unused code for reduction without adjust-in-epilog to simplify the
9446         function.
9447
9448 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
9449
9450         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
9451         (S390_TDC_NEGATIVE_ZERO): New constant.
9452         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
9453         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
9454         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
9455         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
9456         (S390_TDC_POSITIVE_INFINITY): New constant.
9457         (S390_TDC_NEGATIVE_INFINITY): New constant.
9458         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
9459         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
9460         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
9461         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
9462         (S390_TDC_INFINITY): New constant.
9463         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
9464         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
9465         optimization for UNSPEC_CCZ_TO_INT.
9466         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
9467         ("*ccz_to_int"): New insn.
9468         ("isinf<mode>2"): New insn.
9469         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
9470         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
9471         (UNSPEC_CCZ_TO_INT): New constant.
9472
9473 2007-04-18  Richard Guenther  <rguenther@suse.de>
9474
9475         PR tree-optimization/19431
9476         PR tree-optimization/21463
9477         * tree-pass.h (pass_phiprop): Declare.
9478         * passes.c (init_optimization_passes): New phiprop pass.
9479         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
9480         (phivn_valid_p): New helper function.
9481         (phiprop_insert_phi): Likewise.
9482         (propagate_with_phi): Likewise.
9483         (tree_ssa_phiprop): New propagator propagating loads
9484         through phi nodes if profitable.
9485
9486 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
9487
9488         * tree-vect-analyze.c (process_use): New function.
9489         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
9490         Check phis in all bbs.
9491         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
9492         assert.
9493
9494 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
9495
9496         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
9497         we use REG_EQUAL.
9498
9499 2007-04-17  Anatoly Sokolov <aesok@post.ru>
9500
9501         PR target/30483
9502         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
9503         error().
9504
9505 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
9506
9507         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
9508         on "0".
9509         (sse_vmmulv4sf3): Likewise.
9510         (sse2_vmaddv2df3): Likewise.
9511         (sse2_vmmulv2df3): Likewise.
9512
9513 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
9514
9515         PR rtl-optimization/31360
9516         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
9517         (target_reg_cost): New.
9518         (init_set_costs): Initialize target_reg_cost.  Add comments
9519         regarding the rationale of the costs.
9520         (global_cost_for_size): Renamed to...
9521         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
9522         of register pressure.
9523         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
9524         estimate_reg_pressure_cost.  Add number of ivs.
9525         (determine_set_costs): Dump target_reg_cost.
9526         * loop-invariant.c (gain_for_invariant):  Use
9527         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
9528         (best_gain_for_invariant, find_invariants_to_move): Remove
9529         n_inv_uses.
9530         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
9531         (target_reg_cost): Declare.
9532         (global_cost_for_size): Declaration removed.
9533         (estimate_reg_pressure_cost): Declare.
9534
9535 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
9536
9537         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
9538         regnos into even/odd register pairs.
9539         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
9540         TDmode similar to the other floating point modes.
9541         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
9542         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
9543         define_expand's.
9544         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
9545         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
9546         (movdd_hardfloat64): Use TARGET_MFPGPR.
9547
9548 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
9549
9550         * reload1.c (delete_output_reload): Don't count output in n_inherited.
9551
9552         Revert
9553         2005-01-05  Richard Henderson  <rth@redhat.com>
9554         PR rtl-opt/10692
9555         * reload1.c (do_input_reload): Restrict the optimization deleteing
9556         a previous output reload to RELOAD_FOR_INPUT.
9557
9558 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
9559
9560         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
9561         induc_vec_info_type.
9562         (vectorizable_induction): New function declaration.
9563         * tree-vect-transform.c (get_initial_def_for_induction): No need to
9564         check if already vectorized.  Find first place in BB where new stmts
9565         can be inserted.  Takes only one argument.
9566         (vectorizable_induction): New function.
9567         (vect_transform_stmt): Add case for induc_vec_info_type to call
9568         vectorizable_induction.
9569         (vect_transform_loop): Consider phis for vectorization.
9570         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
9571         condition.
9572         (analyze_operations): Call vectorizable_induction when analyzing phis.
9573         Fix comment.
9574         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
9575         (vect_mark_relevant): Include phis in relevance analysis.
9576         (vect_mark_stmts_to_be_vectorize): Likewise.
9577         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
9578
9579 2007-04-16  Lawrence Crowl  <crowl@google.com>
9580
9581         * doc/invoke.texi (Debugging Options): Add documentation for the
9582         -femit-struct-debug options -femit-struct-debug-baseonly,
9583         -femit-struct-debug-reduced, and
9584         -femit-struct-debug-detailed[=...].
9585
9586         * c-opts.c (c_common_handle_option): Add
9587         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
9588         and OPT_femit_struct_debug_detailed_.
9589         * c.opt: Add specifications for
9590         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
9591         and -femit-struct-debug-detailed[=...].
9592         * opts.c (set_struct_debug_option): Parse the
9593         -femit-struct-debug-... options.
9594         * opts.c (matches_main_base, main_input_basename,
9595         main_input_baselength, base_of_path, matches_main_base): Add
9596         variables and functions to compare header base name to compilation
9597         unit base name.
9598         * opts.c (should_emit_struct_debug): Add to determine to emit a
9599         structure based on the option.
9600         (dump_struct_debug) Also disabled function to debug this
9601         function.
9602         * opts.c (handle_options): Save the base name of the
9603         compilation unit.
9604
9605         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
9606         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
9607         This hook indicates if a type is generic.  Set it by default
9608         to "never generic".
9609         * langhooks.h (struct lang_hooks_for_types): Add a new hook
9610         to determine if a struct type is generic or not.
9611         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
9612         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
9613         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
9614         with live C++ hook.
9615
9616         * flags.h (enum debug_info_usage): Add an enumeration to describe
9617         a program's use of a structure type.
9618         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
9619         to indicate the program's usage of the type.  Filter structs based
9620         on the -femit-struct-debug-... specification.
9621         (gen_type_die): Split into two routines, gen_type_die and
9622         gen_type_die_with_usage.  gen_type_die is now a wrapper
9623         that assumes direct usage.
9624         (gen_type_die_with_usage): Replace calls to gen_type_die
9625         with gen_type_die_with_usage adding the program usage of
9626         the referenced type.
9627         (dwarf2out_imported_module_or_decl): Suppress struct debug
9628         information using should_emit_struct_debug when appropriate.
9629
9630 2007-04-16  Ian Lance Taylor  <iant@google.com>
9631
9632         PR tree-optimization/31522
9633         * tree-vrp.c (vr_phi_edge_counts): New static variable.
9634         (vrp_initialize): Allocate vr_phi_edge_counts.
9635         (vrp_visit_phi_node): Don't push to infinity if we saw a new
9636         executable edge.  Drop test for all constants.
9637         (vrp_finalize): Free vrp_phi_edge_counts.
9638
9639         * doc/cpp.texi (Common Predefined Macros): Clarify description of
9640         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
9641
9642         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
9643         predecessors at head rather than tail.
9644
9645 2007-04-16  Matthias Klose  <doko@debian.org>
9646
9647         * config/alpha/linux.h (CPP_SPEC): Define.
9648         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
9649
9650 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
9651
9652         * function.h: Remove sequence_stack extern declaration.
9653
9654 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
9655
9656         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
9657         TARGET_FIDOA.
9658         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
9659         defined.
9660
9661 2007-04-16  Anatoly Sokolov <aesok@post.ru>
9662
9663         * config/avr/avr.c (avr_arch_types): Rearranging  array.
9664         (enum avr_arch): Add.
9665         (avr_mcu_types): Use avr_arch enumeration constants instead of
9666         numbers.
9667         * config/avr/avr.h (LINK_SPEC): Simplify.
9668
9669 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
9670
9671         * config/m68k/m68k.c (m68k_libcall_value,
9672         m68k_function_value): Use macros for register names more.
9673
9674         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
9675         instead.
9676         (M68K_REGNAME): Use A6_REG.
9677         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
9678
9679 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
9680
9681         PR middle-end/28071
9682         * sched-int.h (struct deps): Split field 'pending_lists_length' into
9683         'pending_read_list_length' and 'pending_write_list_length'.  Update
9684         comment.
9685         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
9686         to handle two length counters instead of one.  Update all uses.
9687         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
9688         two length counters instead of one.
9689         * sched-rgn.c (propagate_deps): Update to handle two length counters
9690         instead of one.
9691
9692 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
9693
9694         PR target/31582
9695         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
9696         copy of source, pass it to ix86_expand_vector_set and return
9697         it as target.
9698
9699 2007-04-16  David Ung  <davidu@mips.com>
9700             Joseph Myers  <joseph@codesourcery.com>
9701
9702         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
9703         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
9704         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
9705         Add 74K processor information.
9706         * config/mips/mips.md: Include 74k.md.
9707         (cpu): Add 74kc,74kf,74kx.
9708         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
9709         * config/mips/74k.md: New.
9710         * doc/invoke.texi (MIPS Options): Document 74K support.
9711
9712 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
9713
9714         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
9715         vectorizable_* functions.
9716         * tree-vect-transform.c (vectorizable_call): Add check for
9717         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
9718         (vectorizable_store): likewise.
9719         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
9720         Add comments.
9721         (vectorizable_operation, vectorizable_type_demotion): Likewise.
9722         (vectorizable_type_promotion, vectorizable_load): Likewise.
9723         (vectorizable_live_operation, vectorizable_condition): Likewise.
9724         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
9725         STMT_VINFO_LIVE_P.
9726         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
9727
9728 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
9729
9730         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
9731         register numbers more.
9732         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
9733         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
9734         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
9735         FUNCTION_VALUE_REGNO_P): Likewise.
9736         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
9737         STATIC_CHAIN_REGNUM): Likewise.
9738         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
9739         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
9740         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
9741         * config/m68k/m68k.md (FP_REG): New.
9742
9743 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
9744
9745         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
9746         alignment on fido.
9747
9748 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
9749
9750         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
9751         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
9752         comment typos.
9753
9754 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
9755
9756         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
9757         cold loops.
9758
9759 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9760
9761         PR c/31520
9762         * c-decl.c (finish_decl): Grab the type of the decl after the call
9763         to store_init_value.
9764
9765 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
9766
9767         * common.opt (fforward-propagate): Fix "Optimization" annotation.
9768
9769 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
9770
9771         PR c++/25874
9772         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
9773         dominators, post dominators and cleanup cfg before returning.
9774
9775 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
9776
9777         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
9778         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
9779
9780 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
9781
9782         * config.gcc: Recognize fido.
9783         * config/m68k/m68k-devices.def (fidoa): New.
9784         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
9785         __mfido__.
9786         (FL_FIDOA, TARGET_FIDOA): New.
9787         * config/m68k/m68k.opt (mfidoa): New.
9788
9789 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9790
9791         PR middle-end/31322
9792         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
9793         when a personality function is used.
9794
9795 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
9796
9797         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
9798
9799 2007-04-13  Mike Stump  <mrs@apple.com>
9800
9801         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
9802         we can...
9803         * config/darwin.opt (fapple-kext): Make C++ only.
9804         * config/darwin.c (darwin_override_options): Remove code to ensure
9805         -fapple-kext is given for C++ only.
9806
9807 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
9808
9809         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
9810         * config/mips/mips.c (override_options): Call
9811         SUBTARGET_OVERRIDE_OPTIONS, if defined.
9812
9813 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
9814
9815         * config/i386/i386.opt (msvr3-shlib): Removed.
9816
9817         * doc/invoke.texi: Remove -msvr3-shlib.
9818
9819 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
9820
9821         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
9822         with "popcnt" instruction.
9823
9824 2007-04-13  Richard Guenther  <rguenther@suse.de>
9825
9826         PR tree-optimization/21258
9827         * tree-vrp.c (compare_case_labels): New helper.
9828         (find_switch_asserts): New function.
9829         (find_assert_locations): Call it for SWITCH_EXPRs.
9830
9831 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
9832
9833         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
9834         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
9835         check is now implied in X87_FLOAT_MODE_P.
9836         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
9837         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
9838         (fix_trunc<mode>_i386_fisttp): Ditto.
9839         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
9840         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
9841         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
9842         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
9843         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
9844         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
9845         (unnamed_splitters): Ditto.
9846         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
9847         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
9848         FIRST_SSE_REG for local functions when SSE math is enabled or
9849         for functions with sseregparm attribute.
9850         (standard_80387_constant_p): Return -1 if mode is not
9851         X87_FLOAT_MODE_P.
9852         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
9853         (ix86_expand_compare): Ditto.
9854         (ix86_expand_carry_flag_compare): Ditto.
9855         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
9856         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
9857         DECIMAL_FLOAT_MODE_P.
9858         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
9859         of SCALAR_FLOAT_MODE_P.
9860         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
9861         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
9862         checks before FLOAT_MODE_P.
9863         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
9864         before FLOAT_MODE_P.
9865         [DIV]: Ditto.
9866         [NEG]: Ditto.
9867         [ABS]: Ditto.
9868         [SQRT]: Ditto.
9869         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
9870
9871 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
9872             Charles Wilson  <libtool@cwilson.fastmail.fm>
9873
9874         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
9875         (libgcc.mvars): Don't depend on them.
9876         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
9877         * exec-tool.in: New.
9878
9879 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
9880
9881         * doc/invoke.text (--help): Document --help=common.
9882
9883 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
9884
9885         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
9886
9887 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
9888
9889         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
9890         * genemit.c (main): Emit #include "integrate.h".
9891         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
9892         (LOADGP_RTP): New mips_loadgp_style.
9893         * config/mips/mips.h: Include config/vxworks-dummy.h.
9894         (TARGET_RTP_PIC): New macro.
9895         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
9896         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
9897         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
9898         for TARGET_RTP_PIC.
9899         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
9900         -mvxworks-pic when using -mrtp and a PIC option.
9901         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
9902         for RTP PIC.
9903         (mips_symbolic_constant_p, mips_symbolic_address_p)
9904         (mips_symbol_insns): Handle SYMBOL_HALF.
9905         (override_options): Warn about -G and -mrtp being used together.
9906         Initialize mips_lo_relocs[SYMBOL_HALF].
9907         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
9908         (mips_emit_loadgp): Handle LOADGP_RTP.
9909         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
9910         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
9911         (tablejump): Handle function-relative case table entries if
9912         TARGET_RTP_PIC.
9913         * config/mips/predicates.md (symbol_ref_operand): New predicate.
9914
9915 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
9916
9917         * config/mips/mips.md (load_call<mode>): Allow any general register.
9918         destination.
9919         (sibcall_value_internal, sibcall_value_multiple_internal)
9920         (call_value_internal, call_value_split, call_value_multiple_internal)
9921         (call_value_multiple_split): Remove constraints from operand 0.
9922
9923 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
9924
9925         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
9926         rather than loadgp_noshared.
9927         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
9928         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
9929         gen_loadgp.
9930         * config/mips/mips.md (loadgp): Rename to...
9931         (loadgp_newabi): ...this.
9932         (loadgp_noshared): Rename to...
9933         (loadgp_absolute): ...this.
9934
9935 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
9936
9937         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
9938         false for locally-binding symbols.
9939         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
9940
9941 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
9942
9943         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
9944         (SYMBOL_GOT_PAGE_OFST): ...this.
9945         (SYMBOL_GOT_GLOBAL): Rename to...
9946         (SYMBOL_GOT_DISP): ...this.
9947         (SYMBOL_GOTOFF_GLOBAL): Rename to...
9948         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
9949         * config/mips/mips.c (mips_global_symbol_p): New function.
9950         (mips_symbol_binds_local_p): Likewise.
9951         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
9952         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
9953         mips_global_symbol_p and mips_symbol_binds_local_p.
9954         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
9955         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
9956         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
9957         SYMBOL_GOTOFF_DISP.
9958         (mips_ok_for_lazy_binding_p): New function.
9959         (mips_load_call_address, mips_expand_call): Use it.
9960         (mips_dangerous_for_la25_p): Likewise.
9961         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
9962         (*got_disp<mode>): Use got_disp_operand instead of
9963         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
9964         SYMBOL_GOTOFF_GLOBAL.
9965         (*got_page<mode>): Use got_page_ofst_operand instead of
9966         local_got_operand.
9967         * config/mips/predicates.md (const_call_insn_operand): Use
9968         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
9969         (global_got_operand): Rename to...
9970         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
9971         SYMBOL_GOT_GLOBAL.
9972         (local_got_operand): Rename to...
9973         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
9974         of SYMBOL_GOT_LOCAL.
9975
9976 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
9977
9978         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
9979         TARGET_CALL_CLOBBERED_GP.
9980         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
9981         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
9982         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
9983         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
9984         of TARGET_ABICALLS && !TARGET_NEWABI.
9985         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
9986         * config/mips/mips.c (mips_load_call_address): Check
9987         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
9988         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
9989         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
9990         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
9991         TARGET_ABICALLS && TARGET_NEWABI.
9992         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
9993         TARGET_ABICALLS.
9994         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
9995         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
9996         TARGET_ABICALLS && TARGET_NEWABI.
9997         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
9998         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
9999         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
10000         whether indirect calls must use $25.
10001         (mips_extra_live_on_entry): Check TARGET_GOT instead of
10002         TARGET_ABICALLS.
10003         * config/mips/mips.md (jal_macro): Check flag_pic and
10004         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
10005         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
10006         instead of TARGET_ABICALLS.
10007         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
10008         TARGET_ABICALLS && TARGET_OLDABI.
10009         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
10010         (sibcall): In the comment above the define_insn, mention
10011         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
10012         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
10013         instead of TARGET_ABICALLS.
10014
10015 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
10016
10017         * doc/md.texi (Blackfin family constraints): Document PA and PB.
10018         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
10019         (MACFLAGS_MATCH_P): New macro.
10020         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
10021         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
10022         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
10023         the other MACFLAG constants.
10024         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
10025         (flag_machi): Tighten constraints.  Renumber some of the operands.
10026         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
10027         output template.
10028         (flag_machi_parts_acconly): New pattern.
10029         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
10030         used.
10031         (flag_macinit1hi): Tighten constraints.
10032         (flag_mul_macv2hi_parts_acconly): New pattern.
10033
10034         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
10035         Use a more efficient implementation.
10036         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
10037         inline sequences when not optimizing for size.
10038
10039         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
10040         movhi_high2low): Delete, merge functionality into...
10041         (packv2hi): ... this pattern.
10042
10043         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
10044         * config/bfin/bfin.opt (msim): New option.
10045         (mcpu=): New option.
10046         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
10047         (bfin_cpu_t): Typedef of enum bfin_cpu.
10048         (bfin_cpu_type): New declaration.
10049         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
10050         -msim and -mcpu= options.
10051         (LIB_SPEC): Likewise.
10052         * config/bfin/bfin.c (bfin_cpu_type): Define.
10053         (bfin_handle_option): Handle -mcpu= option.
10054         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
10055         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
10056         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
10057
10058 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
10059
10060         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
10061         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
10062         (powerpc-wrs-vxworksae): Use ${tm_file}.
10063         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
10064         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
10065         * config/i386/vx-common.h: New file.
10066
10067 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
10068
10069         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
10070         of crt0.o%s.
10071
10072 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
10073
10074         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
10075         ldxtr.
10076
10077 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
10078
10079         PR c++/31078
10080         PR c++/31103
10081         * c-common.c (c_build_qualified_type): Set canonical type
10082         appropriately.
10083
10084 2007-04-12  Richard Guenther  <rguenther@suse.de>
10085
10086         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
10087         lower bound and element size if lower bound is not zero
10088         or either of the ARRAY_REF operands is set.
10089
10090 2007-04-12  Richard Guenther  <rguenther@suse.de>
10091
10092         PR tree-optimization/24689
10093         PR tree-optimization/31307
10094         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
10095         indices by value.
10096         * gimplify.c (canonicalize_addr_expr): To be consistent with
10097         gimplify_compound_lval only set operands two and three of
10098         ARRAY_REFs if they are not gimple_min_invariant.  This makes
10099         it never at this place.
10100         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
10101
10102 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10103
10104         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
10105         null before emitting a .nsubspa directive.
10106
10107 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
10108
10109         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
10110         need_to_partition_p if there are no memory statements in the
10111         function.
10112
10113 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
10114
10115         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
10116         (gcd_of_steps_may_divide_p): New function.
10117         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
10118
10119 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
10120
10121         * reload.c (find_reloads_toplev, find_reloads_address,
10122         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
10123         not a pointer equality test, to decide if we need to call
10124         push_reg_equiv_alt_mem.
10125
10126 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
10127
10128         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
10129         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
10130         New.
10131         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
10132
10133 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
10134
10135         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
10136         vector to be positive.
10137
10138 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
10139
10140         PR 30735
10141         PR 31090
10142         * doc/invoke.texi: Document --params max-aliased-vops and
10143         avg-aliased-vops.
10144         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
10145         debug_memory_partitions): Move to tree-flow.h
10146         * params.h (AVG_ALIASED_VOPS): Define.
10147         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
10148         users.
10149         (mp_info_t): Likewise.
10150         (get_mem_sym_stats_for): New.
10151         (set_memory_partition): Move from tree-flow-inline.h.
10152         (mark_non_addressable): Only clear the set of symbols for the
10153         partition if it exists.
10154         (dump_memory_partitions): Move from tree-ssa-operands.c
10155         (debug_memory_partitions): Likewise.
10156         (need_to_partition_p): New.
10157         (dump_mem_ref_stats): New.
10158         (debug_mem_ref_stats): New.
10159         (dump_mem_sym_stats): New.
10160         (debug_mem_sym_stats): New.
10161         (update_mem_sym_stats_from_stmt): New.
10162         (compare_mp_info_entries): New.
10163         (mp_info_cmp): Call it.
10164         (sort_mp_info): Change argument to a list of mem_sym_stats_t
10165         objects.
10166         (get_mpt_for): Move from tree-ssa-operands.c.
10167         (find_partition_for): New.
10168         (create_partition_for): Remove.
10169         (estimate_vop_reduction): New.
10170         (update_reference_counts): New.
10171         (build_mp_info): New.
10172         (compute_memory_partitions): Refactor.
10173         Document new heuristic.
10174         Call build_mp_info, update_reference_counts,
10175         find_partition_for and estimate_vop_reduction.
10176         (compute_may_aliases): Populate virtual operands before
10177         calling debugging dumps.
10178         (delete_mem_sym_stats): New.
10179         (delete_mem_ref_stats): New.
10180         (init_mem_ref_stats): New.
10181         (init_alias_info): Call it.
10182         (maybe_create_global_var): Remove alias_info argument.
10183         Get number of call sites and number of pure/const call sites
10184         from gimple_mem_ref_stats().
10185         (dump_alias_info): Call dump_memory_partitions first.
10186         (dump_points_to_info_for): Show how many times a pointer has
10187         been dereferenced.
10188         * opts.c (decode_options): For -O2 set --param
10189         max-aliased-vops to 500.
10190         For -O3 set --param max-aliased-vops to 1000 and --param
10191         avg-aliased-vops to 3.
10192         * fortran/options.c (gfc_init_options): Remove assignment to
10193         MAX_ALIASED_VOPS.
10194         * tree-flow-inline.h (gimple_mem_ref_stats): New.
10195         * tree-dfa.c (dump_variable): Dump memory reference
10196         statistics.
10197         Dump NO_ALIAS* settings.
10198         (referenced_var_lookup): Tidy.
10199         (mem_sym_stats): New.
10200         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
10201         and ORIG are different SSA names for a memory partition.
10202         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
10203         * tree-flow.h (struct mem_sym_stats_d): Define.
10204         (mem_sym_stats_t): Define.
10205         (struct mem_ref_stats_d): Define.
10206         (struct gimple_df): Add field mem_ref_stats.
10207         (enum noalias_state): Define.
10208         (struct var_ann_d): Add bitfield noalias_state.
10209         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
10210         debug_mem_ref_stats, debug_memory_partitions,
10211         debug_mem_sym_stats): Declare.
10212         * tree-ssa-structalias.c (update_alias_info): Update call
10213         sites, pure/const call sites and asm sites in structure
10214         returned by gimple_mem_ref_stats.
10215         Remove local variable IS_POTENTIAL_DEREF.
10216         Increase NUM_DEREFS if the memory expression is a potential
10217         dereference.
10218         Call update_mem_sym_stats_from_stmt.
10219         If the memory references memory, call
10220         update_mem_sym_stats_from_stmt for all the direct memory
10221         symbol references found.
10222         (intra_create_variable_infos): Set noalias_state field for
10223         pointer arguments according to the value of
10224         flag_argument_noalias.
10225         * tree-ssa-structalias.h (struct alias_info): Remove fields
10226         num_calls_found and num_pure_const_calls_found.
10227         (update_mem_sym_stats_from_stmt): Declare.
10228         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
10229         Set default value to 100.
10230         (PARAM_AVG_ALIASED_VOPS): Define.
10231
10232 2007-04-11  Richard Guenther  <rguenther@suse.de>
10233
10234         PR middle-end/31530
10235         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
10236         a * -b + c as c - a * b if we honor sign dependent rounding.
10237
10238 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
10239
10240         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
10241         bfin_expand_strmov.
10242         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
10243         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
10244         variables.
10245         (initialize_trampoline): Don't use old-style function definition.
10246         (bfin_secondary_reload): Mark IN_P argument as unused.
10247
10248 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
10249
10250         PR tree-optimization/31343
10251         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
10252         (build_polynomial_chrec): Return a scalar when the evolution is zero.
10253         * testsuite/gcc.dg/vect/pr31343.c: New.
10254
10255 2007-04-10  Eric Christopher  <echristo@apple.com>
10256
10257         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
10258         * config/i386/i386.md (*cmpfp0): Use.
10259         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
10260         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
10261         (fix_trunc<mode>_i386_fisttp): Ditto.
10262         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
10263         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
10264         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
10265         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
10266         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
10267         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
10268         (unnamed_splitters): Ditto.
10269         * config/i386/i386.c (output_fix_trunc): Assert that
10270         we're not being passed a TFmode operand.
10271
10272 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
10273
10274         PR tree-optimization/31526
10275         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
10276         n_basic_blocks to find newly added blocks.
10277
10278 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
10279
10280         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
10281         alternative.
10282         (fix_trunc<mode>si_sse): Ditto.
10283         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
10284         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
10285         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
10286         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
10287         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
10288         expander using SSEMODEF mode macro.
10289         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
10290         expander using SSEMODEF mode macro.
10291         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
10292         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
10293         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
10294         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
10295         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
10296         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
10297         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
10298         Macroize insn using X87MODEF mode macro.
10299
10300 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
10301
10302         * config/i386/sse.md (sse2_pinsrw): Removed.
10303         (sse2_pextrw): Renamed to ...
10304         (*sse2_pextrw): This.
10305
10306 2007-04-09  Jan Hubicka  <jh@suse.cz>
10307
10308         PR target/27869
10309         * config/i386/sse.md
10310         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
10311         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
10312         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
10313         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
10314
10315 2007-04-09  Jan Hubicka  <jh@suse.cz>
10316
10317         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
10318         multiple fields of union.
10319
10320 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
10321
10322         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
10323         (create_preheaders): Check that loops are available.
10324         (fix_loop_structure): Clean up, improve comments.
10325         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
10326         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
10327         state flags.
10328         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
10329         * predict.c (tree_estimate_probability): Do not call
10330         calculate_dominance_info.  Call create_preheaders.
10331         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
10332         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
10333         flags.
10334         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
10335         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
10336         * tree-cfg.c (tree_split_edge): Make an assert more precise.
10337         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
10338         arguments.
10339
10340 2007-04-08  Jan Hubicka  <jh@suse.cz>
10341
10342         * tree.h (maybe_fold_offset_to_component_ref): Declare.
10343         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
10344         * fold-const.c (fold_unary): Use it.
10345
10346 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10347
10348         * varasm.c (assemble_variable): Remove call to
10349         lang_hooks.decls.prepare_assemble_variable.
10350         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
10351         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
10352         * langhooks.h (lang_hooks_for_decls): Remove
10353         prepare_assemble_variable.
10354
10355 2007-04-08  Mike Stump  <mrs@apple.com>
10356
10357         * config/i386/i386.c: Use inc/dec on Core2.
10358
10359 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
10360
10361         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
10362         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
10363         lhd_tree_inlining_end_inlining): Remove.
10364         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
10365         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
10366         end_inlining hooks.
10367         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
10368         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
10369         lhd_tree_inlining_end_inlining): Remove prototypes.
10370         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
10371         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
10372         LANG_HOOKS_TREE_INLINING_START_INLINING,
10373         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
10374
10375         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
10376         not set it.
10377
10378 2007-04-08  Anatoly Sokolov <aesok@post.ru>
10379
10380         PR target/29932
10381         * config/avr/predicates.md (io_address_operand): Delete predicate.
10382         (low_io_address_operand): Don't use 'mode' argument.
10383         (higth_io_address_operand): Rename ...
10384         (high_io_address_operand): ... to this. Don't use 'mode' argument.
10385         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
10386         for above change.
10387
10388 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
10389
10390         Revert change removing staticp.
10391
10392 2007-04-07  Anatoly Sokolov <aesok@post.ru>
10393
10394         PR target/30289
10395         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
10396         earlyclobber.
10397
10398 2007-04-07  Bruce Korb  <bkorb@gnu.org>
10399
10400         * c.opt: Add -Wformat-contains-nul.
10401         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
10402           -Wformat setting.
10403         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
10404         the NUL byte warning.
10405
10406 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
10407
10408         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
10409
10410 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
10411
10412         * tree.c (staticp): No longer use staticp langhook.
10413         * langhooks.c (lhd_staticp): Removed.
10414         * langhooks.h (struct lang_hooks): Remove staticp.
10415         * c-common.c (c_staticp): Remove.
10416         * c-common.h (c_staticp): Ditto.
10417         * langhooks-defs.h (lhd_staticp): Ditto.
10418         (LHD_HOOKS_STATICP): Ditto
10419         * tree.h (gcc_assert_lowered): New macro.
10420
10421 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
10422
10423         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
10424         argument "reliable".
10425         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
10426         Add argument "reliable".  Propagate it through calls.
10427         (infer_loop_bounds_from_undefined):  Derive number of iterations
10428         estimates from references in blocks that do not dominate loop latch.
10429         (gcov_type_to_double_int): New function.
10430         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
10431         and expected_loop_iterations_unbounded.
10432         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
10433         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
10434         * tree-data-ref.c (estimated_loop_iterations): Export.
10435         (get_references_in_stmt): Fix -- do not return addresses of local
10436         objects.
10437         * cfgloop.h (expected_loop_iterations_unbounded,
10438         estimated_loop_iterations): Declare.
10439
10440 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
10441
10442         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
10443
10444 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
10445
10446         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
10447         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
10448         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
10449         Use output_387_reg_move().
10450         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
10451         expander using X87MODEF12 mode macro.
10452         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
10453         choosing register preferences.  Use output_387_reg_move().
10454         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
10455         instead of "x".  Use output_387_reg_move().
10456         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
10457         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
10458         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
10459         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
10460         Use output_387_reg_move().
10461         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
10462         mode macro.
10463         (*truncxf?f_i387 splitter): Ditto.
10464
10465 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
10466
10467         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
10468         LANG_HOOKS_SAFE_FROM_P.
10469         * expr.c (safe_from_p): Remove langhook call.
10470         * langhooks.h (lang_hooks): Remove safe_from_p.
10471         (lhd_safe_from_p): Remove prototype.
10472         * langhooks.c (lhd_safe_from_p): Remove.
10473
10474 2007-04-06  Jan Hubicka  <jh@suse.cz>
10475
10476         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
10477         functions.
10478
10479 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
10480
10481         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
10482         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
10483         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
10484         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
10485         alternative.
10486         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
10487         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
10488
10489 2007-04-05  Richard Henderson  <rth@redhat.com>
10490
10491         * config/alpha/alpha.c (print_operand) [+]: Remove.
10492         (alpha_end_function): Print nop if call at end of function.
10493         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
10494         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
10495         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
10496         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
10497         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
10498         the call pattern. Update peepholes to match.
10499
10500 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
10501
10502         * doc/extend.texi (Other Builtins): Add decimal float variants
10503         of signbit.
10504         * builtins.def: Ditto.
10505         * builtins.c (expand_builtin): Ditto.
10506
10507 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
10508             H.J. Lu  <hongjiu.lu@intel.com>
10509
10510         PR target/31478
10511         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
10512         of V8HImode when calling ix86_binary_operator_ok.
10513         (sse2_pmaddwd): Call ix86_binary_operator_ok.
10514         (sdot_prodv8hi): Operands 1 and 2 must be register.
10515
10516 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
10517
10518         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
10519         initialize align to silence bogus warning.
10520
10521 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
10522
10523         PR middle-end/22156
10524         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
10525         all_no_warning.
10526         (struct sra_walk_fns): Remove use_all parameter from use.
10527         (sra_hash_tree): Handle BIT_FIELD_REFs.
10528         (sra_elt_hash): Don't hash bitfld blocks.
10529         (sra_elt_eq): Skip them in parent compares as well.  Handle
10530         BIT_FIELD_REFs.
10531         (sra_walk_expr): Don't maintain or pass down use_all_p.
10532         (scan_use): Remove use_all parameter.
10533         (scalarize_use): Likewise.  Re-expand assignment to
10534         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
10535         output, and re-scalarize after output.  Don't mark anything
10536         for no warning.
10537         (scalarize_ldst): Adjust.
10538         (scalarize_walk_gimple_modify_statement): Likewise.
10539         (build_element_name_1): Handle BIT_FIELD_REFs.
10540         (instantiate_element): Don't warn for any element whose parent
10541         is used as a whole.
10542         (instantiate_missing_elements_1): Return the sra_elt.
10543         (canon_type_for_field): New.
10544         (try_instantiate_multiple_fields): New.
10545         (instantiate_missing_elemnts): Use them.
10546         (mark_no_warning): Removed.
10547         (generate_one_element_ref): Handle BIT_FIELD_REFs.
10548         (REPLDUP, sra_build_elt_assignment): New.
10549         (generate_copy_inout): Use them.
10550         (generate_element_copy): Likewise.  Handle bitfld differences.
10551         (generate_element_zero): Don't recurse for blocks.  Use
10552         sra_build_elt_assignment.
10553         (generate_one_element_int): Take elt instead of var.  Use
10554         sra_build_elt_assignment.
10555         (generate_element_init_1): Adjust.
10556         (scalarize_use, scalarize_copy): Use REPLDUP.
10557         (scalarize_ldst): Move assert before dereference.
10558         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
10559
10560 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
10561
10562         * regmove.c: Fix unused variable warnings due to previous commit.
10563
10564 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
10565
10566         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
10567         (regmove_bb_head): Remove.
10568         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
10569         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
10570         problems with fixup_match_1.
10571         Don't initialize/free regmove_bb_head.
10572
10573         (reg_is_remote_constant_p): If an insn is in the same basic block
10574         but not before INSN, consider it remote, too.
10575
10576 2007-04-05  Anatoly Sokolov <aesok@post.ru>
10577
10578         PR target/25448
10579         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
10580         DECL_ASSEMBLER_NAME, not the DECL_NAME.
10581
10582 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
10583
10584         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
10585         (CONDITIONAL_REGISTER_USAGE): Likewise.
10586
10587 2007-04-04  Richard Henderson  <rth@redhat.com>
10588
10589         * config/alpha/lib1funcs.asm: Remove unused file.
10590
10591 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
10592
10593         PR other/31356
10594         * opts.c (print_specific_help): Fix --help=<language>
10595         header line.
10596         (common_handle_option): Support --help=common.
10597
10598 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
10599
10600         PR other/31353
10601         * gcc.c (main): Do not run the linker if
10602         print_subprocess_help indicates that it shouldn't be
10603         run.
10604
10605 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
10606
10607         PR doc/31355
10608         * doc/invoke.texi (--help=): Document <languages> value, fix
10609         formatting in tables of values.
10610
10611 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
10612
10613         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
10614         dllimport attribute of virtual methods.
10615
10616 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
10617
10618         * config/score/crti.asm: Change _bss_start to __bss_start.
10619         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
10620         (OUTGOING_REG_PARM_STACK_SPACE) update.
10621         * config/score/score.opt: add options to make backend support
10622         score5, score5u, score7 and score7d.
10623         * config/score/score.md: Likewise.
10624         * config/score/misc.md: Likewise.
10625         * config/score/mac.md: Likewise.
10626         * doc/invoke.texi: Likewise.
10627         * doc/md.texi: update constraints define.
10628
10629 2007-04-03  Richard Henderson  <rth@redhat.com>
10630
10631         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
10632         an appropriate type, use the mode instead.
10633
10634 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
10635
10636         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
10637         Set the default --with-arch setting to mips2.
10638         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
10639         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
10640         (MULTILIB_OSDIRNAMES): Delete.
10641         (MULTILIB_DIRNAMES): Define.
10642         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
10643         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
10644         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
10645         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
10646         VXWORKS_OS_CPP_BUILTINS.
10647         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
10648         (MIPS_DEBUGGING_INFO): Undefine.
10649         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
10650
10651 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
10652
10653         PR middle-end/30704
10654         * fold-const.c (native_encode_real): Encode real.c provided longs
10655         as a series of 32-bit native integers.
10656         (native_interpret_real): Interpret buffer as a series of 32-bit
10657         native integers.
10658
10659 2007-04-03  Richard Guenther  <rguenther@suse.de>
10660
10661         * genpreds.c (write_insn_constraint_len): Write function
10662         optimized for CONSTRAINT_LEN implementation.
10663         (write_tm_preds_h): Output insn_constraint_len inline and
10664         use it for CONSTRAINT_LEN.
10665         (write_insn_preds_c): Don't output insn_constraint_len.
10666         * doc/md.texi (define_register_constraint): Document multi-letter
10667         constraints shall have the same length if they start with the same
10668         letter.
10669
10670 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
10671
10672         PR target/31175
10673         * config/i386/i386.md (isinf<mode>2): Expand only when
10674         TARGET_C99_FUNCTIONS is set.
10675
10676 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
10677
10678         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
10679         (x86_64-*-linux*): Ditto.
10680         * config/i386/i386.opt (mpc): New option.
10681         * config/i386/i386.c (overrride_options): Handle
10682         ix87_precision_string.
10683         * config/i386/crtprec.c: New file.
10684         * config/i386/t-crtpc: Ditto.
10685         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
10686         and -mpc80 options.
10687         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
10688         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
10689         crtprec32.o, crtprec64.o and crtprec80.o.
10690
10691         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
10692         and -mpc80 options.
10693         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
10694
10695 2007-04-02  Eric Christopher  <echristo@apple.com>
10696
10697         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
10698         limitations on darwin.
10699
10700 2007-04-02  Anatoly Sokolov <aesok@post.ru>
10701
10702         PR target/31137
10703         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
10704
10705 2007-04-02  Dave Korn  <dave.korn@artimi.com>
10706
10707         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
10708
10709 2007-04-02  Dave Korn  <dave.korn@artimi.com>
10710
10711         * libgcc2.h (exception_descriptor): Don't forward-declare.
10712         (__get_eh_table_language, __get_eh_table_version): Delete
10713         prototypes of long-dead functions.
10714
10715 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
10716
10717         * ebitmap.h: New file
10718         * ebitmap.c: New file
10719         * Makefile.in (ebitmap.o): New target.
10720
10721 2007-04-01  Jan Hubicka  <jh@suse.cz>
10722
10723         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
10724         before very first instruction.
10725
10726 2007-04-01  Jan Hubicka  <jh@suse.cz>
10727
10728         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
10729         waring on 64bit hosts.
10730         * bitmap.h: Fix typo in bitmap_head_def.
10731
10732 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
10733
10734         PR rtl-optimization/31391
10735         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
10736         into a DELETED_LABEL note, and the label is in an empty basic
10737         block, update BB_END as well as BB_HEAD.
10738
10739 2007-04-01  Richard Henderson  <rth@redhat.com>
10740
10741         PR tree-optimization/31169
10742         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
10743         to varying if the range is outside [0,  prec-1].
10744
10745 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
10746
10747         PR target/31388
10748         * config/mips/mips.md (load_const_gp): New insn.
10749         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
10750         the MIPS16 GP pseudo register if no_new_pseudos.
10751         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
10752
10753 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10754
10755         PR target/31364
10756         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
10757         secureplt.
10758         (call_value): Likewise.
10759
10760 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
10761             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10762
10763         PR 14737
10764         * doc/invoke.texi: (optimization options): Reword description
10765         of -ffast-math. Document its primary purpose.
10766
10767 2007-03-31  Richard Guenther  <rguenther@suse.de>
10768
10769         * omp-low.c (splay-tree.h): Include.
10770         (lookup_decl): Replace splay-tree usage by pointer-map.
10771         (maybe_lookup_decl): Likewise.
10772         (new_omp_context): Likewise.
10773         (delete_omp_context): Likewise.
10774         * gimplify.c (splay-tree.h): Include.
10775         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
10776         pointer-map.
10777         (remap_ssa_name): Likewise.
10778         (remap_decl): Likewise.
10779         (remap_type_1): Likewise.
10780         (remap_type): Likewise.
10781         (copy_body_r): Likewise.
10782         (expand_call_inline): Likewise.
10783         (clone_body): Likewise.
10784         (copy_tree_r): Likewise.
10785         (remap_save_expr): Likewise.
10786         (unsave_r): Likewise.
10787         (unsave_expr_now): Likewise.
10788         (tree_function_versioning): Likewise.
10789         (build_duplicate_type): Likewise.
10790         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
10791         (struct copy_body_data): Replace splay-tree by pointer-map.
10792         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
10793         not $(SPLAY_TREE_H).
10794         (gimplify.o): Depend on $(SPLAY_TREE_H).
10795         (omp-low.p): Likewise.
10796
10797 2007-03-31  Anatoly Sokolov <aesok@post.ru>
10798
10799         * config/avr/predicates.md (even_register_operand,
10800         odd_register_operand): New predicates.
10801         * config/avr/avr.md (movw peephole2): New.
10802         (movw_r peephole2): New.
10803
10804 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
10805
10806         * tree.h (get_signed_or_unsigned_type): New.
10807         * fold-const.c (operand_equal_for_comparison_p): Use
10808         get_signed_or_unsigned_type instead of
10809         lang_hooks.types.signed_or_unsigned_type.
10810         * expr.c (store_expr): Ditto.
10811         * langhooks.c (get_signed_or_unsigned_type): New.
10812         (lhd_signed_or_unsigned_type): New.
10813         * langhooks.h (lhd_signed_or_unsigned_type): New.
10814         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
10815
10816 2007-03-30  Richard Henderson  <rth@redhat.com>
10817
10818         * tree-ssa-loop-ivopts.c: Include target.h.
10819         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
10820         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
10821         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
10822         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
10823
10824 2007-03-30  Richard Henderson  <rth@redhat.com>
10825             Kai Tietz  <kai.tietz@onevision.com>
10826
10827         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
10828         default for 64-bit.
10829         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
10830         (TARGET_64BIT_MS_ABI): New.
10831         (DBX_REGISTER_NUMBER): Handle 64-bit.
10832         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
10833         (LONG_TYPE_SIZE): Force to 32.
10834         (REG_PARM_STACK_SPACE): New.
10835         (OUTGOING_REG_PARM_STACK_SPACE): New.
10836         (REGPARM_MAX, SSE_REGPARM_MAX): New.
10837         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
10838         (STACK_BOUNDARY): Use 128 for 64-bit.
10839         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
10840         Add 64-bit implementation.
10841         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
10842         argument unused.
10843         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
10844         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
10845         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
10846         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
10847         (ix86_handle_cconv_attribute): Don't warn when ignoring if
10848         TARGET_64BIT_MS_ABI.
10849         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
10850         (ix86_pass_by_reference): Likewise.
10851         (ix86_function_value_regno_p): Likewise.
10852         (ix86_build_builtin_va_list): Likewise.
10853         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
10854         (function_arg_advance_ms_64): New.
10855         (function_arg_advance): Call it.
10856         (function_arg_ms_64): New.
10857         (function_arg): Call it.
10858         (function_value_ms_64): New.
10859         (ix86_function_value_1): Call it.
10860         (return_in_memory_ms_64): New.
10861         (ix86_return_in_memory): Call it.
10862         (setup_incoming_varargs_ms_64): New.
10863         (ix86_setup_incoming_varargs): Call it.
10864         (ix86_expand_prologue): Handle 64-bit stack probing.
10865         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
10866         (output_pic_addr_const): Likewise.
10867         (x86_this_parameter): Likewise.
10868         (x86_output_mi_thunk): Likewise.
10869         (x86_function_profiler): Likewise.
10870         (TARGET_STRICT_ARGUMENT_NAMING): New.
10871         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
10872         (TARGET_64BIT_MS_ABI): New.
10873         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
10874         * config/i386/i386.md (allocate_stack_worker): Remove.
10875         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
10876         describe the clobber of eax without a match_scratch.
10877         (allocate_stack_worker_postreload): Remove.
10878         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
10879         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
10880         (allocate_stack_worker_rex64_postreload): Remove.
10881         (allocate_stack): Handle 64-bit.
10882         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
10883         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
10884         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
10885         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
10886         (STANDARD_STARTFILE_PREFIX_1): Likewise.
10887         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
10888         * config.build (x86_64-*-mingw*): New host.
10889         * config.host (x86_64-*-mingw*): New host.
10890         * config.gcc (x86_64-*-mingw*): New target.
10891         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
10892
10893 2007-03-30  Richard Henderson  <rth@redhat.com>
10894             Kai Tietz  <kai.tietz@onevision.com>
10895
10896         * c-pragma.c (struct def_pragma_macro_value): New.
10897         (struct def_pragma_macro): New.
10898         (pushed_macro_table): New.
10899         (dpm_hash, dpm_eq): New.
10900         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
10901         (init_pragma): Install them.
10902         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
10903
10904 2007-03-30  Anatoly Sokolov <aesok@post.ru>
10905
10906         * config/avr/avr.c (avr_override_options): Clear
10907         'flag_delete_null_pointer_checks'.
10908
10909 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
10910
10911         PR c++/26099
10912         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
10913         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
10914         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
10915         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
10916         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
10917         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
10918         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
10919         C++ extensions.
10920         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
10921
10922 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
10923
10924         * regmove.c: Move all of pass_stack_adjustments from here...
10925         * combine-stack-adj.c: ...to this new file.
10926         * Makefile.in: Add rules for combine-stack-adj.o.
10927
10928 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
10929
10930         PR tree-optimization/31383
10931         * tree-data-ref.c (affine_function_equal_p): Do not require the
10932         vectors to have the same length.
10933
10934 2007-03-30  Jan Hubicka  <jh@suse.cz>
10935
10936         PR middle-end/30700
10937         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
10938         availablility; add more sanity checking; ask varpool only about
10939         VAR_DECL.
10940
10941 2007-03-29  Richard Henderson  <rth@redhat.com>
10942
10943         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
10944         to decide, but __SIZEOF_LONG_LONG__.
10945
10946 2007-03-29  Richard Henderson  <rth@redhat.com>
10947
10948         * emutls.c (struct __emutls_array): New.
10949         (emutls_destroy): Use it instead of casting element 0 from void*.
10950         (__emutls_get_address): Likewise.
10951
10952 2007-03-29  Richard Henderson  <rth@redhat.com>
10953
10954         * varasm.c (initializer_constant_valid_p): Don't deny
10955         DECL_DLLIMPORT_P on functions.
10956
10957         * config/i386/cygming.h: Remove function declarations.
10958         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
10959         (ASM_OUTPUT_LABELREF): Remove.
10960         (COMMON_ASM_OP): Remove.
10961         (ASM_OUTPUT_COMMON): Remove.
10962         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
10963         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
10964         (ASM_DECLARE_FUNCTION_NAME): Likewise.
10965         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
10966         Rename from TARGET_ENCODE_SECTION_INFO.
10967         * config/i386/netware.h: Likewise.
10968         * config/i386/i386-protos.h: Update.
10969         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
10970         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
10971         (legitimate_constant_p): Reject dllimports.
10972         (dllimport_map, get_dllimport_decl): New.
10973         (legitimize_dllimport_symbol): New.
10974         (legitimize_address, ix86_expand_move): Use it.
10975         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
10976         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
10977         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
10978         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
10979         * config/i386/predicates.md (constant_call_address_operand): Only
10980         accept symbols; reject dllimport_p symbols.
10981         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
10982         i386_pe_maybe_record_exported_symbol.
10983         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
10984         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
10985         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
10986         trust the setting of DECL_DLLIMPORT_P.
10987         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
10988         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
10989         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
10990         tidy the argument scanning loop.
10991         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
10992         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
10993         (i386_pe_strip_name_encoding): Remove.
10994         (i386_pe_binds_local_p): New.
10995         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
10996         (i386_pe_output_labelref): Remove.
10997         (i386_pe_asm_output_aligned_decl_common): New.
10998         (i386_pe_maybe_record_exported_symbol): Rename from
10999         i386_pe_record_exported_symbol; check for dllexported symbols.
11000
11001 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
11002
11003         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
11004         add comment explaining why vsnprintf cannot be used.
11005
11006 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
11007
11008         PR tree-optimization/30666
11009         * tree.c (build_complex_type): When creating type names for DWARF2
11010         debug info, create TYPE_DECLs for TYPE_NAME instead of
11011         IDENTIFIER_NODEs.
11012         (build_common_tree_nodes_2): Use build_complex_type when building
11013         predefined complex types, to preserve canonical types.
11014
11015 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
11016
11017         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
11018         (noce_get_alt_condition): Look at it to determine whether to
11019         reverse the condition or not.
11020         (noce_get_condition): Substitute the truth for lies.
11021         (noce_find_if_block): Set the then_else_reversed field.
11022
11023 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
11024
11025         * config/fr30/fr30.md (movdi): Do not accept immediates as the
11026         destination of this insn.
11027         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
11028         than calling gen_rtx_SET directly.  Use r0 to hold the value of
11029         'address + 4' rather than a stack based temporary which can be
11030         mis-optimized away.
11031
11032 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
11033
11034         * config/s390/s390.c (s390_secondary_input_reload_class,
11035         s390_secondary_output_reload_class): Functions removed.
11036         (s390_secondary_reload): New function.
11037         (TARGET_SECONDARY_RELOAD): Target macro defined.
11038         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
11039         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
11040         * config/s390/s390.md ("reload_outti", "reload_outdi",
11041         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
11042         "reload_out<mode>"): Expanders removed.
11043         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
11044         "reload<mode>_nonoffmem_out"): Expanders added.
11045
11046 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
11047
11048         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
11049         action if SRC->DEST replacement failed anyway.
11050
11051 2007-03-28  Mike Stump  <mrs@apple.com>
11052
11053         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
11054         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
11055         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
11056
11057 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
11058
11059         * config.gcc: Accept barcelona as a variant of amdfam10.
11060         * config/i386/i386.c (override_options): Likewise.
11061         * doc/invoke.texi: Likewise.
11062
11063 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
11064
11065         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
11066         offsets for BIT_FIELD_REF and COMPONENT_REF.
11067
11068 2007-03-28  Richard Guenther  <rguenther@suse.de>
11069
11070         * tree.c (is_global_var): Move ...
11071         * tree-flow-inline.h (is_global_var): ... here.
11072         * tree.h (is_global_var): Remove declaration.
11073
11074 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
11075
11076         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
11077         option.
11078         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
11079         * config/i386/i386.c (ix86_tune_features): Initialize new
11080         tuning option.
11081         * config/i386/predicates.md (promotable_binary_operator): Use
11082         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
11083
11084 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
11085
11086         PR target/31380
11087         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
11088
11089 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
11090
11091         * config/fr30/fr30.md (movsi_internal): Change destination
11092         constraint from m to V and add m to the end.
11093
11094 2007-03-28  Christian Bruel  <christian.bruel@st.com>
11095
11096         * config/sh/sh.md (movsi_i): Fix type attribute.
11097
11098 2007-03-28  Christian Bruel  <christian.bruel@st.com>
11099
11100         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
11101         (movsf_ie): Likewise.
11102
11103 2007-03-28  Christian Bruel  <christian.bruel@st.com>
11104
11105         * config.gcc: Add sh4-300 to multilib.
11106         * config/sh/t-mlib-sh4-300: New file.
11107
11108 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
11109
11110         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
11111         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
11112         fix_trunc<mode>di2.
11113         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
11114         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
11115         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
11116         "fixuns_trunctddi2"): Whitespace fix.
11117
11118 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
11119
11120         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
11121         the definition of struct sh_args.
11122         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
11123         CALL_COOKIE_INT_REG_GET): Likewise.
11124
11125 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
11126
11127         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
11128         transformations are applied successfully.
11129
11130 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
11131
11132         * tree.c (tree_contains_struct): Permit 512 tree codes.
11133         * tree.h (tree_contains_struct): Ditto.
11134         (MAX_TREE_CODES): Ditto.
11135         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
11136         SPARE member to store remaining padding bits.
11137
11138 2007-03-27  Anatoly Sokolov <aesok@post.ru>
11139
11140         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
11141         architecture.
11142
11143 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
11144
11145         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
11146         * configure: Regenerate.
11147
11148         * configure: Regenerate using the correct version of autoconf.
11149
11150 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
11151
11152         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
11153         pointer regs.
11154         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
11155         regs to "__SP_L__" and "__SP_H__".
11156
11157 2007-03-27  Richard Guenther  <rguenther@suse.de>
11158
11159         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
11160         computations with it with a HOST_WIDE_INT variable.
11161
11162 2007-03-26  Mike Stump  <mrs@apple.com>
11163
11164         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
11165         objective-c-header, objective-c++-header and objc++-cpp-output
11166         support.
11167         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
11168
11169 2007-03-26  Richard Henderson  <rth@redhat.com>
11170
11171         PR target/31361
11172         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
11173         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
11174         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
11175         IX86_BUILTIN_PSRLQ128): New.
11176         (ix86_init_mmx_sse_builtins): Add them.
11177         (ix86_expand_builtin): Expand them.
11178         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
11179         operand 2 be TImode.
11180         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
11181         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
11182         _mm_srli_epi64): Mark __B const.
11183         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
11184         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
11185         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
11186         new two-vector shift builtins.
11187
11188 2007-03-26  Ian Lance Taylor  <iant@google.com>
11189
11190         PR tree-optimization/31345
11191         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
11192         [+INF, +INF(OVF)] into VARYING.
11193
11194 2007-03-26  Zack Weinberg  <zackw@panix.com>
11195
11196         * gengtype-parse.c: New file.
11197         * gengtype-yacc.y: Delete.
11198         * gengtype-lex.l: Don't include gengtype-yacc.h.
11199         Define YY_DECL and yyterminate appropriately for recursive
11200         descent parser.  yylval is now a string out-parameter to yylex.
11201         (HWS, EOID): New shorthand.
11202         (IWORD): Add a couple more types.
11203         (yylex): Add a setup stanza.  Remove the complex rules for
11204         detecting GTY'ed types and typedefs; replace with simple
11205         keyword detectors.  Adjust everything for the changed
11206         definition of yylval.  Ignore all pp-directives, not just #define.
11207         (yyerror): Delete.
11208         (parse_file): Rename yybegin; do not call yyparse.
11209         (yyend): New.
11210         * gengtype.c (xasprintf): Export again.
11211         (this_file): New.  Use everywhere __FILE__ was being used.
11212         (get_lang_bitmap): Special case types defined in gengtype.c.
11213         (do_typedef, new_structure): Suppress definition of certain types.
11214         (new_structure): Improve diagnostics of duplicate definitions.
11215         Make sure location_s is associated with input.h.
11216         (nreverse_pairs, define_location_structures): New functions.
11217         (main): Improve tagging of kludge types.  Remove old kludges
11218         for input.h types; use define_location_structures.
11219         * gengtype.h: Update prototypes.  Define token codes here.
11220         * Makefile.in: Remove all references to gengtype-yacc.
11221         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
11222         and gengtype.
11223         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
11224         add GTY((skip)) to the field that's only conditionally there.
11225         * doc/install.texi: Document that Bison is no longer required
11226         unless building treelang.
11227
11228         * gengtype.c: Don't include gtyp-gen.h.
11229         (srcdir): Declare here.
11230         (base_files, lang_dir_names): Allocate dynamically.
11231         (gt_files, num_gt_files, num_lang_dirs): New globals.
11232         (measure_input_list, read_input_line, read_input_list)
11233         (set_lang_bitmap): New functions.
11234         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
11235         simplify, relying on read_input_list to set up the bitmaps.
11236         (main): Arguments are no longer unused.  Check for correct number
11237         of command line arguments, set srcdir and srcdir_len, then call
11238         read_input_list, before doing anything else.  No need to worry
11239         about duplicates in main loop.
11240         * configure.ac: Simplify the calculation of all_gtfiles.
11241         Put language tags in there.  Don't set or substitute
11242         all_gtfiles_files_langs or all_gtfiles_files_frags.
11243         * Makefile.in: Revamp the way gengtype is invoked, now that it
11244         takes a file on its command line with a much simpler format.
11245         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
11246         (GTFILES): Remove duplicates and C source files.
11247         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
11248         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
11249         * configure: Regenerate.
11250
11251         * gengtype.h: Remove all type definitions to gengtype.c; leave
11252         only definitions of options_p, type_p, and pair_p as opaque
11253         pointers.  Update prototypes.
11254         * gengtype.c: Many type definitions moved here from gengtype.h.
11255         Consolidate type definitions at the top of the file.
11256         (xvasprintf): Delete.
11257         (xasprintf): Make static.
11258         (create_nested_pointer_option): Add 'next' parameter.
11259         (create_field_all, create_field_at): New functions.
11260         (create_field): Now a thin wrapper around create_field_all.
11261         (create_optional_field): Rename create_optional_field_ and add
11262         line argument.  Original name is now a macro which supplies
11263         __LINE__.
11264         (oprintf): Use vsnprintf directly.
11265         (close_output_files): Use fatal rather than perror/exit.
11266         (note_def_vec, note_def_vec_alloc): Use create_field_at.
11267         (main): Set progname.  Don't use exit.
11268         * gengtype-yacc.y (struct_fields): Use create_field_at.
11269         (option, optionseqopt): Delete.
11270         (optionseq): Consolidate productions from option here so we
11271         can use the first argument to create_option.
11272
11273         * gengtype-lex.l: Distinguish unions from structures in the
11274         token type.  Don't call find_structure; return the tag as a string.
11275         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
11276         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
11277         string.  Reorganize typedef_struct production accordingly.
11278         Use create_nested_ptr_option.
11279         * gengtype.c (create_nested_ptr_option): New function.
11280         * gengtype.h: Declare it.
11281
11282         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
11283         (string_type): Don't declare.
11284         (do_scalar_typedef): Declare.
11285         (create_scalar_type): Update prototype.
11286         * gengtype.c (string_type): Make static.
11287         (scalar_nonchar, scalar_char): New.
11288         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
11289         (resolve_typedef): Use scalar_nonchar for error recovery.
11290         (create_scalar_type): Remove name_len field.  Return scalar_char
11291         or scalar_nonchar as appropriate.
11292         (adjust_field_type): Look at scalar_is_char boolean to decide whether
11293         to use string_type.
11294         (throughout): Use scalar_nonchar instead of calling
11295         create_scalar_type, whenever possible.
11296         (main): Initialize scalar_char and scalar_nonchar before calling
11297         gen_rtx_next.
11298         * gengtype-lex.l: Adjust for removal of second argument to
11299         create_scalar_type.  Use yylval.s instead of yylval.t when
11300         returning SCALAR.
11301         * gengtype-yacc.y: Type of SCALAR is string.  Call
11302         create_scalar_type from type:SCALAR rule.  Adjust for removal of
11303         second argument to create_scalar_type.
11304
11305         * vec.h: Remove all #if IN_GENGTYPE blocks.
11306         Add comment saying that changes may require adjustments to gengtype.
11307         * gengtype.c: Don't include coretypes.h or tm.h.
11308         Add comment to inclusion of errors.h.
11309         (note_def_vec, note_def_vec_alloc): New functions.
11310         * gengtype.h: Declare new functions.
11311         * gengtype-lex.l: Don't include coretypes.h.
11312         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
11313         Delete.
11314         (update_lineno): Remove unnecessary prototype.
11315         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
11316         (VEC rule): Just return VEC_TOKEN.
11317         * gengtype-yacc.y (VEC_TOKEN): New token type.
11318         (type): Add a production for VEC(a,b).
11319         * Makefile.in: Update dependencies.
11320
11321         * gengtype-lex.l: Remove rules for parsing pointer-to-function
11322         typedefs that use the old PARAMS macro.
11323
11324         * gengtype-lex.l: Remove all rules and states relating to yacc
11325         input files.
11326         * gengtype-yacc.y: Similarly.
11327         * gengtype.c (note_yacc_type): Delete function.
11328         * gengtype.h: Update prototypes.
11329
11330 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
11331
11332         * tree-pretty-print.c (dump_generic_node): Report precision of
11333         unnamed integer types.
11334
11335 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
11336
11337         * ifcvt.c (noce_try_store_flag_constants): Don't check
11338         no_new_pseudos here.
11339         (noce_try_store_flag_constants): Don't check no_new_pseudos.
11340         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
11341         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
11342         noce_try_sign_mask): Likewise.
11343         (if_convert): Check no_new_pseudos here.
11344
11345         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
11346         Remove prototypes.
11347         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
11348         (noce_get_condition): Handle new then_else_reversed argument.
11349         (noce_init_if_info): Remove, fold into noce_find_if_block.
11350         (noce_process_if_block): Take a struct noce_if_info as the
11351         argument.  Don't set up one based on ce_if_info.  Update pointer
11352         references accordingly.
11353         (cond_move_process_if_block): Likewise.
11354         (process_if_block): Removed.
11355         (find_if_block): Removed.  Move functionality two new functions,
11356         noce_find_if_block and cond_exec_find_if_block.
11357         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
11358         blocks and the symmetric IF-ELSE-JOIN case.
11359         (cond_exec_find_if_block): Also new function mostly based on old
11360         find_if_block and process_if_block.
11361         (find_if_header): Replace find_if_block call with separately
11362         guarded calls to noce_find_if_block and cond_exec_find_if_block.
11363         (find_cond_trap): Update noce_get_condition call.
11364         (dead_or_predicable): Likewise.
11365
11366 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
11367
11368         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
11369         Remove.
11370         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
11371         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
11372         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
11373         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
11374         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
11375         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
11376         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
11377         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
11378         __builtin_ia32_psrad128 builtins.
11379
11380 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
11381
11382         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
11383         * config/i386/constraints.md
11384         (define_constraint "I"): Use IN_RANGE macro.
11385         (define_constraint "J"): Ditto.
11386         (define_constraint "K"): Ditto.
11387         (define_constraint "M"): Ditto.
11388         (define_constraint "N"): Ditto.
11389         (define_constraint "O"): Ditto.
11390         * config/i386/predicates.md
11391         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
11392         (define_predicate "const_0_to_3_operand"): Ditto.
11393         (define_predicate "const_0_to_7_operand"): Ditto.
11394         (define_predicate "const_0_to_15_operand"): Ditto.
11395         (define_predicate "const_0_to_63_operand"): Ditto.
11396         (define_predicate "const_0_to_255_operand"): Ditto.
11397         (define_predicate "const_1_to_31_operand"): Ditto.
11398         (define_predicate "const_2_to_3_operand"): Ditto.
11399         (define_predicate "const_4_to_7_operand"): Ditto.
11400
11401 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
11402
11403         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
11404         in SImode for save_world.
11405         * config/rs6000/altivec.md (save_world, restore_world): Convert to
11406         LR hard reg.
11407
11408 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
11409
11410         PR tree-optimization/30784
11411         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
11412         BIT_FIELD_REF.
11413
11414 2007-03-25  Revital Eres  <eres@il.ibm.com>
11415
11416         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
11417           Fold movement_possibility function into it.
11418
11419 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
11420
11421         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
11422         (load_macho_picbase_{si,di}): Convert to LR hard reg.
11423         (call_indirect_nonlocal_darwin64): Same.
11424         (call_nonlocal_darwin64): Same.
11425         (call_value_indirect_nonlocal_darwin64): Same.
11426         (call_value_nonlocal_darwin64): Same.
11427         (sibcall_nonlocal_darwin64): Same.
11428         (sibcall_value_nonlocal_darwin64): Same.
11429         (sibcall_symbolic_64): Same.
11430         (sibcall_value_symbolic_64): Same.
11431         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
11432         LR pseudo.
11433         (rs6000_emit_load_toc_table): Same.
11434         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
11435         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
11436         (mull_call): Same.
11437         (divss_call): Same.
11438         (divus_call): Same.
11439         (quoss_call): Same.
11440         (quous_call): Same.
11441         (load_toc_v4_pic_si): Same
11442         (load_toc_v4_PIC_1): Same.
11443         (load_toc_v4_PIC_1b): Same.
11444         (call_indirect_aix{32,64}): Same.
11445         (call_value_indirect_aix{32,64}): Same.
11446         (call): Same.
11447         (call_value): Same.
11448         (call_local{32,64}): Same.
11449         (call_value_local{32,64}): Same.
11450         (call_indirect_nonlocal_aix{32,64}): Same.
11451         (call_nonlocal_aix{32,64}): Same.
11452         (call_value_indirect_nonlocal_aix{32,64}): Same.
11453         (call_value_nonlocal_aix{32,64}): Same.
11454         (call_indirect_nonlocal_sysv<mode>): Same.
11455         (call_nonlocal_sysv<mode>): Same.
11456         (call_value_indirect_nonlocal_sysv<mode>): Same.
11457         (call_value_nonlocal_sysv<mode>): Same.
11458         (sibcall): Same.
11459         (sibcall_local{32,64}): Same.
11460         (sibcall_value_local{32,64}): Same.
11461         (sibcall_nonlocal_aix{32,64}): Same.
11462         (sibcall_value_nonlocal_aix{32,64}): Same.
11463         (sibcall_nonlocal_sysv<mode>): Same.
11464         (sibcall_value): Same.
11465         (sibcall_value_nonlocal_sysv<mode>): Same.
11466
11467 2007-03-24  Paul Brook  <paul@codesourcery.com>
11468
11469         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
11470         * config/arm/linux-eabi.h: Remove legacy syscall hack.
11471
11472 2007-03-24  Richard Henderson  <rth@redhat.com>
11473
11474         * config/ia64/constraints.md: New file.
11475         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
11476         satisfies_constraint_?.
11477         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
11478         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
11479         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
11480         ia64_output_mi_thunk): Likewise.
11481         (ia64_const_ok_for_letter_p): Remove.
11482         (ia64_const_double_ok_for_letter_p): Remove.
11483         (ia64_extra_constraint): Remove.
11484         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
11485         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
11486         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
11487         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
11488         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
11489         EXTRA_MEMORY_CONSTRAINT): Remove.
11490         * config/ia64/ia64.md: Include constriants.md.  Replace
11491         CONST_OK_FOR_? with satisfies_constraint_?.
11492
11493 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
11494             H.J. Lu  <hongjiu.lu@intel.com>
11495
11496         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
11497         DPD or BID name.
11498         (name macros): Use DPD_BID_NAME to convert names properly.
11499
11500         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
11501         decimal floating point format.
11502         (init_floating_libfuncs): Change decimal functions so that they
11503         have a "bid_" prefix if the decimal system uses the BID format,
11504         and "dpd_" prefix if the decimal system uses the DPD format.
11505         (init_interclass_conv_libfuncs): Ditto.
11506         (init_intraclass_conv_libfuncs): Ditto.
11507
11508         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
11509         using the BID format.
11510
11511         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
11512         whether we are using the BID decimal format.
11513         * configure: Regenerate.
11514
11515         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
11516         the compiler has decimal floating point enabled.  Define
11517         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
11518         instead of DPD.
11519
11520         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
11521         using the BID format.
11522
11523         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
11524         whether we are using the BID decimal format.
11525         * configure: Regenerate.
11526
11527         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
11528         the compiler has decimal floating point enabled.  Define
11529         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
11530         instead of DPD.
11531
11532         * doc/install.texi (--enable-decimal-float): Document BID and DPD
11533         options, and that it is enabled for i386/x86_64 systems.
11534
11535         * Makefile.in (enable_decimal_float): New.
11536         (DECNUMFMT): New.
11537         (DECNUMINC): Add  -I$(DECNUMFMT).
11538         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
11539         to $(DECNUMFMT) from $(DECNUM).
11540
11541         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
11542         Substitute enable_decimal_float.
11543         * configure: Regenerated.
11544
11545         PR other/30529
11546         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
11547         unsigned long.
11548
11549         * configure.ac: Enable decimal float for x86_64-*-linux*.
11550         * configure: Regenerated.
11551
11552         PR other/30530
11553         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
11554         decimal128ClearSign to flip and clear the sign bit in decimal128.
11555         (decimal_real_maxval): Set decimal128SetSign to set the sign
11556         bit in decimal128.
11557
11558 2007-03-23  Ian Lance Taylor  <iant@google.com>
11559
11560         * fold-const.c (fold_binary): Correct warning for X - c >= X.
11561
11562 2007-03-23  Ian Lance Taylor  <iant@google.com>
11563
11564         * tree-dump.c (dump_files): Correct comment.
11565
11566 2007-03-23  Ian Lance Taylor  <iant@google.com>
11567
11568         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
11569
11570 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
11571
11572         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
11573         in cfglayout mode.  Don't go into and out of cfglayout mode.
11574         Link the blocks in the order of the constructed traces.
11575         (rest_of_handle_tracer): Adjust call to tracer.
11576         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
11577         Don't go into cfglayout mode.
11578         (rtl_loop_done): Don't go out of cfglayout mode.
11579         * cfglayout.c (relink_block_chain): New function, split out from...
11580         (fixup_reorder_chain): ...here.  Remove redundant checking.
11581         (cfg_layout_finalize): Don't clear the header, footer, and aux
11582         fields here, move the code to do so to relink_block_chain.  Likewise
11583         for free_original_copy_tables.
11584         * rtl.h (tracer): Update prototype.
11585         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
11586         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
11587         mode.  Use relink_block_chain to serialize the CFG according to the
11588         new basic block order.  Move targetm.cannot_modify_jumps_p check from
11589         here...
11590         (gate_handle_reorder_blocks): ...to here.
11591         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
11592         from here...
11593         (gate_duplicate_computed_gotos): ...to here.
11594         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
11595         something always changes when going into and out of cfglayout mode.
11596         Perform an expensive cfg cleanup while going into cfglayout mode.
11597         Always update liveness information on HAVE_conditional_execution
11598         targets.  Reserialize the basic blocks and go out of cfglayout mode.
11599         * reg-stack.c: Include cfglayout.h.
11600         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
11601         the call to reorder_basic_blocks.
11602         * basic-block.h (reorder_basic_blocks): Update prototype.
11603         (relink_block_chain): New prototype.
11604         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
11605
11606 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
11607
11608         * config/mips/mips.md (type, hazard, *movdi_32bit,
11609         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
11610         *movhi_internal, *movqi_internal, *movsf_hardfloat,
11611         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
11612         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
11613         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
11614         applicable.
11615         (movcc): Change first xfer to multi.
11616         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
11617         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
11618         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
11619         config/mips/generic.md: Change reservations using "xfer" to use
11620         "mfc,mtc".
11621         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
11622         using match_operand.
11623         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
11624         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
11625         examining mode.
11626         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
11627
11628 2007-03-22  Richard Henderson  <rth@redhat.com>
11629
11630         * config/i386/i386.c: Remove unnecessary function declarations.
11631         Move targetm definition, and all related macros, to the end of
11632         the file.  Resort some functions to put definitions before uses.
11633         (ix86_attribute_table): Make static.  Move to end of file.
11634         (ix86_gimplify_va_arg): Make static.
11635
11636 2007-03-22  Richard Henderson  <rth@redhat.com>
11637
11638         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
11639         don't increase local_regparm with force_align_arg_pointer check.
11640         (ix86_function_sseregparm): Assert 32-bit.
11641         (type_has_variadic_args_p): New.
11642         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
11643         type_has_variadic_args_p.
11644         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
11645         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
11646         use memset instead.  Do maybe_vaarg check first; skip attribute
11647         tests if true; skip attribute tests for 64-bit.
11648         (construct_container): Remove TARGET_DEBUG_ARG.
11649         (function_arg_advance_32, function_arg_advance_64): Split out ...
11650         (function_arg_advance): ... from here.
11651         (function_arg_32, function_arg_64): Split out ...
11652         (function_arg): ... from here.
11653         (ix86_pass_by_reference): Tidy.
11654         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
11655         (function_value_32): New, from parts of ix86_function_value
11656         and ix86_value_regno.
11657         (function_value_64): New, from parts of ix86_function_value
11658         and ix86_libcall_value.
11659         (ix86_function_value_1): New.
11660         (ix86_function_value, ix86_libcall_value): Use it.
11661         (return_in_memory_32, return_in_memory_64): Split out ...
11662         (ix86_return_in_memory): ... from here.
11663         (ix86_struct_value_rtx): Skip for 64-bit.
11664         (ix86_libcall_value, ix86_value_regno): Remove.
11665         (setup_incoming_varargs_64): Split out ...
11666         (ix86_setup_incoming_varargs): ... from here.
11667         (ix86_va_start): Remove TARGET_DEBUG_ARG.
11668         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
11669         * config/i386/i386-protos.h (ix86_function_value): Remove.
11670         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
11671
11672 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11673
11674         PR other/23572
11675         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
11676         infinities not supported, otherwise emit warning if -Woverflow. On
11677         underflow, emit warning if -Woverflow.
11678         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
11679         and 0 otherwise.
11680         * real.h (real_from_string): Update declaration
11681
11682 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
11683             Richard Henderson  <rth@redhat.com>
11684
11685         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
11686         * calls.c (compute_argument_block_size, expand_call,
11687         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
11688         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
11689         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
11690         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
11691         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
11692         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
11693         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
11694         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
11695         Set to 1.
11696
11697 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
11698
11699         * c-incpath.c (add_sysroot_to_chain): New.
11700         (merge_include_chains): Add sysroot argument.  Call
11701         add_sysroot_to_chain if sysrooted.
11702         (register_include_chains): Update call to merge_include_chains.
11703         * doc/cppopts.texi: Document use of '=' in include directory
11704         arguments.
11705
11706 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
11707
11708         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
11709         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
11710         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
11711         insn pattern using X87MODEF12 mode macro.
11712
11713 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
11714
11715         * regmove.c (regmove_optimize): Use reg_mentioned_p
11716         instead of reg_overlap_mentioned_p for DST.
11717
11718 2007-03-21  Mike Stump  <mrs@apple.com>
11719
11720         * c.opt: Fixup for Objective-C/C++.
11721
11722 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
11723
11724         * explow.c (convert_memory_address): Fold memory reference when
11725         POINTERS_EXTEND_UNSIGNED < 0
11726
11727 2007-03-21  Richard Henderson  <rth@redhat.com>
11728
11729         PR target/31245
11730         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
11731         * config/i386/mmintrin.h (__m64): Likewise.
11732         * config/i386/xmmintrin.h (__m128): Likewise.
11733
11734 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
11735
11736         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
11737         (VXWORKS_OS_CPP_BUILTINS): Define.
11738         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
11739         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
11740
11741 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
11742
11743         * rtl.h (constant_pool_reference_p): Delete.
11744         (find_constant_src): Declare.
11745         * rtlanal.c (find_constant_src): New function.
11746         * simplify-rtx.c (constant_pool_reference_p): Delete.
11747         * config/i386/i386.md: Use find_constant_src instead of
11748         constant_pool_reference_p/avoid_constant_pool_reference pairs.
11749
11750 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
11751
11752         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
11753         * c-cppbuiltin.c (c_cpp_builtins): Define them.
11754
11755 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
11756
11757         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
11758         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
11759         (arm_elf_asm_constructor): Use it.
11760         (arm_elf_asm_destructor): New function.
11761
11762 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
11763
11764         * jump.c (mark_jump_label): Treat SEQUENCE specially.
11765
11766 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
11767
11768         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
11769
11770 2007-03-19  Andrew Haley  <aph@redhat.com>
11771
11772         PR tree-optimization/31264
11773         * tree-vrp.c (register_edge_assert_for_1): Don't look though
11774         VIEW_CONVERT_EXPRs.
11775
11776 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
11777
11778         PR rtl-optimization/30907
11779         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
11780         (fwprop_init): Always call loop_optimizer_initialize.
11781         (fwprop_done): Always call loop_optimizer_finalize.
11782         (fwprop): We always have loop info now.
11783         (gate_fwprop_addr): Remove.
11784         (pass_fwprop_addr): Use gate_fwprop as gate.
11785
11786         PR rtl-optimization/30841
11787         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
11788         df_chain_alloc): Call df_reorganize_refs unconditionally.
11789         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
11790         refs_organized to refs_organized_size.
11791         (df_ref_create_structure): Use refs_organized_size instead of
11792         bitmap_size if refs had been organized, and keep refs_organized_size
11793         up-to-date.
11794         * df.h (struct df_ref_info): Change refs_organized to
11795         refs_organized_size.
11796         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
11797         bitmap_size.
11798
11799 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
11800
11801         * except.c (output_function_exception_table): Do not reference the
11802         EH personality routine for functions that do not require an
11803         exception table.
11804
11805 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
11806
11807         PR c/30762
11808         * c-typeck.c (convert_for_assignment): Call comptypes for
11809         RECORD_TYPE or UNION_TYPE.
11810
11811         PR inline-asm/30505
11812         * reload1.c (reload): Do invalid ASM checking after
11813         cleanup_subreg_operands.
11814
11815 2007-03-19  Jeff Law  <law@redhat.com>
11816
11817         * tree-cfg.c (find_taken_edge): Tighten conditions for
11818         optimizing computed gotos.
11819
11820 2007-03-19  Michael Matz  <matz@suse.de>
11821
11822         * builtins.c (expand_builtin_sync_operation,
11823         expand_builtin_compare_and_swap,
11824         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
11825         correctly.
11826
11827         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
11828         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
11829         for operand 3.
11830
11831 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
11832
11833         * doc/tm.texi: Add brackets around the return type of
11834         TARGET_SECONDARY_RELOAD.
11835
11836 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11837         Richard Guenther  <rguenther@suse.de>
11838
11839         PR tree-optimization/31254
11840         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
11841         Use handled_component_p () where appropriate.  Continue
11842         propagating into the rhs if we propagated into an INDIRECT_REF
11843         on the lhs.
11844
11845 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
11846
11847         * config/s390/s390.md (op_type attribute): RRR instruction type added.
11848         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
11849         (xde, xdee): Mode attributes adjusted to support DFP modes.
11850         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
11851         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
11852         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
11853         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
11854         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
11855         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
11856         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
11857         numbers.
11858         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
11859         "movsf"): Insn definitions removed.
11860         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
11861         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
11862         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
11863         definitions added.
11864         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
11865         "reload_in<mode>", "reload_out<mode>"): Expander added.
11866         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
11867         Expander removed.
11868
11869 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
11870
11871         * config/s390/s390.md: Only non-functional changes.  Renamed
11872         FPR mode macro to BFP all over the file.
11873
11874 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
11875
11876         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
11877         (op_type attribute): RRF instruction type added.
11878         (fT0): New mode attribute.
11879         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
11880         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
11881         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
11882         instruction no secondary memory is needed when moving DFmode values
11883         between GPRs and FPRs.
11884
11885 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
11886
11887         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
11888         inverted and documentation adjusted.
11889         ("mhard-dfp", "msoft-dfp"): New options.
11890         * config/s390/s390.c (s390_handle_arch_option): New architecture
11891         switch: z9-ec.
11892         (override_options): Sanity checks for the new options added.
11893         * config.gcc: New architecture switch: z9-ec.
11894         * config/s390/s390.h (processor_flags): PF_DFP added.
11895         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
11896         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
11897         when the bit is NOT set so remove it from the defaults.
11898
11899 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
11900
11901         * genemit.c (main): Print include statement for dfp.h.
11902         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
11903         is not available.
11904
11905 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
11906
11907         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
11908
11909 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
11910
11911         PR target/31022
11912         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
11913         instead of PATTERN.
11914
11915 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11916
11917         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
11918         attr_length_call, output_call, output_indirect_call): Cleanup
11919         formatting of targetm calls.
11920
11921 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
11922
11923         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
11924
11925 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11926
11927         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
11928         reservation, bypass and anti-bypass descriptions for these
11929         instructions.  Update move patterns.
11930         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
11931         TYPE_FPSTORE.
11932
11933 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
11934
11935         * tree-vect-transform.c (get_initial_def_for_induction): Replace
11936         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
11937         (get_initial_def_for_reduction): Likewise.
11938
11939 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
11940
11941         Fix PR tree-optimization/29922
11942         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
11943         (get_representative): Removed.
11944         (value_dies_in_block_x): Update for rvuse removal.
11945         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
11946         (compute_antic_aux): Handle when PHI nodes appear in
11947         non-single-successors.
11948         (dump_bitmap_of_names): Removed.
11949         (compute_antic_safe): Renamed and removed rvuse calculation.
11950         Calculate only antic safe.
11951         (insert_into_preds_of_block): Remove assert.
11952         (execute_pre): Update for renamed functions.
11953         (defer_or_phi_translate_block): New function.
11954
11955 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
11956
11957         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
11958         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
11959         typos.
11960         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
11961         Follow spelling conventions.
11962
11963         * tree-data-ref.h: Remove the prototype for analyze_array.
11964
11965 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
11966
11967         PR tree-optimization/31041
11968         * tree-vect-transform.c (get_initial_def_for_induction): Call
11969         force_gimple_operand.
11970
11971 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
11972
11973         * ipa-type-escape.c (look_for_casts) : Revert code to use
11974         handled_component_p due to ada test a-numaux.adb.
11975
11976 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
11977
11978         * final.c (final_scan_insn): Alter the condition of a
11979         conditional trap if we have nonstandard CC.
11980
11981 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
11982
11983         * configure.ac: Remove excess quoting from asm line 0 test.
11984         * configure: Rebuilt.
11985
11986 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11987
11988         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
11989         * c-common.c (convert_and_check): Move warning logic to...
11990         (warnings_for_convert_and_check): ...here. Define.
11991         * c-common.h (warnings_for_convert_and_check): Declare.
11992
11993 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11994
11995         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
11996         (output_call): Likewise.
11997
11998 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
11999
12000         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
12001
12002 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
12003
12004         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
12005
12006 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
12007
12008         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
12009         opteron, athlon-64 and athlon-fx processor_alias_table entries.
12010
12011 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
12012
12013         PR tree-optimization/31183
12014         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
12015         Use double_int instead of unsigned int for representing access_strides.
12016         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
12017
12018 2007-03-16  Richard Guenther  <rguenther@suse.de>
12019
12020         PR tree-optimization/31146
12021         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
12022         to allow recursion of forward_propagate_addr_expr.
12023         (forward_propagate_addr_into_variable_array_index): Likewise.
12024         (forward_propagate_addr_expr): Likewise.
12025         (tree_ssa_forward_propagate_single_use_vars): Likewise.
12026         (forward_propagate_addr_expr_1): Recurse on simple copies
12027         instead of propagating into them.  Do so for useless conversions
12028         as well.
12029         (forward_propagate_addr_expr): Clean up unused statements after
12030         recursion.
12031
12032 2007-03-16  Richard Guenther  <rguenther@suse.de>
12033
12034         * builtins.c (expand_builtin_cexpi): Use the right argument
12035         for the expansion via cexp.
12036
12037 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
12038
12039         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
12040         * configure: Rebuilt.
12041
12042 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
12043
12044         PR debug/29906
12045         * dwarf2out.c (force_type_die): Adjust comment.
12046         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
12047
12048 2007-03-15  DJ Delorie  <dj@redhat.com>
12049
12050         * config/frv/predicates.md (minmax_operator): Don't check operands
12051         here.
12052
12053 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
12054
12055         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
12056         Update constant estimates of number of iterations.
12057         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
12058         argument renamed to "realistic".
12059         (compute_estimated_nb_iterations): Removed.
12060         (record_niter_bound): New function.
12061         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
12062         call record_nonwrapping_iv with upper = false.
12063         (infer_loop_bounds_from_signedness): Pass upper argument to
12064         record_nonwrapping_iv.
12065         (estimate_numbers_of_iterations_loop): Do not call
12066         compute_estimated_nb_iterations.  Record estimate based on profile
12067         information.  Initialize the constant estimates of number of
12068         iterations.
12069         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
12070         estimates.
12071         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
12072         number of iterations is too small.
12073         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
12074         (EST_NOT_AVAILABLE): Removed.
12075         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
12076         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
12077         fields.
12078
12079 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
12080
12081         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
12082         Handle NE_EXPR guards.
12083
12084 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12085
12086         PR c++/24924
12087         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
12088         Set also -pedantic-errors by default for the  preprocessor unless
12089         -fpermissive is given.
12090
12091 2007-03-15  Richard Guenther  <rguenther@suse.de>
12092
12093         PR middle-end/29719
12094         PR middle-end/31161
12095         * builtins.c (expand_builtin_cexpi): As a fallback if we
12096         don't have builtins for sincos or cexp create a function
12097         declaration for cexp and expand to a call to that.
12098         (expand_builtin_int_roundingfn): Always fall
12099         back to floor/ceil and its variants even if they may be
12100         not available.
12101
12102 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
12103
12104         PR middle-end/31159
12105         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
12106         jump tables, move the call to delete_dead_jumptables from here...
12107         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
12108         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
12109         don't allow merging of blocks that try_redirect_by_replacing_jump
12110         also does not handle when not optimizing.
12111
12112 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
12113             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
12114
12115         * config/i386/i386.md (x86_sahf_1): Correctly handle
12116         HAVE_AS_IX86_SAHF.
12117
12118 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
12119
12120         PR target/31167
12121         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
12122         x86_64_general_operand as operand[2] predicate.  Remove "iF"
12123         from operand constraints and use "e" constraint instead.
12124         (*subti3_1, *subti3_1 splitter): Ditto.
12125         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
12126         operand[1] predicate.
12127
12128 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
12129
12130         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
12131         arrays, multiply the access strides by the size of the sub-array.
12132         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
12133
12134 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
12135
12136         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
12137         the configured assembler supports the sahf mnemonic.
12138         * configure: Regenerate.
12139         * config.in: Regenerate.
12140
12141         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
12142         emit "sahf" or ".byte\t0x9e" as asm template.
12143
12144 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
12145
12146         PR 31018
12147         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
12148         option to replace hard coded TARGET_xxx in md file.
12149         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
12150         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
12151         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
12152         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
12153         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
12154         (X86_TUNE_NOT_VECTORMODE): Ditto.
12155         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
12156         (TUNE_AVOID_VECTOR_DECODE): Ditto.
12157         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
12158         (TUNE_SLOW_IMUL_IMM8): Ditto.
12159         (TUNE_MOVE_M1_VIA_OR): Ditto.
12160         (TUNE_NOT_UNPAIRABLE): Ditto.
12161         (TUNE_NOT_VECTORMODE): Ditto.
12162
12163         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
12164         options.
12165
12166         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
12167         tuning options instead of hard coded TARGET_xxx.
12168         (fix ssemode peephole2's): Ditto.
12169         (imul peephole2's): Ditto.
12170         (movsi_or): Ditto.
12171         (movdi_or_rex64): Ditto.
12172         (move peephole2): Ditto.
12173         (not peephole2's): Ditto.
12174
12175 2007-03-14  Dirk Mueller  <dmueller@suse.de>
12176
12177         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
12178         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
12179         * c-parser.c (c_parser_if_body): Always add an empty statement in case
12180         of empty body.
12181         * c-parser.c (c_parser_do_statement): Warn about empty body in
12182         do/while statement.
12183         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
12184         * doc/invoke.texi (-Wempty-body): Update documentation.
12185
12186 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12187
12188         PR c/21438
12189         * c-common.h (warn_for_div_by_zero): Declare.
12190         * c-common.c (warn_for_div_by_zero): Define.
12191         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
12192         warning.
12193
12194 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
12195
12196         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
12197         to PREFIX and STANDARD_PREFIX.
12198
12199 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
12200             Phil Edwards  <phil@codesourcery.com>
12201
12202         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
12203         (__gthread_once_t): Remove busy field for RTPs.
12204         (__GTHREAD_ONCE_INIT): Update accordingly.
12205
12206 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
12207
12208         * doc/invoke.texi: Document VxWorks options.
12209
12210 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
12211
12212         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
12213
12214 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
12215
12216         PR tree-optimization/30590
12217         * tree-nrv.c (tree_nrv): Check for the partial update of the
12218         return value.
12219
12220 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
12221
12222         * flags.h (flag_random_seed): Remove declaration, in favor of...
12223         * toplev.h (get_random_seed, set_random_seed): ... these.
12224         * tree.c (get_file_function_name): Use the former.
12225         * opts.c (common_handle_option): Use the latter.
12226         * toplev.c
12227
12228 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
12229
12230         PR middle-end/31127
12231         * cse.c (cse_find_path): Do not bail out if a basic block that
12232         we already visited now becomes part of a path that starts at a
12233         different basic block.  Just disallow this, to make sure we
12234         visit each basic block at most once.
12235
12236 2007-03-13  Jan Hubicka  <jh@suse.cz>
12237
12238         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
12239         attributes, when profile esitmate is present, calls with very low
12240         frequency are cold.
12241
12242 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
12243
12244         PR tree-optimization/30730
12245         PR tree-optimization/26900
12246         * tree-ssa-loop-niter.c: Include gmp.h.
12247         (bounds): New type.
12248         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
12249         split_to_var_and_offset, determine_value_range,
12250         bound_difference_of_offsetted_base, refine_bounds_using_guard,
12251         bound_difference, bounds_add, bounds_negate,
12252         number_of_iterations_ne_max, dump_affine_iv): New functions.
12253         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
12254         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
12255         difference of initial and final value of control iv to validate
12256         results.
12257         (number_of_iterations_cond): Add loop parameter.  Determine bounds
12258         on the difference of the extremes of the control iv.  Add dumps.
12259         (expand_simple_operations): Handle phi nodes.
12260         (simplify_using_initial_conditions): Do not record used conditions.
12261         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
12262         Do not set additional_info.
12263         (implies_nonnegative_p, implies_ge_p): Removed.
12264         (derive_constant_upper_bound): Do not use parameter `additional'.
12265         (record_estimate): Parameter `additional' removed.  Parameter
12266         `i_bound' added.  Do not call derive_constant_upper_bound.
12267         (record_nonwrapping_iv): Use derive_constant_upper_bound to
12268         bound the number of iterations estimate.
12269         (estimate_numbers_of_iterations_loop): Pass the estimate from
12270         the number of iterations analysis to record_estimate.
12271         * tree.h (multiple_of_p): Declare.
12272         * tree-scalar-evolution.c (expression_expensive_p): Removed.
12273         (scev_const_prop): Do not check expression_expensive_p.
12274         * fold-const.c (multiple_of_p): Exported.
12275         * double-int.c (double_int_mask): Exported.
12276         * double-int.h (double_int_mask): Declare.
12277         * tree-flow.h (struct tree_niter_desc): Removed additional_info
12278         field.  Added max field.
12279
12280 2007-03-13  David Taylor  <taylor@candd.org>
12281
12282         PR driver/12448:
12283         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
12284         default -MQ.
12285
12286 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12287
12288         PR target/31123
12289         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
12290         two unamed patterns.
12291
12292 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
12293
12294         * config/i386/i386.opt (mcx16, msahf): New options.
12295         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
12296         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
12297
12298         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
12299         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
12300         Output -mcx16 and -msahf options when corresponding bit is set.
12301
12302         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
12303         and -msahf options.
12304
12305 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
12306
12307         * configure.ac: Test for assembler tolerance to # 0 "".
12308         * configure, config.in: Rebuilt.
12309         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
12310
12311 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
12312
12313         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
12314
12315         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
12316         (handle_syscall): Handle direct system calls.
12317         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
12318
12319 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
12320
12321         * doc/invoke.texi: Fix cpp.info cross-reference.
12322         * doc/passes.texi: Fix gcc.info cross-reference.
12323
12324 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
12325
12326         PR tree-optimization/30835
12327         * lambda-code.c (can_convert_to_perfect_nest): Check whether
12328         bb_for_stmt is not NULL before accessing it.
12329
12330 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
12331
12332         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
12333         some multilibs.
12334
12335 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
12336
12337         PR 30635
12338         * doc/install.texi: Document --enable-stage1-languages
12339
12340 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
12341
12342         * tree-pass.h (pass_into_cfg_layout_mode,
12343         pass_outof_cfg_layout_mode): Declare.
12344         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
12345         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
12346         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
12347         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
12348
12349 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
12350
12351         * c-decl.c (warn_variable_length_array): New function.
12352         Refactored from grokdeclarator to handle warn_vla
12353         and handle unnamed array case.
12354         (grokdeclarator): Refactored VLA warning case.
12355         * c.opt (Wvla): New flag.
12356         * doc/invoke.texi (Wvla): New warning.
12357
12358 2007-03-12  Richard Henderson  <rth@redhat.com>
12359
12360         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
12361         (TARGET_SECTION_TYPE_FLAGS): New.
12362
12363 2007-03-12  Richard Henderson  <rth@redhat.com>
12364
12365         * config/darwin.c (machopic_reloc_rw_mask): New.
12366         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
12367         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
12368
12369 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
12370
12371         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
12372         * cppdefault.h (cpp_PREFIX): Document.
12373         (cpp_PREFIX_len): Likewise.
12374         (cpp_EXEC_PREFIX): New variable.
12375         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
12376         * c-incpath.c (add_standard_paths): Correct logic for relocating
12377         paths within prefix.
12378
12379 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
12380
12381         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
12382         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
12383         mode macro.
12384         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
12385         fix_truncdfdi_sse using SSEMODEF mode macro.
12386         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
12387         fix_truncdfsi_sse using SSEMODEF mode macro.
12388         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
12389         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
12390
12391 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
12392
12393         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
12394         elfos.h to tm_file.
12395
12396 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
12397
12398         * tree.h : Add multiple_of_p declaration.
12399         * fold-const.c (multiple_of_p): Make multiple_of_p public.
12400         * ipa-type-escape.c (results_of_malloc): Redundant.
12401         (visited_stmts): New. Visited stmt for walk_use_def_chains.
12402         (cast_type): Extended with new members.
12403         (check_cast): Returns cast_type.
12404         (cast): New structure for data of walk_use_def_chains.
12405         (is_malloc_result, is_cast_from_non_pointer_1,
12406         is_cast_from_non_pointer,
12407         is_array_access_through_pointer_and_index): New functions.
12408         (look_for_casts): Returns cast types.
12409         (check_call): Returns void.
12410         (okay_pointer_operation): Use support of pointer plus index,
12411         pointer plus constant and allow all multiplications.
12412
12413 2007-03-11  Richard Guenther  <rguenther@suse.de>
12414
12415         PR tree-optimization/31115
12416         * tree-vrp.c (extract_range_from_binary_expr): Make sure
12417         the shift count is positive and non-anti-range for RSHIFT_EXPR.
12418         A shift count of zero is not special as with *_DIV_EXPR.
12419         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
12420         direction.
12421
12422 2007-03-11  Ian Lance Taylor  <iant@google.com>
12423
12424         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
12425         the *_DIV_EXPR codes correctly with overflow infinities.
12426
12427 2007-03-11  Ira Rosen  <irar@il.ibm.com>
12428
12429         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
12430         indicate success/failure of the analysis. Add negation to subtrahend
12431         in case of subtraction. Fail if both operands contain constants.
12432         (create_data_ref): Fail if analyze_offset fails.
12433
12434 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
12435
12436         * config/i386/i386.md (frndintxf2): Rename to ...
12437         (rintxf2): ... this. Remove expander having same name.
12438         (rintsf2, rintdf2): Implement using SSEMODEF macro.
12439         (roundsf2, rounddf2): Ditto.
12440         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
12441         (lround<mode>di2, lround<mode>si2): Ditto.
12442
12443 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
12444
12445         * lower-subreg.c: Include except.h.
12446         (decompose_multiword_subregs): Verify that the only control flow
12447         insns we can split are loads to multi-words pseudos.
12448         Handle breaking such blocks after splitting, instead of calling
12449         find_many_sub_basic_blocks.
12450
12451         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
12452         on the new basic block.  Add a lengthy comment explaining why we
12453         thought this was necessary.
12454         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
12455
12456 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
12457
12458         PR c++/30924
12459         * tree.c (walk_type_fields): Recurse into the element type of
12460         ARRAY_TYPEs if there is a pointer set.
12461
12462 2007-03-10  Dirk Mueller  <dmueller@suse.de>
12463
12464         * c-common.c (warn_logical_operator): Fix condition.
12465
12466 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
12467
12468         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
12469         quotation mark.
12470         * config/darwin.c (machopic_select_section): Remove superfluous
12471         argument in call to categorize_decl_for_section.  Remove unused
12472         variable shlib.
12473
12474 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
12475
12476         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
12477         defined.
12478         * configure: Regenerate.
12479
12480 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
12481
12482         PR target/31101
12483         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
12484         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
12485         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
12486         Add LABEL_NUSES to emitted label.
12487         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
12488         branch probability value to emitted jump insn.
12489         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
12490         Do not check life information and do not re-arrange input operands
12491         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
12492
12493 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
12494
12495         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
12496         the change of decode_asm_operands.
12497
12498 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
12499
12500         * mode-switching.c (create_pre_exit): Skip blockage insn.
12501
12502 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
12503
12504         * tree-pass.h (TODO_update_smt_usage): Remove.
12505         Update all users.
12506         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
12507         argument SOME.
12508         Update all users.
12509
12510 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12511
12512         * pa.c (attr_length_call): Revise condition for long
12513         pc-relative branch.
12514         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
12515         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
12516         sequence on SOM target.
12517
12518 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
12519
12520         * gcc.c: Document %{, in big comment at top.
12521         (input_suffix_matches): Remove special handling for .s and
12522         .S.
12523         (input_spec_matches): New.
12524         (handle_braces): Handle %{,.
12525         (validate_switches): ',' indicates a value which is not a switch.
12526         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
12527         to detect assembler input.
12528         * config/i386/sol2.h (CPP_SPEC): Likewise.
12529         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
12530         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
12531         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
12532         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
12533         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
12534         -m64 causes deployment target to default to 10.5.
12535         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
12536
12537 2007-03-09  Richard Henderson  <rth@redhat.com>
12538
12539         PR target/26090
12540         * target.h (targetm.asm.out.reloc_rw_mask): New.
12541         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
12542         (TARGET_ASM_OUT): Use it.
12543         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
12544         * varasm.c (categorize_decl_for_section): Remove shlib argument;
12545         use the new reloc_rw_mask target hook instead.
12546         (default_section_type_flags_1): Merge into...
12547         (default_section_type_flags): ... here.
12548         (decl_readonly_section_1): Merge into...
12549         (decl_readonly_section): ... here.
12550         (default_elf_select_section_1): Merge into...
12551         (default_elf_select_section): ... here.
12552         (default_unique_section_1): Merge into...
12553         (default_unique_section): ... here.
12554         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
12555         (default_select_rtx_section): Use it.
12556         (default_elf_select_rtx_section): Likewise.
12557         * output.h: Update to match.
12558         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
12559         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
12560         (TARGET_ASM_RELOC_RW_MASK): New.
12561         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
12562         to categorize_decl_for_section.
12563         (x86_64_elf_unique_section): Likewise.
12564         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
12565         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
12566         (TARGET_ASM_RELOC_RW_MASK): New.
12567         * config/ia64/ia64.c (ia64_rwreloc_select_section,
12568         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
12569         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
12570         (TARGET_RWRELOC): Remove.
12571         (ia64_section_type_flags): Adjust call to default_section_type_flags.
12572         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
12573         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
12574         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
12575         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
12576         (rs6000_xcoff_select_section): Use decl_readonly_section.
12577         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
12578         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
12579         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
12580         (TARGET_SECTION_TYPE_FLAGS): Remove.
12581         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
12582
12583 2007-03-09  Roger Sayle  <roger@eyesopen.com>
12584
12585         * fold-const.c (fold_comparison): Remove compile-time evaluation of
12586         complex constant equality/inequality comparisons for here.
12587         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
12588         known at compile-time or can be simplified to a scalar comparison.
12589         (fold_relational_const): Move compile-time evaluation of complex
12590         constant equality/inequality comparisons to here.
12591
12592 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
12593
12594         PR rtl-optimization/30643
12595         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
12596         dest_addr_elt.
12597         (fold_rtx): Recurse, like before 2006-11-03.
12598
12599 2007-03-09  DJ Delorie  <dj@redhat.com>
12600
12601         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
12602         m32c-pragma.o.
12603
12604 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
12605
12606         PR tree-optimization/30375
12607         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
12608         LHS of statements is not the same.
12609         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
12610
12611 2007-03-09  Chao-ying Fu  <fu@mips.com>
12612
12613         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
12614         REV 2.
12615         * doc/invoke.texi (-mdspr2): Document new option.
12616         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
12617         New unspec for DSP REV 2.
12618         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
12619         these instructions are extended in DSP REV 2.
12620         (mips-dspr2.md): Include.
12621         * config/mips/mips.opt (mdspr2): New option.
12622         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
12623         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
12624         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
12625         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
12626         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
12627         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
12628         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
12629         and 2 builtins.
12630         (bdesc_map): Add one field of unsupported_target_flags.
12631         (bdesc_arrays):  Update entries to have extra fields.  Add
12632         dsp_32only_bdesc.
12633         (mips_init_builtins): Initialize new function types.
12634         Check unsupported_target_fileds to filter out builtins.
12635         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
12636         TARGET_DSPR2.
12637         (ASM_SPEC): Pass mdspr2 to the assembler.
12638         * config/mips/mips-dspr2.md: New file.
12639
12640 2007-03-09  Sa Liu  <saliu@de.ibm.com>
12641
12642         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
12643
12644 2007-03-09  Ian Lance Taylor  <iant@google.com>
12645
12646         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
12647         argument) like -Wstrict-overflow=2.
12648         * doc/invoke.texi (Warning Options): Update documentation.
12649
12650 2007-03-09  Dirk Mueller  <dmueller@suse.de>
12651
12652         PR c++/17946
12653         * doc/invoke.texi (-Wlogical-op): Document.
12654         * common.opt (-Wlogical-op): New.
12655         * c-common.h (warn_logical_operator): Declare.
12656         * c-common.c (warn_logical_operator): Define.
12657         * c-typeck.c (parser_build_binary_op): Call
12658         warn_logical_operator.
12659
12660 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
12661
12662         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
12663         * final.c (final_scan_insn): Test for non-"" file name.
12664
12665 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
12666
12667         * doc/loop.texi: Document the Omega linear constraints solver.
12668         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
12669         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
12670         omega-hash-table-size, omega-max-keys, and
12671         omega-eliminate-redundant-constraints.
12672         * tree-pass.h (pass_check_data_deps): Declared.
12673         * omega.c: New.
12674         * omega.h: New.
12675         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
12676         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
12677         pass_check_data_deps): New.
12678         * tree-data-ref.c (init_data_ref): Remove declaration.
12679         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
12680         (analyze_array): Renamed init_array_ref, move up initializations.
12681         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
12682         Removed arguments that are set to NULL.
12683         (analyze_indirect_ref): Correct indentation, correct call to
12684         init_pointer_ref.
12685         (object_analysis): Call init_array_ref instead of analyze_array.
12686         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
12687         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
12688         of DR_ACCESS_FNS_ADDR.
12689         (init_omega_eq_with_af, omega_extract_distance_vectors,
12690         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
12691         ddr_consistent_p): New.
12692         (compute_affine_dependence): Check consistency of ddrs when
12693         flag_check_data_deps is passed.
12694         (analyze_all_data_dependences): Uncomment.
12695         (tree_check_data_deps): New.
12696         * tree-data-ref.h: Include omega.h.
12697         (DR_ACCESS_FNS_ADDR): Removed.
12698         (data_dependence_relation): Add inner_loop.
12699         (DDR_INNER_LOOP): New.
12700         * common.opt (fcheck-data-deps): New.
12701         * tree-flow.h (tree_check_data_deps): Declare.
12702         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
12703         (OBJS-common): Depend on omega.o.
12704         (omega.o): Define.
12705         * passes.c (pass_check_data_deps): Scheduled.
12706         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
12707         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
12708         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
12709         PARAM_VECT_MAX_VERSION_CHECKS,
12710         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
12711
12712 2007-03-09  Richard Guenther  <rguenther@suse.de>
12713
12714         PR tree-optimization/30904
12715         PR middle-end/31058
12716         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
12717         the same way as *_DIV_EXPR.
12718
12719 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
12720
12721         * recog.c (decode_asm_operands): No mixed declarations and code.
12722
12723 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
12724
12725         * rtl.def (ASM_INPUT): Add location.
12726         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
12727         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
12728         (decode_asm_operands): Add loc operand.
12729         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
12730         * stmt.c (expand_asm): Rename to...
12731         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
12732         gen_rtx_ASM_INPUT_loc.
12733         (expand_asm_expr): Adjust.
12734         * recog.c (decode_asm_operands): Add loc operand.
12735         (check_asm_operands, extract_insn): Adjust.
12736         * reload1.c (maybe_fix_stack_asms): Likewise.
12737         * final.c (asm_insn_count): Likewise.
12738         (final_scan_insn): Output # line before and after asm.
12739
12740 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
12741
12742         * tree-ssa-structalias.c (variable_info): Remove
12743         finished_solution.
12744         (new_var_info): Ditto.
12745         (shared_bitmap_info_t): New structure.
12746         (shared_bitmap_table): New variable.
12747         (shared_bitmap_hash): New function.
12748         (shared_bitmap_eq): Ditto
12749         (shared_bitmap_lookup): Ditto.
12750         (shared_bitmap_add): Ditto.
12751         (merge_smts_into): Change to take bitmap directly.
12752         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
12753         (init_alias_vars): Init shared bitmap hashtable.
12754         (delete_points_to_sets): Delete shared bitmap hashtable.
12755         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
12756         is_aliased removal as a change that was still necessary was
12757         deleted.
12758
12759 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
12760
12761         * config/i386/i386.h (override_options): Conditionally disable
12762         x86_sahf for 64bit targets only.
12763
12764 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12765
12766         PR C/31072
12767         * c-decl.c (merge_decls): Don't call make_var_volatile.
12768         * varasm.c (make_var_volatile): Remove.
12769         * output.h (make_var_volatile): Remove.
12770
12771 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
12772
12773         PR tree-optimization/31085
12774         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
12775
12776 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12777
12778         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
12779         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
12780         ATTR_CONST_NOTHROW_LIST.
12781
12782         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
12783         FIX_TRUNC_EXPR.
12784
12785 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
12786
12787         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
12788
12789 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
12790
12791         PR 31013
12792         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
12793         is declared.
12794         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
12795         passed, use shared libgcc.
12796
12797 2007-03-08  Roger Sayle  <roger@eyesopen.com>
12798
12799         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
12800         instead of calling build2 with a GIMPLE_MODIFY_STMT.
12801         (honor_protect_cleanup_actions, lower_try_finally_switch):
12802         Likewise.
12803         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
12804         ifc_temp_var): Likewise.
12805         * tree-inline.c (setup_one_parameter): Likewise.
12806         * tree-mudflap.c (mf_decl_cache_locals,
12807         mf_build_check_statement_for): Likewise.
12808         * tree-nested.c (init_tmp_var, save_tmp_var,
12809         finalize_nesting_tree_1): Likewise.
12810         * tree-outof-ssa.c (insert_copy_on_edge,
12811         insert_backedge_copies): Likewise.
12812         * tree-profile.c (tree_gen_edge_profiler,
12813         tree_gen_ic_profiler): Likewise.
12814         * tree-scalar-evolution.c (scev_const_prop): Likewise.
12815         * tree-sra.c (sra_build_assignment): Likewise.
12816         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
12817         * tree-ssa-math-opts.c (insert_reciprocals,
12818         execute_cse_sincos_1): Likewise.
12819         * tree-tailcall.c (adjust_accumulator_values,
12820         adjust_return_value): Likewise.
12821         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
12822         * tree-vect-transform.c (vect_create_data_ref_ptr,
12823         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
12824         vect_create_epilog_for_reduction, vectorizable_reduction,
12825         vectorizable_call, vectorizable_conversion,
12826         vectorizable_assignment, vectorizable_operation,
12827         vectorizable_type_demotion, vect_gen_widened_results_half,
12828         vect_permute_store_chain, vectorizable_store,
12829         vect_setup_realignment, vect_permute_load_chain,
12830         vectorizable_load, vectorizable_condition,
12831         vect_create_cond_for_align_checks): Likewise.
12832         * tree-vrp.c (build_assert_expr_for): Likewise.
12833
12834 2007-03-08  Ian Lance Taylor  <iant@google.com>
12835
12836         * tree-vrp.c: Include "intl.h".
12837         (usable_range_p): New static function.
12838         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
12839         overflowed values, juts set *strict_overflow_p.
12840         (compare_values): Only return -2 if one of the operands is not a
12841         constant.
12842         (compare_ranges): Call usable_range_p.
12843         (compare_range_with_value): Likewise.
12844         (vrp_evaluate_conditional_warnv): Rename from
12845         vrp_evaluate_conditional.  Make static.  Change all callers.
12846         (vrp_evaluate_conditional): New function.
12847         (simplify_div_or_mod_using_ranges): Issue warning about reliance
12848         on signed overflow.
12849         (simplify_abs_using_ranges): Likewise.
12850         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
12851         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
12852         within_stmt parameter.
12853         * tree-ssa-propagate.c (fold_predicate_in): Update call to
12854         vrp_evaluate_conditional.
12855         * tree-ssa-threadedge.c
12856         (record_temporary_equivalences_from_stmts_at_dest): Change
12857         simplify parameter to take a second tree parameter.
12858         (simplify_control_stmt_condition): Likewise.
12859         (thread_across_edge): Likewise.
12860         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
12861         (thread_across_edge): Likewise.
12862         * Makefile.in (tree-vrp.o): Depend upon intl.h.
12863
12864 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
12865
12866         * config/i386/i386.h (TARGET_SAHF): New define.
12867         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
12868         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
12869         (x86_sahf): New global variable.
12870         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
12871         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
12872         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
12873         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
12874         for 64-bit.
12875         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
12876         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
12877         when expanding fcomi/sahf based tests.
12878         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
12879         expanding sahf based alternative. Emit sahf based sequence when
12880         optimizing for code size.
12881         * config/i386/i386.md (x86_sahf_1): Do not disable for
12882         TARGET_64BIT, enable for TARGET_SAHF.
12883
12884 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
12885
12886         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
12887         spurious whitespace from error message.
12888
12889 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
12890
12891         PR c++/30852
12892         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
12893
12894 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
12895
12896         * c-decl.c (grokdeclarator): Disable warnings for anonymous
12897         bitfields.
12898         * tree-sra.c (instantiate_element): Propagate disabled warnings
12899         from the element itself to the created variable.
12900
12901 2007-03-07  Richard Henderson  <rth@redhat.com>
12902
12903         PR target/30848
12904         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
12905         silently fix up the stack in the case of a missing register.
12906
12907 2007-03-07  Paul Brook  <paul@codesourcery.com>
12908
12909         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
12910
12911 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
12912
12913         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
12914         New.
12915         (phase1_vrs): Use them.
12916         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
12917         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
12918         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
12919         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
12920         __gnu_Unwind_Restore_WMMXC if required.
12921         (_Unwind_VRS_Pop): Implement iWMMXt support.
12922         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
12923         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
12924         gnu_Unwind_Save_WMMXC): Define.
12925
12926 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
12927
12928         * config/vxworks.h (vxworks_override_options): Declare.
12929         (VXWORKS_OVERRIDE_OPTIONS): Use it.
12930         * config/vxworks.c: Include target.h and toplev.h.
12931         (vxworks_override_options): New function.
12932         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
12933
12934 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
12935
12936         * config/s390/s390.c (override_options): Don't emit an error when
12937         -mstack-size is used without providing -mstack-guard.
12938         (s390_emit_prologue): Choose stack_guard value automatically if not
12939         provided via command line.
12940         * doc/invoke.texi: Adjust description of -mstack-guard and
12941         -mstack-size.
12942
12943 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
12944
12945         * config/i386/i386.c (output_set_got): Add a GOT initialization
12946         sequence for VxWorks PIC.
12947         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
12948         around labels as well as symbols.  Use gotoff_operand instead
12949         of local_symbolic_operand.
12950         (legitimize_pic_address): Use gotoff_operand instead of
12951         local_symbolic_operand.  Use @GOT accesses for labels as
12952         well as symbols.
12953         (ix86_output_addr_diff_elt): Use PC-relative rather than
12954         GP-relative offsets for VxWorks PIC.
12955         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
12956         no_new_pseudos.  Check whether the returned register is op0.
12957         * config/i386/i386.md (tablejump): Use PC-relative rather than
12958         GP-relative offsets for VxWorks PIC.
12959         * config/i386/predicates.md (gotoff_operand): New predicate.
12960
12961 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
12962
12963         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
12964         before defining.
12965         * config/vxworks-dummy.h: New file.
12966         * config/i386/i386.h: Include it.
12967
12968 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
12969
12970         * dwarf2out.c (is_inlined_entry_point): New
12971         (add_high_low_attributes): Emit DW_AT_entry_pc along with
12972         DW_AT_ranges if the first subblock is the entry point.
12973
12974 2007-03-06  David Daney  <ddaney@avtrex.com>
12975
12976         * doc/install.texi (mips-*-*): Change recommended binutils
12977         version.
12978
12979 2007-03-06  Anatoly Sokolov <aesok@post.ru>
12980
12981         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
12982         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
12983         devices.
12984         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
12985         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
12986
12987 2007-03-06  Jan Hubicka  <jh@suse.cz>
12988
12989         * errors.h (warning, error, fatal, internal_error): Mark as cold.
12990         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
12991         functions are hot.
12992         (probably_cold_bb_p): Cold functions are cold.
12993         (probably_never_executed_bb_p): Cold functions are cold.
12994         (tree_bb_level_predictions): Predict calls to cold functions as not
12995         taken.
12996         (compute_function_frequency): Check hot/cold attributes.
12997         * function.h (function_frequency): Update comments.
12998         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
12999         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
13000         (c_common_att): Add cold and hot.
13001
13002         * doc/extend.texi (hot,cold attributes): Document.
13003
13004 2007-03-06  Andrew Haley  <aph@redhat.com>
13005
13006         * function.c (expand_function_end): Move blockage to just after we
13007         emit the label for the naked return from the function.
13008
13009 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
13010
13011         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
13012         before redefining.
13013
13014 2007-03-06  Jan Hubicka  <jh@suse.cz>
13015
13016         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
13017         loaded for constant large models.  Non-large 64bit PIC can do.
13018         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
13019         * cmodel.h: Add LARGE PIC.
13020         * i386.md (UNSPEC_PLTOFF): New.
13021         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
13022         unspecs as needed.
13023         (*call_1_rex64): Disable for large models.
13024         (*call_1_rex64_large): New.
13025         (*call_value_1_rex64): Disable for large models.
13026         (*call_value_1_rex64_large): New.
13027         (set_rip_rex4): New.
13028         (set_got_offset_rex64): New.
13029         * predicates.md (constant_call_address_operand): For large model
13030         constant calls are not possible.
13031         * i386-protos.h (construct_plt_address): Declare.
13032         * i386.c (override_options): Accept large models.
13033         (ix86_expand_prologue): Expand large PIC GOT pointer load.
13034         (legitimate_constant_p): Add new UNSPECs.
13035         (legitimate_pic_operand_p): Likewise.
13036         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
13037         (legitimize_pic_address): Do easy RIP relative way for TLS only for
13038         non-large model.
13039         (output_pic_addr_const): Add PLTOFF.
13040         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
13041         (ix86_expand_move): Legitimize pic address when in PIC mode.
13042         (construct_plt_address): New function.
13043         (ix86_expand_call): Offload the address to register and use GOT
13044         pointer for large model.
13045         * invoke.texi (mcmodel=large): Update documentation.
13046
13047 2007-03-06  Richard Henderson  <rth@redhat.com>
13048
13049         * config/i386/i386.c (x86_use_leave, x86_push_memory,
13050         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
13051         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
13052         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
13053         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
13054         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
13055         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
13056         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
13057         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
13058         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
13059         x86_partial_reg_dependency, x86_memory_mismatch_stall,
13060         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
13061         x86_sse_partial_reg_dependency, x86_sse_split_regs,
13062         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
13063         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
13064         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
13065         x86_schedule, x86_use_bt, x86_pad_returns,
13066         x86_use_xchgb): Merge into ...
13067         (ix86_tune_features): ... here.  New array.
13068         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
13069         x86_bswap): Merge into ...
13070         (ix86_arch_features): ... here.  New array.
13071         (x86_3dnow_a): Remove.
13072         (x86_accumulate_outgoing_args): Make static.
13073         (x86_arch_always_fancy_math_387): Make static.
13074         (ix86_tune_mask, ix86_arch_mask): Move ...
13075         (override_options): ... to local variables here.  Apply the
13076         appropriate mask to each element of ix86_arch_features and
13077         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
13078         as were done in the old macros.
13079         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
13080         * config/i386/i386.h (x86_use_leave, x86_push_memory,
13081         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
13082         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
13083         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
13084         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
13085         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
13086         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
13087         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
13088         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
13089         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
13090         x86_partial_reg_dependency, x86_memory_mismatch_stall,
13091         x86_accumulate_outgoing_args, x86_prologue_using_move,
13092         x86_epilogue_using_move, x86_decompose_lea,
13093         x86_arch_always_fancy_math_387, x86_shift1,
13094         x86_sse_partial_reg_dependency, x86_sse_split_regs,
13095         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
13096         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
13097         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
13098         x86_use_incdec, x86_pad_returns, x86_bswap,
13099         x86_partial_flag_reg_stall): Remove.
13100         (enum ix86_tune_indices): New.
13101         (ix86_tune_features): New.
13102         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
13103         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
13104         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
13105         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
13106         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
13107         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
13108         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
13109         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
13110         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
13111         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
13112         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
13113         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
13114         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
13115         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
13116         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
13117         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
13118         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
13119         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
13120         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
13121         TARGET_EXT_80387_CONSTANTS): Use it.
13122         (enum ix86_arch_indices): New.
13123         (ix86_arch_features): New.
13124         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
13125         TARGET_BSWAP): Use it.
13126         (ix86_tune_mask, ix86_arch_mask): Remove.
13127
13128 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
13129
13130         PR bootstrap/31020
13131         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
13132         Define using $${sysroot_headers_suffix}.
13133         * configure: Regenerate.
13134         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
13135         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
13136         defined.
13137         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
13138         * gcc.c (print_sysroot_headers_suffix): New.
13139         (option_map): Include --print-sysroot-headers-suffix.
13140         (display_help): Mention -print-sysroot-headers-suffix.
13141         (process_command): Handle -print-sysroot-headers-suffix.
13142         (do_spec_1): Append multilib directory to include-fixed path if
13143         sysroot suffixes in use.
13144         (main): Handle -print-sysroot-headers-suffix.
13145         * Makefile.in (start.encap): Don't depend on xlimits.h
13146         (xlimits.h): Remove.
13147         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
13148         limits.h for each multilib in fixinc_list.
13149         (fixinc_list, s-fixinc_list): New.
13150         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
13151         generate them for each multilib in fixinc_list.
13152         (stmp-fixproto): Use include-fixed.  Run fixproto for each
13153         multilib in fixinc_list.
13154         (mostlyclean): Don't remove xlimits.h.
13155         (clean): Remove include-fixed.
13156         (real-install-headers-tar, real-install-headers-cpio,
13157         real-install-headers-cp): Don't copy include, only include-fixed.
13158         (install-mkheaders): Depend on fixinc_list.  Don't depend on
13159         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
13160         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
13161         SYSTEM_HEADER_DIR setting in mkheaders.conf.
13162
13163 2007-03-06  Jan Hubicka  <jh@suse.cz>
13164
13165         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
13166         NANs easilly.
13167
13168 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
13169
13170         * configure.ac: Allow tm_file to contain build-directory files.
13171         * configure: Regenerate.
13172         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
13173         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
13174         * config/m68k/print-sysroot-suffix.sh: New file.
13175
13176 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
13177
13178         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
13179         of pic_offset_table_rtx if reload_completed.
13180         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
13181         PIC_OFFSET_TABLE_REGNUM.
13182         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
13183         return true.
13184         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
13185         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
13186
13187 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
13188
13189         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
13190         functions that call eh_return.
13191
13192 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
13193
13194         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
13195         functions that need a constant pool.
13196
13197 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
13198
13199         PR target/28181
13200         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
13201         (m68k_preferred_reload_class): Likewise.
13202         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
13203         (SECONDARY_RELOAD_CLASS): Define.
13204         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
13205         (LIMIT_RELOAD_CLASS): Delete.
13206         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
13207         registers from storing bytes.
13208         (m68k_secondary_reload_class): New function.
13209         (m68k_preferred_reload_class): Likewise.
13210
13211 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
13212
13213         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
13214         leaf functions.
13215         (m68k_expand_prologue): Likewise.
13216
13217 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
13218
13219         * config/m68k/m68k-protos.h (output_sibcall): Declare.
13220         (mips_expand_epilogue): Add a bool parameter.
13221         (m68k_legitimize_sibcall_address): Declare.
13222         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
13223         (m68k_expand_epilogue): Add a parameter to select between sibling
13224         and normal epilogues.  Only generate a return for the latter.
13225         (m68k_ok_for_sibcall_p): New function.
13226         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
13227         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
13228         (sibcall_value, *sibcall_value): Likewise.
13229         (*call, *call_value): Require !SIBLING_CALL_P.
13230         (epilogue): Update call to m68k_expand_epilogue.
13231         (sibcall_epilogue): New pattern.
13232         * config/m68k/predicates.md (const_call_operand): Say that this
13233         predicate applies to sibling calls too.
13234         (sibcall_operand): New predicate.
13235
13236 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
13237
13238         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
13239         alternatives as movsi_cf.
13240         (movsf_cf_hard): Add commentary.
13241
13242 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
13243             Richard Sandiford  <richard@codesourcery.com>
13244
13245         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
13246         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
13247         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
13248         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
13249         as being live on exit from an interrupt function.
13250         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
13251         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
13252         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
13253         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
13254         (m68k_interrupt_function_p): Globalize.
13255         (m68k_compute_frame_layout): Remove reverse mask code.
13256         (m68k_emit_movem, m68k_set_frame_related): New functions.
13257         (m68k_output_function_prologue): Delete in favor of...
13258         (m68k_expand_prologue): ...this new function.
13259         (m68k_output_function_epilogue): Delete in favor of...
13260         (m68k_expand_epilogue): ...this new function.
13261         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
13262         functions.
13263         (print_operand): Handle %?.
13264         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
13265         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
13266         (prologue, epilogue): New patterns.
13267         (return): Turn into a define_expand.
13268         (*return): New pattern, derived from old "return" pattern.  Use rte
13269         rather than rts for interrupt functions.  Only use rtd if the pop
13270         count is nonzero.
13271         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
13272         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
13273         (link, *link, unlink, *unlink, load_got): Likewise.
13274
13275 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
13276
13277         PR target/23482
13278         PR target/17114
13279         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
13280         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
13281         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
13282         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
13283         and m68k_matches_u_p.
13284         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
13285         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
13286         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
13287         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
13288         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
13289         (REG_STRICT_P): New macro.
13290         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
13291         PCREL_GENERAL_OPERAND_OK.
13292         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
13293         m68k_legitimate_base_reg_p.
13294         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
13295         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
13296         (PIC_CASE_VECTOR_ADDRESS): Update comment.
13297         * config/m68k/m68k.c (m68k_address): New structure.
13298         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
13299         (m68k_decompose_index, m68k_legitimate_constant_address_p)
13300         (m68k_jump_table_ref_p, m68k_decompose_address)
13301         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
13302         (m68k_matches_u_p): New functions.
13303         (print_operand_address): Rewrite to use m68k_decompose_index.
13304
13305 2007-03-05  David Taylor  <dtaylor@emc.com>
13306
13307         * gcc.c: Correct copyright date in --version output.
13308
13309 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13310
13311         * pa.md: In unamed move patterns, disparge copies between general
13312         and floating point registers using '?' modifier.  Don't include 'f'
13313         constraint for register preferences in DImode, SImode, HImode and
13314         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
13315         Remove constraints for copies between general and floating registers
13316         in soft-float DFmode pattern.
13317         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
13318         floating register.
13319         (movsf): Likewise.
13320
13321 2007-03-05  Mike Stump  <mrs@apple.com>
13322
13323         * c-common.c (targetcm): Add.
13324         * c-opts.c (c_common_handle_option): Handle language specific
13325         target options.
13326         * opts.c (handle_option): Verify language for target options, if
13327         any are given.
13328         * opth-gen.awk: Add CL_LANG_ALL.
13329         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
13330         (TARGETCM_INITIALIZER): Add.
13331         * target.h (struct gcc_targetcm): Add.
13332         (targetcm): Add.
13333         * targhooks.c (default_handle_c_option): Add.
13334         * targhooks.h (default_handle_c_option): Add.
13335         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
13336
13337         * config/darwin.opt (iframework): Add.
13338         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
13339         * config/darwin-c.c (handle_c_option): Add.
13340         (TARGET_HANDLE_C_OPTION): Add.
13341         (targetcm): Add.
13342         * doc/invoke.texi (Darwin Options): Add -iframework.
13343
13344 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13345
13346         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
13347         conversion.
13348
13349 2007-03-05  Ian Lance Taylor  <iant@google.com>
13350
13351         * c.opt (fgnu89-inline): New option.
13352         * c-opts.c (c_common_post_options): Set default value for
13353         flag_gnu89_inline.
13354         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
13355         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
13356         inline functions.
13357         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
13358         (grokdeclarator, start_function): Likewise.
13359         * c-cppbuiltin.c (c_cpp_builtins): Define either
13360         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
13361         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
13362         (C Dialect Options): Document -fgnu89-inline.
13363         * doc/extend.texi (Function Attributes): Explain what the
13364         gnu_inline attribute does.
13365         * doc/cpp.texi (Common Predefined Macros): Document
13366         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
13367
13368 2007-03-05  Ian Lance Taylor  <iant@google.com>
13369
13370         PR tree-optimization/31034
13371         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
13372         half-range if the other side is an overflow infinity.
13373
13374 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
13375
13376         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
13377         (bfin*-linux-uclibc*): New configuration.
13378         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
13379         defining.
13380         * config/bfin/linux.h: New file.
13381         * config/bfin/libgcc-bfin.ver: New file.
13382         * config/bfin/t-bfin-uclinux: New file.
13383         * config/bfin/t-bfin-linux: New file.
13384         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
13385         (TARGET_OS_CPP_BUILTINS): New macro.
13386
13387 2007-03-05  Richard Guenther  <rguenther@suse.de>
13388
13389         * fold-const.c (fold_binary): Remove duplicate folding
13390         of comparison of non-null ADDR_EXPR against null.
13391
13392 2007-03-05  Richard Guenther  <rguenther@suse.de>
13393             Dorit Nuzman  <dorit@il.ibm.com>
13394
13395         PR tree-optimization/26420
13396         * tree-vectorizer.c (vectorize_loops): Bail out early if there
13397         are no loops in the function.  Only print the number of
13398         vectorized loops if it is greater than zero or we are supposed
13399         to print information about unvectorized loops.
13400
13401 2007-03-05  Revital Eres  <eres@il.ibm.com>
13402
13403         * gcc.dg/var-expand1.c: New test.
13404         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
13405         when an accumulator is expanded.
13406
13407 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13408
13409         PR other/30465
13410         * c-common.c (convert_and_check): Don't give warnings for
13411         conversion if 'expr' already overflowed.
13412
13413 2007-03-04  Roger Sayle  <roger@eyesopen.com>
13414
13415         PR middle-end/30744
13416         * fold-const.c (fold_comparison): Enforce type consistency when
13417         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
13418
13419 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
13420
13421         * tree-ssa-address.c (create_mem_ref): Do not put an expression
13422         containing a cast to the base of TARGET_MEM_REF.
13423
13424 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
13425
13426         * tree.c (tree_contains_struct_check_failed): Remove spurious
13427         whitespace from error message.
13428
13429 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
13430
13431         PR target/30406
13432         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
13433         instead of precision.
13434
13435 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
13436             Nathan Sidwell  <nathan@codesourcery.com>
13437
13438         * emit-rtl.c (find_auto_inc): New.
13439         (try_split): recreate REG_INC notes,
13440         Use regular for loops rather than whiles.
13441
13442 2007-03-03  Andreas Schwab  <schwab@suse.de>
13443
13444         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
13445         * configure: Regenerate.
13446
13447 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13448
13449         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
13450         flag_rounding_math, not flag_unsafe_math_optimizations.
13451
13452         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
13453         fold_build2.
13454         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
13455         alpha_fold_vector_minmax): Likewise.
13456         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
13457         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
13458
13459 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
13460
13461         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
13462         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
13463         if the lhs has side-effects.
13464         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
13465
13466 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
13467
13468         * config/i386/i386.h (TUNEMASK): Remove define.
13469         (ARCHMASK): Remove define.
13470         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
13471          Use ix86_arch_mask variable instead of ARCHMASK.
13472         * config/i386/i386.c (override_options): Ditto.
13473         (standard_80387_constant_p): Ditto.
13474
13475 2007-03-02  Ian Lance Taylor  <iant@google.com>
13476
13477         Used signed infinities in VRP.
13478         * tree-vrp.c (uses_overflow_infinity): New static function.
13479         (supports_overflow_infinity): New static function.
13480         (make_overflow_infinity): New static function.
13481         (negative_overflow_infinity): New static function.
13482         (positive_overflow_infinity): New static function.
13483         (is_negative_overflow_infinity): New static function.
13484         (is_positive_overflow_infinity): New static function.
13485         (is_overflow_infinity): New static function.
13486         (overflow_infinity_range_p): New static function.
13487         (compare_values_warnv): New function split out of compare_values.
13488         (compare_value): Call it.
13489         (set_value_range_to_nonnegative): Add overflow_infinity
13490         parameter.  Change caller.
13491         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
13492         Change callers.
13493         (vrp_expr_computes_nonzero): Likewise.
13494         (compare_ranges, compare_range_with_value): Likewise.
13495         (compare_name_with_value, compare_names): Likewise.
13496         (vrp_evaluate_conditional): Likewise.
13497         (set_value_range): Handle infinity
13498         (vrp_operand_equal_p, operand_less_p): Likewise.
13499         (extract_range_from_assert): Likewise.
13500         (vrp_int_const_binop): Likewise.
13501         (extract_range_from_binary_expr): Likewise.
13502         (extract_range_from_unary_expr): Likewise.
13503         (extract_range_from_comparison): Likewise.
13504         (extract_range_from_expr): Likewise.
13505         (dump_value_range): Likewise.
13506         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
13507         (test_for_singularity): Likewise.
13508         (vrp_int_const_binop): Remove inline qualifier.
13509         (adjust_range_with_scev): Add comment.
13510         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
13511
13512 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
13513
13514         * tree-ssa-structalias.c (could_have_pointers): Tidy.
13515         (get_constraint_for): Likewise.
13516         (do_structure_copy): Likewise.
13517         (find_func_aliases): Fix references to MODIFY_EXPR.
13518         (intra_create_variable_infos): Tidy.
13519         * tree-ssa-operands.c (add_virtual_operand): Add argument
13520         IS_CALL_SITE.
13521         When adding members of alias sets, if IS_CALL_SITE is true and
13522         the symbol is not call-clobbered, skip it.
13523         Adjust all callers.
13524
13525 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
13526
13527         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
13528         entry by means of emit_insn_at_entry.
13529
13530 2007-03-02  Richard Henderson  <rth@redhat.com>
13531
13532         * expr.h (promoted_input_arg): Remove decl.
13533         * function.c (promoted_input_arg): Merge into ...
13534         * combine.c (setup_incoming_promotions): ... only caller.
13535         Rearrange to avoid double loop.
13536
13537 2007-03-02  Ben Elliston  <bje@au.ibm.com>
13538             Peter Bergner  <bergner@vnet.ibm.com>
13539             Janis Johnson  <janis187@us.ibm.com>
13540
13541         * config/rs6000/dfp.md: New file.
13542         * config/rs6000/rs6000.md: Include dfp.md.
13543         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
13544         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
13545         and TDmode decimal float modes in FP registers.
13546         (num_insns_constant): Likewise.
13547         (rs6000_legitimate_offset_address_p): Likewise.
13548         (rs6000_legitimize_address): Likewise.
13549         (rs6000_legitimize_reload_address): Likewise.
13550         (rs6000_legitimate_address): Likewise.
13551         (rs6000_emit_move): Likewise.
13552         (function_arg_boundary): Likewise.
13553         (function_arg_advance): Likewise.
13554         (rs6000_darwin64_record_arg_recurse): Likewise.
13555         (function_arg): Likewise.
13556         (rs6000_gimplify_va_arg): Likewise.
13557         (rs6000_split_multireg_move): Likewise.
13558         (rs6000_output_function_epilogue): Likewise.
13559         (rs6000_output_function_epilogue): Likewise.
13560         (rs6000_register_move_cost): Likewise.
13561         (rs6000_function_value): Likewise.
13562         (rs6000_libcall_value): Likewise.
13563
13564 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
13565
13566         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
13567
13568 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
13569
13570         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
13571         Use $MULTIDIR to choose between the kernel and RTP headers,
13572         and use $WIND_BASE and $WIND_USR to locate them.
13573
13574 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
13575
13576         * config/i386/i386.c (override_options): Put initialization of
13577         ix86_tune_mask and ix86_arch_mask to the correct place.
13578
13579 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
13580             Michael Meissner  <michael.meissner@amd.com>
13581
13582         PR target/31019
13583         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
13584         (ARCHMASK): Define.
13585         (TARGET_CMOVE): Use ARCHMASK.
13586         (TARGET_CMPXCHG): Ditto.
13587         (TARGET_CMPXCHG8B): Ditto.
13588         (TARGET_XADD): Ditto.
13589         (TARGET_BSWAP): Ditto.
13590         * config/i386/i386.c (ix86_tune_mask): New global variable.
13591         (ix86_arch_mask): Ditto.
13592         (override_options): Initialize ix86_tune_mask and
13593         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
13594         target_flags.
13595
13596 2007-03-02  Ben Elliston  <bje@au.ibm.com>
13597
13598         PR 30992
13599         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
13600
13601 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
13602
13603         * target.h (init_dwarf_reg_sizes_extra): New target hook.
13604         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
13605         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
13606         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
13607         hook.
13608         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
13609         rs6000_init_dwarf_reg_sizes_extra): New.
13610         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
13611         SPE register high parts.
13612
13613 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
13614
13615         * Makefile.in: Add install-pdf target as
13616         copied from automake v1.10 rules.
13617         * configure.ac: Add install-pdf to target list.
13618         * configure: Regenerate.
13619
13620 2007-03-01  Paul Brook  <paul@codesourcery.com>
13621
13622         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
13623         modes to LDRD for DImode.
13624         (output_move_double): Fixup out of range ldrd/strd.
13625         (vfp_secondary_reload_class): Rename...
13626         (coproc_secondary_reload_class): ... to this.  Add wb argument.
13627         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
13628         coproc_secondary_reload_class for CLASS_IWMMXT.
13629         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
13630         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
13631
13632 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
13633
13634         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the
13635         unroll factor by the estimated number of iterations.
13636         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
13637         than prefetch latency.
13638
13639         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
13640         decode_caches_intel, detect_caches_intel): New functions.
13641         (host_detect_local_cpu): Use detect_caches_amd and
13642         detect_caches_intel.
13643
13644 2007-03-01  Richard Henderson  <rth@redhat.com>
13645
13646         * expr.c (emit_move_complex_push): Export.
13647         (emit_move_complex_parts): Split out from ...
13648         (emit_move_complex): ... here.
13649         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
13650         * config/i386/i386.md (movcdi): New.
13651
13652 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
13653
13654         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
13655         size of mode1 to check for tieable modes in MMX case.
13656
13657 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
13658
13659         * Makefile.in (rtlanal.o): Depend on tree.h.
13660         * rtl.h (offset_within_section_p, split_const): Declare.
13661         * rtlanal.c: Include tree.h.
13662         (offset_within_block_p): New function, taken from
13663         mips_offset_within_object_p.
13664         (split_const): New function, taken from mips_split_const.
13665         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
13666         Declare.
13667         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
13668         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
13669         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
13670         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
13671         (m68k_illegitimate_symbolic_constant_p): New function.
13672         * config/m68k/m68k.md (movsi): Remove misleading predicates.
13673         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
13674         symbolic constant that might be outside the symbol's section,
13675         move the symbol first and then add the offset.
13676         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
13677         Override.
13678         * config/mips/mips.c (mips_split_const): Delete.
13679         (mips_offset_within_object_p): Delete.
13680         (mips_symbolic_constant_p): Use offset_within_section_p and
13681         split_const instead of mips_offset_within_object_p and
13682         mips_split_const.
13683         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
13684         (mips_legitimize_const_move, print_operand_reloc)
13685         (mips_dangerous_for_la25_p): Use split_const instead of
13686         mips_split_const.
13687
13688 2007-02-28  Eric Christopher  <echristo@apple.com>
13689
13690         * Makefile.in (install-include-dir): Don't rm -rf include.
13691
13692 2007-02-28  Richard Guenther  <rguenther@suse.de>
13693
13694         PR middle-end/30364
13695         * fold-const.c (fold_binary): Do not associate expressions
13696         with more than one variable for integer types that do not wrap.
13697
13698 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
13699
13700         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
13701         Delete, and replace with...
13702         (fold_builtin_call_array): This.  Update callers to use it.
13703         * fold-const.c (fold_build_call_list): Delete, and replace with...
13704         (fold_build_call_array): This.
13705         (fold_build_call_list_initializer): Delete, and replace with...
13706         (fold_build_call_array_initializer): This.
13707         * tree.h: Update declarations to reflect above changes.
13708
13709         * c-typeck.c (build_function_call): Store converted arguments
13710         in a stack-allocated array instead of building a list.
13711         (convert_arguments): Store arguments in the array passed in as an
13712         argument, and return the actual number of arguments.
13713         * c-format.c: (check_function_format): Pass arguments in an
13714         array instead of a list.
13715         * c-common.c (check_function_nonnull): Likewise.
13716         (check_function_sentinel): Likewise.
13717         (check_function_arguments): Likewise.
13718         * c-common.h: Update declarations to reflect above changes.
13719
13720 2007-02-28  Jan Hubicka  <jh@suse.cz>
13721
13722         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
13723         PRED_NEGATIVE_RETURN): Update outcomes.
13724
13725 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
13726
13727         * calls.c (emit_library_call_value_1): Handle partial registers
13728         correctly when building up CALL_INSN_FUNCTION_USAGE.
13729
13730 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13731
13732         * pa/predicates.md (move_src_operand): Allow zero for mode.
13733         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
13734         move pattern.
13735
13736 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
13737
13738         PR target/30970
13739         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
13740         *movv2df_internal): Enable pattern only for valid operand
13741         combinations.
13742         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
13743         tie only 128bit modes. For MMX registers, tie only 64bit modes.
13744
13745 2007-02-27  Mike Stump  <mrs@apple.com>
13746
13747         * config/darwin-crt3.c: Avoid compilation when compiling for a
13748         kext multilib.
13749
13750 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
13751
13752         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
13753         FIXED_INCLUDE_DIR.
13754         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
13755         for fixed headers and limits.h.
13756         (install-include-dir, install-headers-tar, install-headers-cpio,
13757         install-headers-cp, real-install-headers-tar,
13758         real-install-headers-cpio, real-install-headers-cp): Handle
13759         include-fixed as well as include.
13760         (install-mkheaders): Don't install files that go only in include
13761         not include-fixed.
13762         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
13763         from GCC_INCLUDE_DIR.
13764         * gcc.c (process_command): Remove special -BstageN/ handling.
13765         (do_spec_1): Add include-fixed directories.
13766
13767 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
13768
13769         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
13770         _smulsi3_highpart.
13771         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
13772         New functions.
13773         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
13774         patterns.
13775
13776 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
13777
13778         * c-common.c (get_priority): Add check for
13779         SUPPORTS_INIT_PRIORITY.
13780
13781 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
13782
13783         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
13784
13785         * config/bfin/bfin.c: Include "cfglayout.h".
13786         (MAX_LSETUP_DISTANCE): New macro.
13787         (struct loop_info): New members incoming, incoming_src and
13788         incoming_dest.  Delete member predecessor.
13789         (length_for_loop): New function.
13790         (bfin_optimize_loop): Handle more different loop structures.
13791         (bfin_discover_loop): Rework detection of predecessor blocks by
13792         examining incoming edges.
13793         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
13794         bfin_reorg_loops.
13795         (bfin_reorder_loops): New function.
13796         (bfin_reorg_loops): Use these three new functions.
13797
13798         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
13799         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
13800         (CONSTRAINT_LEN): Add entry for 'q'.
13801         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
13802         Add 'q' constraints.
13803         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
13804         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
13805
13806         * config/bfin/bfin.md (add_with_carry): New pattern.
13807         (s_or_u, su_optab, su_modifier): New code macros/attrs.
13808         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
13809         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
13810         support unsigned multiplies too.  Removed incorrect commutativity from
13811         operand 1 constraint where appropriate.
13812         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
13813         patterns.
13814         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
13815         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
13816         New patterns.
13817         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
13818         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
13819         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
13820         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
13821         usmulhisi_hh_huh): New patterns.
13822
13823         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
13824         lshifthi3): Fix output template to use half reg for operand 2.
13825
13826         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
13827         instead of R2.
13828
13829         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
13830
13831 2007-02-27  Andreas Schwab  <schwab@suse.de>
13832
13833         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
13834
13835 2007-02-27  Jan Hubicka  <jh@suse.cz>
13836
13837         * predict.c (last_basic_block_p): Remove.
13838         (tree_estimate_probability): Update return heuristic for commonized
13839         return blocks.
13840
13841 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
13842
13843         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
13844
13845 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
13846
13847         * doc/include/gcc-common.texi (versionsubtitle): New macro.
13848         * doc/cpp.texi: Standardize title page.
13849         * doc/cppinternals.texi: Likewise.
13850         * doc/gcc.texi: Standardize title page, remove version number
13851         from copyright page.
13852         * doc/gccint.texi: Likewise.
13853         * doc/install.texi: Standardize title page, add table of
13854         contents.
13855
13856 2007-02-26  Jan Hubicka  <jh@suse.cz>
13857
13858         * predict.def: Set outcomes according to more recent results.
13859         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
13860         Remove dead predictors.
13861         * predict.c (return_prediction): Fix pasto.
13862
13863 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
13864
13865         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
13866         change; avoid a memory leak when returning early.
13867
13868 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
13869
13870         * c-decl.c (static_ctors): Move to c-common.c.
13871         (static_dtors): Likewise.
13872         (finish_function): Use c_record_cdtor_fn.
13873         (build_cdtor): Move to c-common.c.
13874         (c_write_global_declarations): Use c_build_cdtor_fns.
13875         * c-common.h (static_ctors): Declare.
13876         (static_dtors): Likewise.
13877         (c_record_cdtor_fn): Likewise.
13878         (c_build_cdtor_fns): Likewise.
13879         * c-common.c (static_ctors): New variable.
13880         (static_dtors): Likewise.
13881         (c_record_cdtor_fn): New function.
13882         (build_cdtor): Move from c-decl.c
13883         (c_build_cdtor_fns): New function.
13884
13885         * output.h (assemble_addr_to_section): Declare.
13886         (get_cdtor_priority_section): Likewise.
13887         * varasm.c (assemble_addr_to_section): New function.
13888         (get_cdtor_priority_section): Likewise.
13889         (default_named_section_asm_out_destructor): Use them.
13890         (destor_dtor_section_asm_out_destructor): Likewise.
13891         (default_named_section_asm_out_constructor): Likewise.
13892         (default_ctor_section_asm_out_constructor): Likewise.
13893         * config.gcc (*-*-vxworks*): Include vxworks.o.
13894         * config/t-vxworks (vxworks.o): New target.
13895         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
13896         (TARGET_ASM_CONSTRUCTOR): Define.
13897         (TARGET_ASM_DESTRUCTOR): Likewise.
13898         (vxworks_asm_out_constructor): Declare.
13899         (vxworks_asm_out_destructor): Likewise.
13900
13901         * c-common.c (get_priority): Check that we have not just an
13902         INTEGER_CST, but an integer constant with integeral type.
13903
13904 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
13905
13906         PR tree-optimization/30938
13907         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
13908         use &dt[nargs-1] instead of &dt[nargs] in the call to
13909         vect_is_simple_use().
13910
13911 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
13912
13913         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
13914         from register elimination as PRE_MODIFY / POST_MODIFY increments.
13915         Do not attempt to handle MEM inside auto-inc expressions.
13916         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
13917         of a register modified by an auto-inc expression.  However, do handle
13918         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
13919         (elimination_effects): Prohibit elimination of a register modified
13920         by an auto-inc expression.  Disable register elimination rules whose
13921         target register is modified by an auto-inc expression with variable
13922         increment.
13923
13924 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
13925
13926         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
13927         off-by-one error.
13928         (array_at_struct_end_p): New function.
13929         (idx_infer_loop_bounds): Use it.
13930         (estimate_numbers_of_iterations_loop): Export.
13931         * predict.c (predict_loops): Use estimated_loop_iterations_int.
13932         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
13933         (tree_estimate_probability): Call record_loop_exits.
13934         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
13935         (estimated_loop_iterations, estimated_loop_iterations_int,
13936         estimated_loop_iterations_tree): New functions.
13937         (analyze_siv_subscript_cst_affine,
13938         compute_overlap_steps_for_affine_1_2,
13939         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
13940         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
13941         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
13942         (PRED_LOOP_ITERATIONS_GUESSED): New.
13943         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
13944         * cfgloop.h (estimate_numbers_of_iterations_loop,
13945         estimated_loop_iterations_int): Declare.
13946
13947 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
13948
13949         * doc/extend.texi: Document optional priority argument to
13950         constructors and destructors.
13951         * tree.c (init_priority_for_decl): Adjust GTY markers.
13952         (init_ttree): Use priority-info hash functions for
13953         init_priority_for_decl.
13954         (tree_map_eq): Rename to ...
13955         (tree_map_base_eq): ... this.
13956         (tree_map_marked_p): Rename to ...
13957         (tree_map_base_marked_p): ... this.
13958         (tree_map_base_hash): New function.
13959         (decl_init_priority_lookup): Rework.
13960         (decl_fini_priority_lookup): New function.
13961         (decl_priority_info): New function.
13962         (decl_init_priority_insert): Use it.
13963         (decl_fini_priority_insert): Likewise.
13964         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
13965         hierarchy.
13966         (decl_restrict_base_insert): Likewise.
13967         (decl_debug_expr_insert): Likewise.
13968         (decl_value_expr_lookup): Likewise.
13969         (decl_value_expr_insert): Likewise.
13970         * tree.h (priority_type): New type.
13971         (decl_init_priority_lookup): Use priority_type.
13972         (decl_fini_priority_lookup): New function.
13973         (decl_init_priority_insert): Use priority_type.
13974         (decl_fini_priority_insert): New function.
13975         (DECL_HAS_INIT_PRIORITY): Tweak comments.
13976         (DECL_INIT_PRIORITY): Likewise.
13977         (SET_DECL_INIT_PRIORITY): Add comment.
13978         (DECL_FINI_PRIORITY): New macro.
13979         (SET_DECL_FINI_PRIORITY): Likewise.
13980         (DEFAULT_INIT_PRIORITY): Document.
13981         (MAX_INIT_PRIORITY): Likewise.
13982         (MAX_RESERVED_INIT_PRIORITY): Likewise.
13983         (tree_map_base): New type.
13984         (tree_map_base_eq): New function.
13985         (tree_map_base_hash): Likewise.
13986         (tree_map_base_marked_p): Likewise.
13987         (tree_map): Inherit from tree_map_base.
13988         (tree_map_eq): Make it a macro.
13989         (tree_map_marked_p): Likewise.
13990         (tree_int_map): Inherit from tree_map_base.
13991         (tree_int_map_eq): Make it a macro.
13992         (tree_int_map_hash): Likewise.
13993         (tree_int_map_marked_p): Likewise.
13994         (tree_priority_map): New type.
13995         (tree_priority_map_eq): New macro.
13996         (tree_priority_map_hash): Likewise.
13997         (tree_priority_map_marked_p): Likewise.
13998         * varasm.c (emults_decl): Adjust for refactoring of tree_map
13999         hierarchy.
14000         (emutls_common_1): Likewise.
14001         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
14002         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
14003         of tree_map hierarchy.
14004         * tree-cfg.c (move_stmt_r): Likewise.
14005         (new_label_mapper): Likewise.
14006         * c-tree.h (c_expand_body): Move to ...
14007         * c-common.h (c_expand_body): ... here.
14008         * c-decl.c (c_expand_body): Move to ...
14009         * c-common.c (c_expand_body): ... here.
14010         (c_common_attribute_table): Allow 1 argument for the constructor
14011         and destructor attributes.
14012         (get_priority): New function.
14013         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
14014         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
14015
14016 2007-02-24  Jan Hubicka  <jh@suse.cz>
14017
14018         PR middle-end/30509
14019         * tree-inline.c (copy_bb): Produce exact copy of EH info when
14020         copying for inlining.
14021
14022 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
14023             Jan Hubicka  <jh@suse.cz>
14024
14025         PR target/30778
14026         * i386.c (counter_mode): New function.
14027         (expand_set_or_movmem_via_loop): Use it.
14028         (expand_movmem_epilogue): Likewise; fix pasto.
14029         (ix86_expand_movmem): Do emit guard even for constant counts.
14030         (ix86_expand_setmem): Likewise.
14031
14032 2007-02-25  Nick Clifton  <nickc@redhat.com>
14033
14034         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
14035         (JUMP_TABLES_IN_TEXT_SECTION): Define.
14036
14037 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
14038
14039         PR target/30770
14040         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
14041         count argument with 0x10, not with 0x16.
14042         (expand_setmem_epilogue): Ditto.
14043
14044 2007-02-24  Mike Stump  <mrs@apple.com>
14045
14046         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
14047         symbols.
14048
14049 2007-02-24  Richard Guenther  <rguenther@suse.de>
14050
14051         PR middle-end/30951
14052         * fold-const.c (fold_binary): Fold x +- CST op x for
14053         EQ_EXPR and NE_EXPR.
14054
14055 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14056
14057         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
14058
14059 2007-02-24  Jan Hubicka  <jh@suse.cz>
14060
14061         * cgraphunit.c (decide_is_function_needed): Honor
14062         -fkeep-inline-functions.
14063
14064 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14065
14066         * builtins.c (fold_builtin_modf): New.
14067         (fold_builtin_2): Use it.
14068
14069 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
14070
14071         * loop-iv.c (implies_p): Detect additional cases where A implies B.
14072         (determine_max_iter): Take additional LOOP arg; all callers changed.
14073         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
14074         one using simplifications.
14075         (simplify_using_initial_values): Return if the expression becomes
14076         invalid due to altered regs.
14077
14078 2007-02-23  DJ Delorie  <dj@redhat.com>
14079
14080         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
14081
14082 2007-02-23  Mike Stump  <mrs@apple.com>
14083
14084         * tlink.c (scan_linker_output): Parse linker messages from
14085         darwin9's linker better.
14086
14087 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
14088
14089         PR debug/29614
14090         * varpool.c (varpool_assemble_pending_decls):  Set
14091         varpool_last_needed_node to null.
14092
14093 2007-02-23  DJ Delorie  <dj@redhat.com>
14094
14095         * config/i386/i386.c (ix86_data_alignment): Don't specify an
14096         alignment bigger than the object file can handle.
14097
14098 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
14099
14100         PR target/30825
14101         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
14102         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
14103         (*movsf_1): Penalize MMX moves.
14104
14105 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
14106
14107         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
14108         2^32-1 or more times unless flag_unsafe_loop_optimizations.
14109
14110         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
14111
14112 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14113
14114         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
14115         (fold_builtin_1): Use them.
14116         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
14117         BUILT_IN_SIGNIFICAND.
14118
14119 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
14120
14121         * config/i386/i386.c (bdesc_1arg): Initialize
14122         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
14123         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
14124         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
14125         and IX86_BUILTIN_MOVSLDUP.
14126
14127 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
14128
14129         PR rtl-optimization/30841
14130         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
14131
14132 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14133
14134         * builtins.c (fold_builtin_frexp): New.
14135         (fold_builtin_2): Use it.
14136
14137 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
14138
14139         * doc/invoke.texi (Spec Files): Document getenv spec function.
14140
14141         * gcc.c (getenv_spec_function): New function.
14142         (static_spec_functions): Add it.
14143         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
14144         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
14145         header files.
14146
14147 2007-02-22  Michael Matz  <matz@suse.de
14148
14149         PR c++/29433
14150         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
14151         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
14152
14153 2007-02-22  Ian Lance Taylor  <iant@google.com>
14154
14155         PR debug/30898
14156         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
14157         (mem_loc_descriptor): Call it.
14158
14159 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
14160             Ira Rosen  <irar@il.ibm.com>
14161
14162         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
14163
14164 2007-02-22  Ira Rosen  <irar@il.ibm.com>
14165
14166         PR tree-optimization/30843
14167         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
14168         stores only after all the group is vectorized.
14169
14170 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
14171
14172         PR tree-optimization/30858
14173         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
14174         in the reduction cycle have a single use in the loop.
14175         * tree-vectorizer.h (relevant): Add documentation.
14176
14177 2007-02-20  Mike Stump  <mrs@apple.com>
14178
14179         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
14180         * configure: Regenerate.
14181
14182 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
14183
14184         Change the defaults of some parameters and options.
14185         * config/spu/spu-protos.h (spu_optimization_options): Declare.
14186         * config/spu/spu.c (spu_optimization_options): Add.
14187         (spu_override_options): Change params in spu_optimization_options.
14188         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
14189
14190         Register 127 is only 16 byte aligned when used as a frame pointer.
14191         * config/spu/spu-protos.h (spu_init_expanders): Declare.
14192         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
14193         HARD_FRAME_POINTER_REGNUM.
14194         (spu_legitimate_address):  Use regno_aligned_for_reload.
14195         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
14196         aligned when frame_pointer_needed is true.
14197         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
14198         to 8 bits.
14199         * config/spu/spu.h (INIT_EXPANDERS): Define.
14200
14201         Make sure shift and rotate instructions have valid immediate operands.
14202         * config/spu/predicates.md (spu_shift_operand): Remove.
14203         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
14204         * config/spu/constraints.md (W, O): Extend range.
14205         * config/spu/spu.md (umask, nmask): Define.
14206         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
14207         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
14208         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
14209         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
14210         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
14211         (lshr<mode>3_reg):  Fix rtl description.
14212
14213         Make sure mulhisi immediate operands are valid.
14214         * config/spu/predicates.md (imm_K_operand): Add.
14215         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
14216
14217         Generate constants using fsmbi and andi.
14218         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
14219         (print_operand, spu_split_immediate, classify_immediate,
14220         fsmbi_const_p): Handle IC_FSMBI2.
14221
14222         Correctly handle a CONST_VECTOR containing symbols.
14223         * config/spu/spu.c (print_operand): Handle HIGH correctly.
14224         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
14225         (immediate_load_p): Allow symbols that use 2 instructions to create.
14226         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
14227         with symbols when flag_pic is set.
14228         (const_vector_immediate_p): New.
14229         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
14230         accept a CONST_VECTOR with symbols.
14231         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
14232         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
14233         correctly.
14234         * config/spu/spu.md (high, low): Delete.
14235         (low_<mode>): Define.
14236
14237         Remove INTRmode and INTR_REGNUM, which didn't work.
14238         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
14239         of INTR_REGNUM.
14240         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
14241         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
14242         peephole2 pattern): Don't use INTR or 131.
14243         (movintrcc): Delete.
14244         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
14245         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
14246         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
14247         (UNSPEC_SET_INTR): Add.
14248         * config/spu/spu-modes.def (INTR): Remove.
14249
14250         More accurate warnings about run-time relocations.
14251         * config/spu/spu.c (reloc_diagnostic): Test in_section.
14252
14253         Correctly warn about immediate arguments to specific intrinsics.
14254         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
14255         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
14256         the instruction predicate.
14257
14258         Fix tree check errors with latest update.
14259         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
14260         CALL_EXPR_ARG.
14261         (spu_expand_builtin): Use CALL_EXPR_FN.
14262
14263         Add missing specific intrinsics.
14264         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
14265         si_bislede.
14266         * config/spu/spu_internals.h: Ditto.
14267
14268         Fix incorrect operand modifiers.
14269         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
14270         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
14271
14272         Optimize one case of zero_extend of a vec_select.
14273         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
14274
14275         Accept any immediate for hbr.
14276         * config/spu/spu.md (hbr):  Change s constraints to i.
14277
14278 2007-02-21  Paul Brook  <paul@codesourcery.com>
14279
14280         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
14281         condexec_count when skipping USE and CLOBBER.
14282
14283 2007-02-21  Nick Clifton  <nickc@redhat.com>
14284
14285         * common.opt (Warray-bounds): Add Warning attribute.
14286         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
14287         Likewise.
14288         (fsized-zeroes): Add Optimization attribute.
14289         (fsplit-wide-types, ftree-scev-cprop): Likewise.
14290         * c.opt (Wc++0x-compat): Add Warning attribute.
14291
14292 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
14293
14294         PR middle-end/30761
14295         * reload1.c (eliminate_regs_in_insn): In the single_set special
14296         case, attempt to re-recognize the insn before falling back to
14297         having reload fix it up.
14298
14299 2007-02-20  Eric Christopher  <echristo@gmail.com>
14300
14301         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
14302         Rewrite accordingly.
14303         (frv_read_iacc_argument): Ditto.
14304         (frv_expand_set_builtin): Take a call instead of arglist, update for
14305         above changes.
14306         (frv_expand_unop_builtin): Ditto.
14307         (frv_expand_binop_builtin): Ditto.
14308         (frv_expand_cut_builtin): Ditto.
14309         (frv_expand_binopimm_builtin): Ditto.
14310         (frv_expand_voidbinop_builtin): Ditto.
14311         (frv_expand_int_void2arg): Ditto.
14312         (frv_expand_prefetches): Ditto.
14313         (frv_expand_voidtriop_builtin): Ditto.
14314         (frv_expand_voidaccop_builtin): Ditto.
14315         (frv_expand_load_builtin): Ditto.
14316         (frv_expand_store_builtin): Ditto.
14317         (frv_expand_mdpackh_builtin): Ditto.
14318         (frv_expand_mclracc_builtin): Ditto.
14319         (frv_expand_mrdacc_builtin): Ditto.
14320         (frv_expand_mwtacc_builtin): Ditto.
14321         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
14322         calls for above.
14323
14324 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
14325
14326         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
14327         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
14328         cmpb instruction.
14329         (HAVE_GAS_DFP): Check for assembler support of decimal floating
14330         point instructions.
14331         * configure: Regenerate.
14332         * config.in: Regenerate.
14333         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
14334         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
14335         masks to power6 and power6x and to POWERPC_MASKS.
14336         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
14337         _ARCH_PWR6.
14338         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
14339         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
14340         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
14341         Access PROTOTYPE as variable, not mask.
14342
14343 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
14344
14345         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
14346         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
14347         * combine.c (adjust_for_new_dest): Use it.
14348         * postreload.c (reload_combine): Likewise.
14349
14350 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
14351
14352         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
14353         notes on an insn with multiple sets, even if single_set returns
14354         non-NULL for that insn.
14355
14356 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14357
14358         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
14359         scalbn and scalbln.
14360
14361 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
14362
14363         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
14364         if user didn't pass it.
14365         * config/i386/darwin.h (CC1_SPEC): Likewise.
14366         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
14367         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
14368         -mmacosx-version-min.
14369
14370 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14371             Uros Bizjak  <ubizjak@gmail.com>
14372
14373         * optabs.h (enum optab_index): Add new OTI_scalb.
14374         (scalb_optab): Define corresponding macro.
14375         * optabs.c (init_optabs): Initialize scalb_optab.
14376         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
14377         patterns.
14378         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
14379         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
14380         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
14381         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
14382         flag_unsafe_math_optimizations is set.
14383
14384         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
14385         to implement scalbf, scalb and scalbl built-ins as inline x87
14386         intrinsics.
14387
14388 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14389             DJ Delorie <dj@redhat.com>
14390
14391         PR other/30824
14392         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
14393         (diagnostic_report_diagnostic): ... here, and turn them into real
14394         errors. If warnings are inhibited, no need to do anything.
14395
14396 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
14397
14398         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
14399         better code generation.
14400
14401 2007-02-20  Ben Elliston  <bje@au.ibm.com>
14402
14403         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
14404
14405 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
14406
14407         * config/alpha/alpha.c, config/alpha/alpha.md,
14408         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
14409         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
14410         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
14411         config/arm/lib1funcs.asm: Follow spelling conventions.
14412
14413         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
14414         config/fr30/fr30.md, config/i386/i386.h,
14415         config/iq2000/iq2000.h, config/iq2000/predicates.md,
14416         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
14417         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
14418         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
14419         config/rs6000/altivec.md, config/rs6000/rs6000.c,
14420         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
14421         config/sparc/sparc.c, config/sparc/sparc.h,
14422         config/sparc/sparc.md, config/spu/constraints.md,
14423         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
14424         conventions.
14425
14426 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
14427
14428         PR target/29943
14429         * varasm.c (use_blocks_for_decl_p): Return false for decls with
14430         alias attribute.
14431
14432 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
14433
14434         * doc/invoke.texi (-ftree-lrs): Remove.
14435
14436 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
14437
14438         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
14439         NULL.
14440
14441 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
14442
14443         * config/ia64/ia64.c (ia64_expand_builtin): Use the
14444         new CALL_EXPR_FN macro for retrieving the function
14445         declaration of the input expression.
14446
14447 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14448
14449         * c.opt (Waddress): New.
14450         * common.opt (Walways-true): Delete.
14451         (Wstring-literal-comparison): Delete.
14452         * doc/invoke.texi (Warning Options): Delete -Walways-true and
14453         -Wstring-literal-comparison. Add -Waddress.
14454         (Waddress): New.
14455         (Walways-true): Delete.
14456         (Wstring-literal-comparison): Delete.
14457         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
14458         consistently instead of -Walways-true in example.
14459         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
14460         * c-typeck.c (parser_build_binary_op): Replace
14461         -Wstring-literal-comparison and -Walways-true with -Waddress.
14462         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
14463         with -Waddress.
14464
14465 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
14466
14467         * tree-cfg.c (dump_function_to_file): Be prepared for functions
14468         without DECL_STRUCT_FUNCTION initialized.
14469
14470 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
14471
14472         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
14473         due to calls to functions taking pointers as parameters.
14474
14475 2007-02-19  Richard Henderson  <rth@redhat.com>
14476
14477         PR debug/29558
14478         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
14479         in memory.
14480
14481 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
14482
14483         * config/s390/s390.c (s390_call_saved_register_used,
14484         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
14485         accessed to the new scheme.
14486
14487 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
14488
14489         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
14490         (cris_print_index, cris_print_operand, cris_print_operand_address)
14491         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
14492         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
14493         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
14494         GET_CODE () == xxx.
14495         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
14496         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
14497         GO_IF_LEGITIMATE_ADDRESS): Ditto.
14498         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
14499         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
14500         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
14501         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
14502         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
14503         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
14504         (uminsi3, call, call_value): Ditto.
14505         (define_split: indir_to_reg_split, unnamed): Ditto.
14506
14507 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
14508
14509         PR tree-optimization/30975
14510         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
14511         wrong assert.
14512
14513 2007-02-18  Eric Christopher  <echristo@gmail.com>
14514
14515         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
14516         Remove use of arglist.
14517         (mips_expand_builtin): Remove use of arglist, pass in expr.
14518         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
14519         (mips_expand_builtin_movtf): Ditto.
14520         (mips_expand_builtin_compare): Ditto.
14521
14522 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
14523
14524         * tree-sra.c (sra_build_assignment): Replace assertion
14525         checking with a comment explaining why it can't be done.
14526
14527 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
14528
14529         PR middle-end/30833
14530         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
14531         during CALL_EXPR representation conversion.
14532         * tree-ssa-propagate.c (set_rhs): Likewise.
14533
14534 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
14535
14536         * tree-sra.c (sra_build_assignment): Disable assertion checking
14537         for now.
14538
14539 2007-02-18  Roger Sayle  <roger@eyesopen.com>
14540
14541         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
14542         instead of calling build2 with a GIMPLE_MODIFY_STMT.
14543         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
14544         Likewise.
14545         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
14546         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
14547         gimplify_init_ctor_eval_range, gimple_push_cleanup,
14548         gimplify_omp_for, gimplify_omp_atomic_pipeline,
14549         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
14550         force_gimple_operand): Likewise.
14551         * ipa-cp.c (constant_val_insert): Likewise.
14552         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
14553         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
14554         perfect_nestify): Likewise.
14555         * langhooks.c (lhd_omp_assignment): Likewise.
14556         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
14557         lower_copyprivate_clauses, lower_send_clauses,
14558         lower_send_shared_vars, expand_parallel_call,
14559         expand_omp_for_generic, expand_omp_for_static_nochunk,
14560         expand_omp_for_static_chunk, expand_omp_sections,
14561         lower_omp_single_copy, lower_omp_for_lastprivate,
14562         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
14563         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
14564         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
14565         Likewise.
14566
14567 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
14568
14569         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
14570         config/sh/sh.md: Follow spelling conventions.
14571
14572         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
14573         config/frv/predicates.md: Follow spelling conventions.
14574
14575         * config/m68k/linux-unwind.h: Fix a comment typo.
14576         * target.h: Follow spelling conventions.
14577
14578 2007-02-18  Roger Sayle  <roger@eyesopen.com>
14579
14580         PR rtl-optimization/28173
14581         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
14582         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
14583         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
14584         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
14585         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
14586
14587 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14588
14589         * builtins.c (fold_builtin_load_exponent): New.
14590         (fold_builtin_2): Use it.
14591
14592 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
14593
14594         PR rtl-optimization/30773
14595         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
14596         if we fail to attach a REG_EQUIV note.
14597
14598 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
14599             Roger Sayle  <roger@eyesopen.com>
14600
14601         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
14602
14603 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
14604
14605         * calls.c (initialize_argument_information): Pass original EXP
14606         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
14607         code to split complex arguments here, as part of initializing the
14608         ARGS array.
14609         (expand_call): Remove code that builds a list of arguments and
14610         inserts implicit arguments into it.  Instead, just count how many
14611         implicit arguments there will be so we can determine the size of
14612         the ARGS array, and let initialize_argument_information do the work.
14613         (split_complex_values): Delete unused function.
14614
14615 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
14616
14617         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
14618
14619 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
14620
14621         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
14622         for arg pointer based indexed addressing.
14623
14624 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
14625
14626         * config/ia64/ia64.h, config/ia64/ia64.md,
14627         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
14628         spelling conventions.
14629
14630 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
14631
14632         * config/m68k/m68k.c (split_di): New.
14633         * config/m68k/m68k-protos.h: Declare split_di.
14634         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
14635           Improve predicate handling and split constant shifts.
14636
14637 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
14638
14639         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
14640         parameter for register bitfield operations, general predicates
14641         cleanup
14642
14643 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
14644
14645         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
14646         * config/m68k/linux-unwind.h: New file.
14647
14648 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
14649
14650         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
14651         config/i386/athlon.md, config/ia64/ia64.md,
14652         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
14653         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
14654         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
14655         tree-ssa-loop-niter.c, tree-vect-analyze.c,
14656         tree-vect-transform.c: Fix comment typos.
14657
14658 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
14659
14660         * sched-deps.c (find_insn_list): Remove.
14661         * sched-int.h: Remove the prototype for find_insn_list.
14662
14663 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
14664
14665         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
14666         to linker.
14667         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
14668         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
14669         darwin_rs6000_override_options.
14670         (C_COMMON_OVERRIDE_OPTIONS): Expect
14671         darwin_macosx_version_min to be non-NULL always.
14672         (TARGET_C99_FUNCTIONS): Likewise.
14673         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
14674         (DARWIN_MINVERSION_SPEC): New.
14675         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
14676         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
14677         to cc1*.
14678         (DARWIN_MINVERSION_SPEC): New.
14679         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
14680         value.
14681         * config/darwin-c.c (darwin_cpp_builtins): Expect
14682         darwin_macosx_version_min to be non-NULL always.
14683
14684         * config/rs6000/rs6000.c: Clean up trailing whitespace.
14685
14686 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
14687
14688         * config/i386/i386.h (x86_use_xchgb): New.
14689         (TARGET_USE_XCHGB): New macro.
14690         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
14691         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
14692         Split after reload into bswaphi for shifts of 8.
14693         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
14694         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
14695         or when optimizing for size.
14696
14697 2007-02-16  Richard Guenther  <rguenther@suse.de>
14698             Christian Bruel  <christian.bruel@st.com>
14699
14700         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
14701         DECLs but prefer SSA_NAMEs over DECLs.
14702
14703 2007-02-16  Richard Guenther  <rguenther@suse.de>
14704
14705         * tree-flow-inline.h (single_imm_use_p): Remove.
14706         (zero_imm_uses_p): Likewise.
14707         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
14708         instead of single_imm_use_p.
14709         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
14710         zero_imm_uses_p.
14711
14712 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14713
14714         PR other/27843
14715         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
14716         nested double- and backquotes.
14717
14718 2007-02-15  Roger Sayle  <roger@eyesopen.com>
14719
14720         PR middle-end/30391
14721         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
14722         should be unreachable.
14723         (build2_stat): Allow construction of MODIFY_EXPR at any time.
14724         For the time being redirect GIMPLE_MODIFY_STMT to the new
14725         (renamed) build_gimple_modify_stmt_stat.
14726         (build2_gimple_stat): Rename to...
14727         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
14728         Always build a GIMPLE_MODIFY_STMT node.
14729         * tree.h (build2_gimple, build2_gimple_stat): Delete.
14730         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
14731         declarations.
14732
14733         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
14734         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
14735         * tree-complex.c (set_component_ssa_name, expand_complex_move,
14736         expand_complex_div_wide): Likewise.
14737         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
14738         * tree-ssa-loop-im.c (schedule_sm): Likewise.
14739         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
14740         * tree-ssa-loop-manip.c (create_iv): Likewise.
14741         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
14742         abs_replacement): Likewise.
14743         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
14744         realify_fake_stores): Likewise.
14745
14746         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
14747         node rather than a GIMPLE_MODIFY_STMT node.
14748         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
14749         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
14750         Likewise.
14751         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
14752         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
14753         GIMPLE_MODIFY_STMT.
14754
14755 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14756
14757         PR middle-end/30433
14758         * fold-const.c (fold_comparison): Add back the
14759         folding of constant complex comparisions.
14760
14761 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14762
14763         PR middle-end/30729
14764         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
14765         effects unknown to this function, return early.
14766
14767 2007-02-15  Ian Lance Taylor  <iant@google.com>
14768
14769         * lower-subreg.c (move_eh_region_note): New static function.
14770         (resolve_simple_move): Call it.
14771         (decompose_multiword_subregs): Track blocks for which we resolve a
14772         simple move which is also a control flow insn.  Pass them to
14773         find_many_sub_basic_blocks.
14774         (pass_lower_subreg): Add TODO_verify_flow.
14775         (pass_lower_subreg2): Likewise.
14776
14777 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
14778             Brooks Moses  <brooks.moses@codesourcery.com>
14779             Lee Millward  <lee.millward@codesourcery.com>
14780
14781         * tree.h (enum tree_code_class): Add tcc_vl_exp.
14782         (VL_EXP_CLASS_P): New.
14783         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
14784         TREE_CODE_LENGTH.
14785         (TREE_OPERAND_CHECK_CODE): Likewise.
14786         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
14787         (TREE_RTL_OPERAND_CHECK): Likewise.
14788         (tree_operand_check_failed): Make second parameter the whole tree
14789         instead of its code.  Fixed callers.
14790         (VL_EXP_CHECK): New.
14791         (TREE_OPERAND_LENGTH): New.
14792         (VL_EXP_OPERAND_LENGTH): New.
14793         (CALL_EXPR_FN): New.
14794         (CALL_EXPR_STATIC_CHAIN): New.
14795         (CALL_EXPR_ARGS): New.
14796         (CALL_EXPR_ARG): New.
14797         (call_expr_nargs): New.
14798         (CALL_EXPR_ARGP): New.
14799         (build_nt_call_list): Declare.
14800         (build_vl_exp_stat): Declare.
14801         (build_vl_exp): New.
14802         (build_call_list): Declare.
14803         (build_call_nary): Declare.
14804         (build_call_valist): Declare.
14805         (build_call_array): Declare.
14806         (call_expr_arg): Declare.
14807         (call_expr_argp): Declare.
14808         (call_expr_arglist): Declare.
14809         (fold_build_call_list): Declare.
14810         (fold_build_call_list_initializer): Declare.
14811         (fold_call_expr): Declare to replace fold_builtin.
14812         (fold_builtin_fputs): Update to agree with modified definition.
14813         (fold_builtin_strcpy): Likewise.
14814         (fold_builtin_strncpy): Likewise.
14815         (fold_builtin_memory_chk): Likewise.
14816         (fold_builtin_stxcpy_chk): Likewise.
14817         (fold_builtin_strncpy_chk): Likewise.
14818         (fold_builtin_next_arg): Likewise.
14819         (fold_build_call_expr): Declare.
14820         (fold_builtin_call_list): Declare.
14821         (fold_builtin_call_valist): Declare.
14822         (build_call_expr): Declare.
14823         (validate_arglist): Update to agree with modified definition.
14824         (tree_operand_length): New.
14825         (call_expr_arg_iterator): New.
14826         (init_call_expr_arg_iterator): New.
14827         (next_call_expr_arg): New.
14828         (first_call_expr_arg): New.
14829         (more_call_expr_args_p): New.
14830         (FOR_EACH_CALL_EXPR_ARG): New.
14831
14832         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
14833         and tcc_gimple_stmt.
14834         (tree_code_size): Update documentation.  Use sizeof (tree) rather
14835         than sizeof (char *).
14836         (tree_size): Likewise.  Add case for tcc_vl_exp.
14837         (tree_node_structure): Add case for tcc_vl_exp.
14838         (contains_placeholder_p): Likewise.
14839         (substitute_in_expr): Likewise.
14840         (substitute_placeholder_in_expr): Likewise.
14841         (stabilize_reference_1): Likewise.
14842         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
14843         to diagnose breakage of this interface for constructing CALL_EXPRs.
14844         (build_nt): Add similar assertion here.
14845         (build_nt_call_list): New.
14846         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
14847         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
14848         TREE_CODE_LENGTH.
14849         (get_callee_fndecl): Use new CALL_EXPR accessors.
14850         (tree_operand_check_failed): Change parameters to pass entire node
14851         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
14852         (process_call_operands): New.
14853         (build_vl_exp_stat): New.
14854         (build_call_list): New.
14855         (build_call_nary): New.
14856         (build_call_valist): New.
14857         (build_call_array): New.
14858         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
14859         (call_expr_arglist): New.
14860
14861         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
14862         tcc_vl_exp instead of a fixed-size tcc_expression.
14863
14864         * doc/c-tree.texi (CALL_EXPR): Document new representation and
14865         accessors for CALL_EXPRs.
14866         (AGGR_INIT_EXPR): Likewise.
14867
14868 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
14869             Brooks Moses  <brooks.moses@codesourcery.com>
14870             Lee Millward  <lee.millward@codesourcery.com>
14871
14872         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
14873         (expand_builtin_nonlocal_goto): Change parameter to be entire
14874         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
14875         (expand_builtin_prefetch): Likewise.
14876         (expand_builtin_classify_type): Likewise.
14877         (mathfn_built_in): Return NULL_TREE instead of 0.
14878         (expand_errno_check): Use new CALL_EXPR accessors.
14879         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
14880         Return NULL_RTX instead of 0.
14881         (expand_builtin_mathfn_2): Likewise.
14882         (expand_builtin_mathfn_3): Likewise.
14883         (expand_builtin_interclass_mathfn): Likewise.
14884         (expand_builtin_sincos): Likewise.
14885         (expand_builtin_cexpi): Likewise.
14886         (expand_builtin_int_roundingfn): Likewise.
14887         (expand_builtin_int_roundingfn_2): Likewise.
14888         (expand_builtin_pow): Likewise.
14889         (expand_builtin_powi): Likewise.
14890         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
14891         of arglist, fixing callers appropriately.  Use new CALL_EXPR
14892         accessors and constructors.  Return NULL_RTX instead of 0.
14893         (expand_builtin_strstr): Likewise.
14894         (expand_builtin_strchr): Likewise.
14895         (expand_builtin_strrchr): Likewise.
14896         (expand_builtin_strpbrk): Likewise.
14897         (expand_builtin_memcpy): Likewise.
14898         (expand_builtin_mempcpy): Likewise.
14899         (expand_builtin_mempcpy_args): New.
14900         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
14901         (expand_builtin_memmove_args): New.
14902         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
14903         (expand_movstr): Likewise.
14904         (expand_builtin_strcpy): Likewise.
14905         (expand_builtin_strcpy_args): New.
14906         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
14907         (expand_builtin_strncpy): Likewise.
14908         (expand_builtin_memset): Likewise.
14909         (expand_builtin_memset_args): New.
14910         (expand_builtin_bzero): Similarly to expand_builtin_memset.
14911         (expand_builtin_memcmp): Likewise.
14912         (expand_builtin_strcmp): Likewise.
14913         (expand_builtin_strncmp): Likewise.
14914         (expand_builtin_strcat): Likewise.
14915         (expand_builtin_strncat): Likewise.
14916         (expand_builtin_strspn): Likewise.
14917         (expand_builtin_strcspn): Likewise.
14918         (expand_builtin_args_info): Likewise.
14919         (expand_builtin_va_start): Likewise.
14920         (gimplify_va_arg_expr): Likewise.
14921         (expand_builtin_va_end): Likewise.
14922         (expand_builtin_va_copy): Likewise.
14923         (expand_builtin_frame_address): Likewise.
14924         (expand_builtin_alloca): Likewise.
14925         (expand_builtin_bswap): Likewise.
14926         (expand_builtin_unop): Likewise.
14927         (expand_builtin_fputs): Likewise.
14928         (expand_builtin_expect): Likewise.
14929         (expand_builtin_fabs): Likewise.
14930         (expand_builtin_copysign): Likewise.
14931         (expand_builtin_printf): Likewise.
14932         (expand_builtin_fprintf): Likewise.
14933         (expand_builtin_sprintf): Likewise.
14934         (expand_builtin_init_trampoline): Likewise.
14935         (expand_builtin_signbit): Likewise.
14936         (expand_builtin_fork_or_exec): Likewise.
14937         (expand_builtin_sync_operation): Likewise.
14938         (expand_builtin_compare_and_swap): Likewise.
14939         (expand_builtin_lock_test_and_set): Likewise.
14940         (expand_builtin_lock_release): Likewise.
14941         (expand_builtin): Likewise.
14942         (builtin_mathfn_code): Likewise.
14943
14944         (fold_builtin_constant_p): Pass call arguments individually instead
14945         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
14946         accessors and constructors.  Return NULL_TREE instead of 0.
14947         (fold_builtin_expect): Likewise.
14948         (fold_builtin_classify_type): Likewise.
14949         (fold_builtin_strlen): Likewise.
14950         (fold_builtin_nan): Likewise.
14951         (integer_valued_real_p): Likewise.
14952         (fold_trunc_transparent_mathfn): Likewise.
14953         (fold_fixed_mathfn): Likewise.
14954         (fold_builtin_cabs): Likewise.
14955         (fold_builtin_sqrt): Likewise.
14956         (fold_builtin_cbrt): Likewise.
14957         (fold_builtin_cos): Likewise.
14958         (fold_builtin_cosh): Likewise.
14959         (fold_builtin_tan): Likewise.
14960         (fold_builtin_sincos): Likewise.
14961         (fold_builtin_cexp): Likewise.
14962         (fold_builtin_trunc): Likewise.
14963         (fold_builtin_floor): Likewise.
14964         (fold_builtin_ceil): Likewise.
14965         (fold_builtin_round): Likewise.
14966         (fold_builtin_int_roundingfn): Likewise.
14967         (fold_builtin_bitop): Likewise.
14968         (fold_builtin_bswap): Likewise.
14969         (fold_builtin_logarithm): Likewise.
14970         (fold_builtin_hypot): Likewise.
14971         (fold_builtin_pow): Likewise.
14972         (fold_builtin_powi): Likewise.
14973         (fold_builtin_exponent): Likewise.
14974         (fold_builtin_memset): Likewise.
14975         (fold_builtin_bzero): Likewise.
14976         (fold_builtin_memory_op): Likewise.
14977         (fold_builtin_bcopy): Deleted; call site changed to invoke
14978         fold_builtin_memory_op directly.
14979         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
14980         (fold_builtin_strncpy): Likewise.
14981         (fold_builtin_memcmp): Likewise.
14982         (fold_builtin_strcmp): Likewise.
14983         (fold_builtin_strncmp): Likewise.
14984         (fold_builtin_signbit): Likewise.
14985         (fold_builtin_copysign): Likewise.
14986         (fold_builtin_isascii): Likewise.
14987         (fold_builtin_toascii): Likewise.
14988         (fold_builtin_isdigit): Likewise.
14989         (fold_builtin_fabs): Likewise.
14990         (fold_builtin_abs): Likewise.
14991         (fold_builtin_fmin_fmax): Likewise.
14992         (fold_builtin_carg): Likewise.
14993         (fold_builtin_classify): Likewise.
14994         (fold_builtin_unordered_cmp): Likewise.
14995
14996         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
14997         New functions split out from fold_builtin_1.
14998         (fold_builtin_n): New.
14999         (fold_builtin_varargs): New.
15000         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
15001         instead.
15002         (fold_call_expr): New.
15003         (build_function_call_expr): Rewrite to use new helper function.
15004         (fold_builtin_call_list): New.
15005         (build_call_expr): New.
15006         (fold_builtin_call_valist): New.
15007         (rewrite_call_expr): New.
15008         (validate_arg): New.
15009         (validate_arglist): Change parameter to be entire CALL_EXPR instead
15010         of an arglist.  Change return type to bool.  Use new CALL_EXPR
15011         accessors.
15012
15013         (fold_builtin_strstr):  Pass call arguments individually instead
15014         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
15015         accessors and constructors.  Return NULL_TREE instead of 0.
15016         (fold_builtin_strchr): Likewise.
15017         (fold_builtin_strrchr): Likewise.
15018         (fold_builtin_strpbrk): Likewise.
15019         (fold_builtin_strcat): Likewise.
15020         (fold_builtin_strncat): Likewise.
15021         (fold_builtin_strspn): Likewise.
15022         (fold_builtin_strcspn): Likewise.
15023         (fold_builtin_fputs): Likewise.
15024         (fold_builtin_next_arg): Likewise.
15025         (fold_builtin_sprintf): Likewise.
15026
15027         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
15028         NULL_RTX instead of 0.
15029         (expand_builtin_memory_chk): Likewise.
15030         (maybe_emit_chk_warning): Likewise.
15031         (maybe_emit_sprintf_chk_warning): Likewise.
15032
15033         (fold_builtin_object_size): Pass call arguments individually instead
15034         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
15035         accessors and constructors.  Return NULL_TREE instead of 0.
15036         (fold_builtin_memory_chk): Likewise.
15037         (fold_builtin_stxcpy_chk): Likewise.
15038         (fold_builtin_strncpy_chk): Likewise.
15039         (fold_builtin_strcat_chk): Likewise.
15040         (fold_builtin_strcat_chk): Likewise.
15041         (fold_builtin_strncat_chk): Likewise.
15042         (fold_builtin_sprintf_chk): Likewise.
15043         (fold_builtin_snprintf_chk): Likewise.
15044         (fold_builtin_printf): Likewise.
15045         (fold_builtin_vprintf): Likewise.
15046
15047         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
15048         constructors.
15049         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
15050         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
15051         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
15052         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
15053         (fold_unary): Likewise.
15054         (fold_binary): Likewise.
15055         (fold_ternary): Remove CALL_EXPR case, since they are no longer
15056         ternary expressions.
15057         (fold): Add logic for tcc_vl_exp.
15058         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
15059         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
15060         (fold_build3_stat): Add assertion to flag broken interface for
15061         constructing CALL_EXPRs.
15062         (fold_build_call_list): New.
15063         (fold_build_call_list_initializer): New.
15064         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
15065         constructors.
15066         (fold_strip_sign_ops): Likewise.
15067
15068 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
15069             Brooks Moses  <brooks.moses@codesourcery.com>
15070             Lee Millward  <lee.millward@codesourcery.com>
15071
15072         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
15073         accessors and dump arguments explicitly.
15074
15075         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
15076         TREE_CODE_LENGTH.
15077         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
15078         explicitly.
15079         (print_call_name): Use new CALL_EXPR accessors.
15080
15081         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
15082         CALL_EXPR arguments explicitly instead of as a list.  Use
15083         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
15084
15085         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
15086         (vrp_visit_stmt): Likewise.
15087
15088         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
15089         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
15090         TREE_CODE_LENGTH.
15091         (force_move_till_expr): Likewise.
15092
15093         * targhooks.c (default_external_stack_protect_fail): Use
15094         build_call_expr instead of build_function_call_expr.
15095         (default_hidden_stack_protect_fail): Likewise.
15096
15097         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
15098         build the call.
15099
15100         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
15101         and walk arguments explicitly.
15102
15103         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
15104         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
15105         (expand_simple_operations): Likewise.
15106         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
15107
15108         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
15109         of TREE_CODE_LENGTH.
15110         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
15111
15112         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
15113         instead of TREE_CODE_LENGTH.
15114
15115         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
15116         (tree_ic_transform): Likewise.
15117         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
15118         parameter instead of arglist.  Fix callers.
15119         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
15120         (tree_stringops_transform): Likewise.
15121         (tree_indirect_call_to_profile): Likewise.
15122         (tree_stringops_values_to_profile): Likewise.
15123
15124         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
15125         (eliminate_tail_call): Likewise.
15126
15127         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
15128
15129         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
15130         Use TREE_OPERAND_LENGTH and generalize to handle any number of
15131         operands.
15132         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
15133
15134         * omp-low.c (build_omp_barrier): Use build_call_expr.
15135         (lower_rec_input_clauses): Likewise.
15136         (lower_reduction_clauses): Likewise.
15137         (expand_parallel_call): Likewise.
15138         (maybe_catch_exception): Likewise.
15139         (expand_omp_for_generic): Likewise.
15140         (expand_omp_for_static_nochunk): Likewise.
15141         (expand_omp_sections): Likewise.
15142         (lower_omp_single_simple): Likewise.
15143         (lower_omp_single_copy): Likewise.
15144         (lower_omp_master): Likewise.
15145         (lower_omp_ordered): Likewise.
15146         (lower_omp_critical): Likewise.
15147
15148         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
15149         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
15150
15151         * tree-gimple.c (is_gimple_call_addr): Fix doc.
15152         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
15153         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
15154
15155         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
15156         and generalize to handle any number of operands.
15157         (chrec_contains_undetermined): Likewise.
15158         (tree_contains_chrecs): Likewise.
15159         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
15160
15161         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
15162
15163         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
15164         fold_call_expr instead of fold_builtin.
15165         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
15166         match declarations there.
15167         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
15168         updates.
15169
15170         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
15171         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
15172
15173         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
15174         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
15175
15176         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
15177         accessors.
15178
15179         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
15180         (execute_cse_sincos): Use new CALL_EXPR accessors.
15181
15182         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
15183
15184         * gimple-low.c (lower_function_body): Use build_call_expr.
15185         (lower_builtin_setjmp): Likewise.
15186
15187         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
15188         (set_storage_via_libcall): Likewise.
15189         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
15190         instead of TREE_CODE_LENGTH.
15191         (expand_expr_real_1): Use new CALL_EXPR accessors.
15192
15193         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
15194         generalize to handle any number of operands.
15195         (TB_parent_eq): Likewise.
15196
15197         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
15198         (strip_builtin_expect): Likewise.
15199
15200         * function.c (gimplify_parameters): Use build_call_expr.
15201
15202         * tree-vectorizer.c (vect_is_simple_reduction): Use
15203         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
15204
15205         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
15206         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
15207
15208         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
15209         iterators.
15210
15211         * gimplify.c (build_stack_save_restore): Use build_call_expr.
15212         (gimplify_decl_expr): Likewise.
15213         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
15214         Use new CALL_EXPR iterators.
15215         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
15216         (gimplify_modify_expr_to_memset): Likewise.
15217         (gimplify_variable_sized_compare): Likewise.
15218         (gimplify_omp_atomic_fetch_op): Likewise.
15219         (gimplify_omp_atomic_pipeline): Likewise.
15220         (gimplify_omp_atomic_mutex): Likewise.
15221         (gimplify_function_tree): Likewise.
15222
15223         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
15224         (call_expr_flags): Likewise.
15225         (expand_call): Likewise.
15226
15227         * except.c (expand_builtin_eh_return_data_regno): Pass entire
15228         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
15229         accessors.
15230
15231         * coverage.c (create_coverage): Use build_call_expr.
15232
15233         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
15234         (temp_call_expr_obstack): New.
15235         (pool_copy_list): Delete.
15236         (temp_copy_call_expr): New.
15237         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
15238         CALL_EXPR accessors.  Get rid of special goo for copying argument
15239         lists and use temp_copy_call_expr instead.
15240         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
15241         CALL_EXPR accessors.
15242         (create_expression_by_pieces): Likewise.  Use build_call_array
15243         to construct the result instead of fold_build3.
15244         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
15245         dealing with argument lists.
15246         (init_pre): Remove references to expression_node_pool and
15247         list_node_pool.  Init temp_call_expr_obstack instead.
15248         (fini_pre): Remove references to expression_node_pool and
15249         list_node_pool.
15250
15251         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
15252         and walk arguments explicitly instead of as a list.
15253
15254         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
15255         (mx_register_decls): Likewise.
15256         (mudflap_register_call): Likewise.
15257         (mudflap_finish_file): Likewise.
15258
15259         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
15260         (ipa_callsite_compute_param): Likewise.
15261
15262         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
15263         accessors and constructor.
15264
15265         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
15266         accessors and constructor.
15267         (convert_tramp_reference): Likewise.
15268         (convert_call_expr): Likewise.
15269         (finalize_nesting_tree_1): Likewise.
15270
15271         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
15272         accessors.
15273
15274         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
15275
15276         * tree-inline.c (initialize_inlined_parameters): Pass entire
15277         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
15278         accessors.
15279         (estimate_num_insns_1): Use new CALL_EXPR accessors.
15280         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
15281
15282         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
15283         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
15284         (vectorizable_reduction): Likewise.
15285         (vectorizable_call): Use new CALL_EXPR iterators.
15286         (vectorizable_conversion): Use build_call_expr.
15287         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
15288         (vect_gen_widened_results_half): Use build_call_expr.
15289         (vect_setup_realignment): Likewise.
15290         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
15291
15292         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
15293         (pass_through_call): Likewise.
15294         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
15295         fold_builtin.
15296
15297         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
15298         (tree_gen_pow2_profiler): Likewise.
15299         (tree_gen_one_value_profiler): Likewise.
15300         (tree_gen_ic_func_profiler): Likewise.
15301         (tree_gen_average_profiler): Likewise.
15302         (tree_gen_ior_profiler): Likewise.
15303
15304         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
15305         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
15306         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
15307
15308         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
15309         of TREE_CODE_LENGTH.
15310
15311         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
15312         of TREE_CODE_LENGTH.
15313
15314         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
15315         constructor.
15316         (convert_to_integer): Likewise.
15317
15318         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
15319         accessors.
15320
15321 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
15322             Brooks Moses  <brooks.moses@codesourcery.com>
15323             Lee Millward  <lee.millward@codesourcery.com>
15324
15325         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
15326         accessors.
15327         * config/frv/frv.c (frv_expand_builtin): Likewise.
15328         * config/s390/s390.c (s390_expand_builtin): Likewise.
15329
15330         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
15331         (sparc_expand_builtin): Use new CALL_EXPR accessors.
15332
15333         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
15334         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
15335         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
15336         (ix86_expand_store_builtin): Likewise.
15337         (ix86_expand_unop_builtin): Likewise.
15338         (ix86_expand_unop1_builtin): Likewise.
15339         (ix86_expand_sse_compare): Likewise.
15340         (ix86_expand_sse_comi): Likewise.
15341         (ix86_expand_vec_init_builtin): Likewise.
15342         (ix86_expand_vec_ext_builtin): Likewise.
15343         (ix86_expand_vec_set_builtin): Likewise.
15344         (ix86_expand_builtin): Use new CALL_EXPR accessors.
15345
15346         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
15347         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
15348
15349         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
15350         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
15351         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
15352
15353         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
15354         build_call_expr.
15355         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
15356         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
15357         arglist.  Use new CALL_EXPR accessors.  Fix callers.
15358         (altivec_expand_abs_builtin): Likewise.
15359         (rs6000_expand_binop_builtin): Likewise.
15360         (altivec_expand_predicate_builtin): Likewise.
15361         (altivec_expand_lv_builtin): Likewise.
15362         (spe_expand_stv_builtin): Likewise.
15363         (altivec_expand_stv_builtin): Likewise.
15364         (rs6000_expand_ternop_builtin): Likewise.
15365         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
15366         (altivec_expand_st_builtin): Likewise.
15367         (altivec_expand_dst_builtin): Likewise.
15368         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
15369         arglist.  Use new CALL_EXPR accessors.  Fix callers.
15370         (altivec_expand_vec_set_builtin): Likewise.
15371         (altivec_expand_vec_ext_builtin): Likewise.
15372         (altivec_expand_builtin): Use new CALL_EXPR accessors.
15373         (spe_expand_builtin): Likewise.
15374         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
15375         arglist.  Use new CALL_EXPR accessors.  Fix callers.
15376         (spe_expand_evsel_builtin): Likewise.
15377         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
15378         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
15379
15380         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
15381         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
15382         (arm_expand_unop_builtin): Likewise.
15383         (arm_expand_builtin): Use new CALL_EXPR accessors.
15384
15385         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
15386         accessors.
15387
15388         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
15389         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
15390         Fix callers.
15391         (bfin_expand_unop_builtin): Likewise.
15392         (bfin_expand_builtin): Use new CALL_EXPR accessors.
15393
15394 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
15395             Brooks Moses  <brooks.moses@codesourcery.com>
15396             Lee Millward  <lee.millward@codesourcery.com>
15397
15398         * c-semantics.c (build_stmt): Add internal diagnostic check.
15399
15400         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
15401         accessors.  Print arguments explicitly instead of as a list.
15402
15403         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
15404
15405         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
15406         (c_finish_omp_flish): Likewise.
15407
15408         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
15409         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
15410         instead of TREE_CODE_LENGTH.
15411         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
15412         (c_warn_unused_result): Likewise.
15413
15414 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15415
15416         PR c/26494
15417         * doc/invoke.texi (Warning Options): Remove
15418         -Werror-implicit-function-declaration.
15419         (Wimplicit-function-declaration): Update description.
15420         * opts.c (common_handle_option): Move handling of -Werror=* to...
15421         (enable_warning_as_error): ...here.
15422         * opts.h (enable_warning_as_error): Declare.
15423         * c-decl.c (implicit_decl_warning): Unless
15424         -Wno-implicit-function-declaration is given, emit a pedwarn if
15425         -std=c99 or emit a warning if -Wimplicit-function-declaration.
15426         * c.opt (Wimplicit-function-declaration): Replace
15427         mesg_implicit_function_declaration with
15428         warn_implicit_function_declaration.
15429         * c-opts.c (c_common_handle_option):
15430         -Werror-implicit-function-declaration is exactly equal as
15431         -Werror=implicit-function-declaration.
15432         (set_Wimplicit): Replace mesg_implicit_function_declaration with
15433         warn_implicit_function_declaration.
15434         (c_common_post_options): -Wimplict-function-declaration is enabled
15435         by default by -std=c99, otherwise is disabled by default.
15436         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
15437
15438 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
15439
15440         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
15441         DECL on the rhs to a DECL on the lhs for debug info purposes if the
15442         former is ignored but not the latter.
15443
15444 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
15445
15446         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
15447         is made and the reference doesn't use the alias set of its type,
15448         do not create the temporary using that type.
15449
15450 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
15451
15452         * jump.c: Remove prototypes for delete_computation and
15453         delete_prior_computation.
15454
15455 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
15456
15457         * jump.c (get_label_after): Delete.
15458         (get_label_before, delete_computation, delete_jump,
15459         delete_prior_computation, follow_jumps): Move...
15460         * reorg.c (delete_computation, delete_prior_computation): ... here...
15461         (get_label_before, delete_jump): ... making these static ...
15462         (follow_jumps): ... and simplifying this since it only runs after
15463         reload.
15464         * rtl.h (get_label_after, get_label_before, delete_jump,
15465         follow_jumps): Delete prototypes.
15466
15467 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
15468
15469         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
15470
15471 2007-02-15  Nick Clifton  <nickc@redhat.com>
15472
15473         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
15474         order to prevent it from being munged by the target.
15475
15476 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
15477
15478         * config/i386/i386.md: Remove misleading comment.
15479
15480 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
15481
15482         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
15483         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
15484         invalid patterns.
15485
15486 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
15487
15488         * tree-sra.c (instantiate_missing_elements): Canonicalize
15489         bit-field types.
15490         (sra_build_assignment): New.
15491         (generate_copy_inout, generate_element_copy,
15492         generate_element_zero, generate_one_element_init): Use it.
15493
15494 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
15495
15496         * tree-sra.c (instantiate_missing_elements): Canonicalize
15497         bit-field types.
15498         (sra_build_assignment): New.
15499         (generate_copy_inout, generate_element_copy,
15500         generate_element_zero, generate_one_element_init): Use it.
15501
15502 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
15503
15504         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
15505         limbo die nodes.
15506
15507 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
15508
15509         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
15510         types as aggregates not scalars.
15511         * function.c (assign_stack_temp_for_type): Likewise.
15512
15513 2007-02-14  Roger Sayle  <roger@eyesopen.com>
15514             Zdenek Dvorak  <dvorakz@suse.cz>
15515
15516         * tree-dump.c (dump_switch_p_1): Require exact match of the option
15517         name.
15518
15519 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
15520
15521         * passes.c (next_pass_1): Clear the next field of the copied
15522         pass structure.
15523
15524 2007-02-14  Richard Henderson  <rth@redhat.com>
15525
15526         * tree-sra.c (early_sra): New.
15527         (decl_can_be_decomposed_p): Deny va_list if early_sra.
15528         (tree_sra_early, pass_sra_early): New.
15529         * tree-pass.h (pass_sra_early): Declare.
15530         * passes.c (init_optimization_passes): Use it.
15531
15532 2007-02-14  Richard Guenther  <rguenther@suse.de>
15533
15534         * flags.h (issue_strict_overflow_warning): Convert to a macro.
15535
15536 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
15537
15538          PR tree-optimization/30771
15539         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
15540         also phi nodes.
15541         (vect_analyze_operations): Induction phis can now be marked as
15542         used_in_loop.
15543         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
15544         Update documentation accordingly.
15545
15546 2007-02-14  Nick Clifton  <nickc@redhat.com>
15547
15548         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
15549         most 3 arguments are supported.
15550         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
15551
15552 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
15553
15554         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
15555         Ensure dst->current is valid.
15556
15557 2007-02-13  Paul Brook  <paul@codesourcery.com>
15558
15559         * config.gcc: Add arm*-*-uclinux-*eabi.
15560         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
15561         (SUBTARGET_EXTRA_LINK_SPEC): Define.
15562         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
15563         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
15564         (LINK_SPEC): Define.
15565         (LIB_SPEC): Define.
15566         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
15567         register.
15568         * config/arm/uclinux-eabi.h: New file.
15569         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
15570         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
15571         based targets.
15572
15573 2007-02-13  Ian Lance Taylor  <iant@google.com>
15574
15575         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
15576         * flags.h (warn_strict_overflow): Declare.
15577         (enum warn_strict_overflow_code): Define.
15578         (issue_strict_overflow_warning): New static inline function.
15579         * opts.c (warn_strict_overflow): New variable.
15580         (common_handle_option): Handle OPT_Wstrict_overflow and
15581         OPT_Wstrict_overflow_.
15582         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
15583         OPT_Wall.
15584         * fold-const.c: Include intl.h.
15585         (fold_deferring_overflow_warnings): New static variable.
15586         (fold_deferred_overflow_warning): New static variable.
15587         (fold_deferred_overflow_code): New static variable.
15588         (fold_defer_overflow_warnings): New function.
15589         (fold_undefer_overflow_warnings): New function.
15590         (fold_undefer_and_ignore_overflow_warnings): New function.
15591         (fold_deferring_overflow_warnings_p): New function.
15592         (fold_overflow_warning): New static function.
15593         (make_range): Add strict_overflow_p parameter.  Change all
15594         callers.
15595         (extract_muldiv, extract_muldiv_1): Likewise.
15596         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
15597         tree_expr_nonnegative_p.
15598         (fold_negate_expr): Call fold_overflow_warning.
15599         (fold_range_test): Likewise.
15600         (fold_comparison): Likewise.
15601         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
15602         instead of tree_expr_nonnegative_p.
15603         (tree_expr_nonnegative_warnv_p): Rename from
15604         tree_expr_nonnegative_p, add strict_overflow_p parameter.
15605         (tree_expr_nonnegative_p): New function.
15606         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
15607         strict_overflow_p parameter.
15608         (tree_expr_nonzero_p): New function.
15609         * passes.c (verify_interpass_invariants): New static function.
15610         (execute_one_pass): Call it.
15611         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
15612         warnings.
15613         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
15614         (estimate_numbers_of_iterations): Likewise.
15615         (scev_probably_wraps_p): Likewise.
15616         * tree-ssa-ccp.c: Include "toplev.h".
15617         (evaluate_stmt): Defer fold overflow warnings until we know we are
15618         going to optimize.
15619         (struct fold_stmt_r_data): Add stmt field.
15620         (fold_stmt_r): Defer fold overflow warnings until we know we
15621         optimized.
15622         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
15623         (fold_stmt_inplace): Likewise.
15624         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
15625         (cleanup_control_expr_graph): Defer fold overflow warnings until
15626         we know we are going to optimize.
15627         * tree-cfg.c (fold_cond_expr_cond): Likewise.
15628         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
15629         Likewise.
15630         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
15631         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
15632         * tree-ssa-loop-manip.c (create_iv): Likewise.
15633         * c-typeck.c (build_conditional_expr): Likewise.
15634         (build_binary_op): Likewise.
15635         * tree-vrp.c (vrp_expr_computes_nonzero): Call
15636         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
15637         (extract_range_from_unary_expr): Likewise.
15638         * simplify-rtx.c (simplify_const_relational_operation): Warn when
15639         assuming that signed overflow does not occur.
15640         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
15641         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
15642         (fold_defer_overflow_warnings): Declare.
15643         (fold_undefer_overflow_warnings): Declare.
15644         (fold_undefer_and_ignore_overflow_warnings): Declare.
15645         (fold_deferring_overflow_warnings_p): Declare.
15646         (tree_expr_nonzero_warnv_p): Declare.
15647         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
15648         of warning options.
15649         (Warning Options): Document -Wstrict-overflow.
15650         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
15651         (tree-ssa-ccp.o): Likewise.
15652         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
15653         (fold-const.o): Depend on intl.h.
15654
15655 2007-02-13  Ian Lance Taylor  <iant@google.com>
15656
15657         PR middle-end/30751
15658         * lower-subreg.c (resolve_simple_move): Decompose subregs in
15659         addresses.
15660
15661 2007-02-13  Stuart Hastings  <stuart@apple.com>
15662
15663         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
15664
15665 2007-02-13  Richard Henderson  <rth@redhat.com>
15666
15667         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
15668         handled_component_p before looking for the indirect_ref.
15669
15670 2007-02-13  Richard Henderson  <rth@redhat.com>
15671
15672         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
15673         remove flags clobber.
15674         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
15675         (bswaphi_lowpart): New.
15676         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
15677         remove TARGET_BSWAP test.  Delete expander of the same name.
15678
15679         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
15680         (expand_unop): Use them.
15681
15682 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
15683
15684         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
15685         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
15686         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
15687         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
15688         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
15689         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
15690         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
15691         assembler dialect choice from asm templates.
15692
15693 2007-02-12  Richard Henderson  <rth@redhat.com>
15694
15695         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
15696         (fixuns_trunc<SSEMODEF>si2): Use it.
15697         * config/i386/sse.md (vec_setv4sf_0): Export.
15698         * config/i386/i386.c (ix86_build_const_vector): Export.
15699         (ix86_split_convert_uns_si_sse): Rename from
15700         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
15701         * config/i386/i386-protos.h: Update.
15702
15703 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15704
15705         PR c/29521
15706         * c-typeck.c (c_finish_return): Improve warning message.
15707
15708 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15709
15710         * alias.c (find_symbolic_term): Delete unused function.
15711
15712 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
15713
15714         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
15715         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
15716         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
15717
15718 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
15719
15720         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
15721         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
15722         the function, temporarily point the debug interface to the null one.
15723
15724 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
15725
15726         * dwarf2out.c (round_up_to_align): New static function.
15727         (field_byte_offset): Use it to round the offset.
15728
15729 2007-02-12  Richard Henderson  <rth@redhat.com>
15730
15731         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
15732         (inswl_const): Export.
15733
15734 2007-02-12  Richard Henderson  <rth@redhat.com>
15735
15736         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
15737         result mode of the libcall, convert back to outmode.
15738
15739 2007-02-12  Roger Sayle  <roger@eyesopen.com>
15740
15741         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
15742         (bswapdi2): New define_expand to implement 32-bit implementation.
15743
15744 2007-02-12  Nick Clifton  <nickc@redhat.com>
15745
15746         * doc/invoke.texi (Overall Options): Document --help=.
15747         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
15748         (cc1_options): Pass --help= on to cc1.
15749         (display_help): Add description of --help=.
15750         (process_command): Add code to handle --help=.  Allow translated
15751         --help and --target-help switches to be passed on to compiler
15752         sub-process.
15753         (main): Remove unused if statement.
15754         * opts.c (columns): Remove.
15755         (LEFT_COLUMN): Define.
15756         (wrap_help): Add columns argument.
15757         (print_filtered_help): Change parameters to be an include bitmask,
15758         an exclude bitmask, an any bitmask and the column width.  Move the
15759         code to display the params list here.  Add code to display the
15760         status of options rather than their descriptions if the quiet flag
15761         is not active.
15762         (print_specific_help): Change parameters to be an include bitmask,
15763         an exclude bitmask and an any bitmask.  Move code to look up the
15764         column width here.  Decide upon the title for an options listing.
15765         (common_handle_options): Add code to handle --help=.  Adapt code
15766         for --help and --target-help to use the revised form of the
15767         print_specific_help function.
15768         (print_help): Delete.
15769         (print_param_help): Delete.
15770         (print_switch): Delete.
15771         * opts.h (cl_lang_count): Add prototype.
15772         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
15773         CL_MAX_OPTION_CLASS): New defines.
15774         * optc-gen.awk: Add construction of cl_lang_count.
15775         * c.opt: Add Warning attribute to warning options and Optimization
15776         attribute to optimization options.
15777         * common.opt: Likewise.
15778         Add --help=.
15779         Add -fhelp and -ftarget-help as aliases for the transformed --help
15780         and --target-help options.
15781         * opt-functions.awk: Add code to handle Warning and Optimization
15782         attributes.
15783
15784 2007-02-12  Richard Henderson  <rth@redhat.com>
15785
15786         * config/alpha/constraints.md: New file.
15787         * config/alpha/alpha.c: Include tm-constrs.h.
15788         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
15789         alpha_extra_constraint): Remove.
15790         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
15791         * config/alpha/alpha-protos.h: Update.
15792         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
15793         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
15794         (EXTRA_CONSTRAINT): Remove.
15795         * config/alpha/alpha.md: Include constraints.md.
15796         (adddi splitter): Use satisfies_constraint_*.
15797         * config/alpha/predicates.md (add_operand): Likewise.
15798         (sext_add_operand, addition_operation): Likewise.
15799
15800 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
15801
15802         PR tree-optimization/29145
15803         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
15804         in our handling of restrict qualified pointers.
15805
15806 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15807
15808         PR middle-end/7651
15809         * doc/invoke.texi (Wunused-value): Update description.
15810         (Wextra): Delete item.
15811         * opts.c (set_Wextra): Don't use the value of Wextra to set the
15812         value of Wunused-value.
15813         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
15814         (c_finish_stmt_expr): Don't check extra_warnings.
15815         (emit_side_effect_warnings): The caller is responsible to check
15816         warn_unused_value.
15817
15818 2007-02-11  Roger Sayle  <roger@eyesopen.com>
15819             Matt Thomas  <matt@3am-software.com>
15820
15821         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
15822
15823 2007-02-11  Roger Sayle  <roger@eyesopen.com>
15824
15825         * simplify-rtx.c (simplify_relational_operation_1): Optimize
15826         comparisons of POPCOUNT against zero.
15827         (simplify_const_relational_operation): Likewise.
15828
15829 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15830
15831         * doc/invoke.texi (Wextra): Delete outdated paragraph.
15832
15833 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15834
15835         * dwarf2out.c (root_type): Delete unused function.
15836
15837 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15838
15839         * genattrtab.c (contained_in_p): Delete unused function.
15840         (write_expr_attr_cache): Likewise.
15841
15842 2007-02-11  Jan Hubicka  <jh@suse.cz>
15843
15844         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
15845         previous patch.
15846
15847 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
15848
15849         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
15850         to add the REG_EQ* note.
15851         * see.c (see_merge_one_use_extension): Likewise.
15852         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
15853         turn REG_EQUAL notes into REG_EQUIV notes if the target
15854         register may have more than one set.
15855         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
15856         * gcse.c (try_replace_reg): Likewise.
15857         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
15858         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
15859         more than one REG_EQUIV note.
15860         * reload1.c (gen_reload): Use set_unique_reg_note.
15861
15862 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
15863
15864         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
15865         (ix86_builtin_conversion): New function.
15866
15867 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
15868
15869         PR target/29487
15870         * tree.h (DECL_REPLACEABLE_P): New macro.
15871         * except.c (set_nothrow_function_flags): Likewise.
15872
15873 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
15874             Ira Rosen  <irar@il.ibm.com>
15875             Dorit Nuzman  <dorit@il.ibm.com>
15876
15877         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
15878         * targhooks.c (default_builtin_vectorized_conversion): New.
15879         * targhooks.h (default_builtin_vectorized_function): New declaration.
15880         * target.h (struct vectorize): Add builtin_conversion field.
15881         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
15882         stmt_vec_info_type value.
15883         (vectorizable_conversion): New declaration.
15884         * tree-vect-analyze.c (vect_analyze_operations): Add
15885         vectorizable_conversion call.
15886         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
15887         * tree-vect-transform.c (vectorizable_conversion): New function.
15888         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
15889         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
15890         mode.
15891         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
15892         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
15893         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
15894         or ALTIVEC_BUILTIN_VCFSX.
15895
15896 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15897
15898         PR target/30634
15899         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
15900         CONST_DOUBLE and operand 0 is a hard register.
15901         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
15902         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
15903         is a hard floating-point register.
15904
15905 2007-02-10  Richard Henderson  <rth@redhat.com>
15906             Jakub Jelinek  <jakub@redhat.com>
15907             Alexandre Oliva  <aoliva@redhat.com>
15908
15909         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
15910         * builtin-types.def (BT_WORD): Make unsigned.
15911         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
15912         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
15913         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
15914         * c-decl.c (grokdeclarator): Don't error if !have_tls.
15915         * c-parser.c (c_parser_omp_threadprivate): Likewise.
15916         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
15917         emulated tls.
15918         * expr.c (emutls_var_address): New.
15919         (expand_expr_real_1): Expand emulated tls.
15920         (expand_expr_addr_expr_1): Likewise.
15921         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
15922         * output.h (emutls_finish): Declare.
15923         * toplev.c (compile_file): Call it.
15924         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
15925         address before wrapping in CONST.
15926         * varasm.c (emutls_htab, emutls_object_type): New.
15927         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
15928         (get_emutls_object_name, get_emutls_object_type): New.
15929         (get_emutls_init_templ_addr, emutls_decl): New.
15930         (emutls_common_1, emutls_finish): New.
15931         (assemble_variable): When emulating tls, swap decls; generate
15932         constructor for the emutls objects.
15933         (do_assemble_alias): When emulating tls, swap decl and target name.
15934         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
15935         for emulated tls.
15936         * varpool.c (decide_is_variable_needed): Look at force_output.
15937         Recurse for emulated tls.
15938         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
15939         with decide_is_variable_needed.
15940         * emutls.c: New file.
15941         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
15942         tls_object for real tls.
15943
15944 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
15945
15946         PR rtl-optimization/29599
15947         * reload1.c (eliminate_regs_in_insn): Take the destination
15948         mode into account when computing the offset.
15949
15950 2007-02-09  Stuart Hastings  <stuart@apple.com>
15951             Richard Henderson  <rth@redhat.com>
15952
15953         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
15954         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
15955         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
15956         fixuns_truncdfhi2): New.
15957         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
15958         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
15959         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
15960         (floatunssidf2): Allow nonimmediate source.
15961         * config/i386/sse.md (movdi_to_sse): New.
15962         (vec_concatv2di): Drop '*'.
15963         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
15964         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
15965         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
15966         New.
15967         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
15968         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
15969         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
15970         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
15971         (ix86_build_signbit_mask): Fix decl of v, refactor to call
15972         ix86_build_const_vector.
15973         (x86_emit_floatuns): Rewrite.
15974
15975 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15976
15977         * genautomata.c (longest_path_length): Delete unused function.
15978         (struct state): Delete unused longest_path_length.
15979         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
15980         (get_free_state): Delete unused.
15981
15982 2007-02-09  Jan Hubicka  <jh@suse.cz>
15983
15984         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
15985         * doc/invoke.texi (inline-unit-growth): Update default value.
15986
15987         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
15988         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
15989         (rebuild_cgraph_edges): Likewise.
15990         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
15991         (dump_cgraph_node): Dump frequencies.
15992         (cgraph_clone_edge): Add frequency scales.
15993         (cgraph_clone_node): Add freuqnecy.
15994         * cgraph.h (cgraph_edge): Add freuqnecy argument.
15995         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
15996         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
15997         * tree-pass.h (TODO_rebuild_frequencies): New constant.
15998         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
15999         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
16000         (save_inline_function_body): Likewise.
16001         * ipa-inline.c: inluce rtl.h
16002         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
16003         (cgraph_edge_badness): Use frequencies.
16004         (cgraph_decide_recursive_inlining): Update clonning.
16005         (cgraph_decide_inlining_of_small_function): Dump frequency.
16006         * predict.c (estimate_bb_frequencies): Export.
16007         * predict.h (estimate_bb_frequencies): Declare.
16008         * tree-inline.c (copy_bb): Watch overflows.
16009         (expand_call_inline): Update call of cgraph_create_edge.
16010         (optimize_inline_calls): Use TODO flags to update frequnecies.
16011         * passes.h: Include predict.h
16012         (init_optimization_passes): Move profile ahead.
16013         (execute_function_todo): Handle TODO_rebuild_frequencies.
16014
16015 2007-02-09  Roger Sayle  <roger@eyesopen.com>
16016
16017         * config/alpha/alpha.c (emit_insxl): Force the first operand of
16018         the insbl or inswl pattern into a register.
16019
16020 2007-02-09  Roger Sayle  <roger@eyesopen.com>
16021
16022         * config/ia64/ia64.md (bswapdi2): New define_insn.
16023
16024 2007-02-09  Richard Henderson  <rth@redhat.com>
16025
16026         * config/i386/constraints.md (Ym): New constraint.
16027         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
16028         (movdi_1_rex64): Split sse and xmm general register moves from
16029         memory move alternatives.  Use conditional register constraints.
16030         (movsf_1, movdf_integer): Likewise.
16031         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
16032         (movdf_integer_rex64): New.
16033         (pushsf_rex64): Fix output constraints.
16034         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
16035         (sse2_stored): Likewise.
16036         (sse2_storeq_rex64): New.
16037         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
16038         amd and not generic.
16039         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
16040         for optimize_size.  Remove SF/DFmode hack.
16041
16042 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
16043
16044         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
16045         (bit_SSE4a): New.
16046
16047 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
16048             Richard Sandiford  <richard@codesourcery.com>
16049
16050         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
16051         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
16052         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
16053         m68k/t-mlib to tmake_file.
16054         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
16055         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
16056         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
16057         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
16058         variable is not empty, add t-$m68k_arch_family to tmake_file.
16059         Add t-mlibs to tmake_file.
16060         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
16061         * config/m68k/t-cf: New file.
16062         * config/m68k/t-m68k: Likewise.
16063         * config/m68k/t-mlibs: Likewise.
16064         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
16065         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
16066         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
16067         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
16068         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
16069         Delete.
16070         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
16071         (INSTALL_LIBGCC): Delete.
16072         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
16073         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
16074         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
16075         (M68K_MLIB_CPU): Define.
16076         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
16077         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
16078         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
16079
16080 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
16081             Richard Guenther  <rguenther@suse.de>
16082
16083         PR middle-end/23361
16084         * fold-const.c (fold_comparison): Handle obfuscated comparisons
16085         against INT_MIN/INT_MAX.
16086         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
16087         file if a loop is removed.
16088
16089 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
16090
16091         * calls.c (store_one_arg): Pass correct alignment to
16092         emit_push_insn for non-BLKmode values.
16093         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
16094         unaligned stack slot via a suitably aligned slot.
16095
16096 2007-02-08  DJ Delorie  <dj@redhat.com>
16097
16098         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
16099         warnings.
16100         (legal_subregs): Use unsigned char, make const.
16101         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
16102
16103 2007-02-08  Paul Brook  <paul@codesourcery.com>
16104
16105         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
16106         special interworking needed.
16107
16108 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
16109
16110         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
16111         conditional to __SSE2__.
16112         (Entries below should have been added to first ChangeLog
16113         entry for amdfam10 dated 2007-02-05)
16114         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
16115         defined.
16116         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
16117         defined.
16118         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
16119         defined.
16120
16121 2007-02-08  DJ Delorie  <dj@redhat.com>
16122
16123         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
16124         * config/m32c/m32c.c (legal_subregs): New.
16125         (m32c_illegal_subreg_p): New.
16126         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
16127         unsupported subregs of hard regs.
16128
16129 2007-02-08  Jan Hubicka  <jh@suse.cz>
16130
16131         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
16132         the same one; always update histograms.
16133
16134 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
16135
16136         * passes.c (init_optimization_passes): Tidy comment.
16137
16138 2007-02-08  Roger Sayle  <roger@eyesopen.com>
16139
16140         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
16141         strip zero_extend, bswap and rotates from POCOUNT's argument.
16142         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
16143         zero_extend and rotates from PARITY's argument.
16144         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
16145         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
16146         of an integer constant at compile-time.
16147
16148 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
16149
16150         PR 30562
16151         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
16152         Update all users.
16153         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
16154         users.
16155         (init_alias_info):
16156         * tree-ssa-live.c (remove_unused_locals): Do not remove
16157         TREE_ADDRESSABLE variables.
16158         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
16159         * tree-ssa-operands.c (add_virtual_operand): Remove argument
16160         FOR_CLOBBER.  Update all users.
16161         If VAR has an associated alias set, add a virtual operand for
16162         it if no alias is found to conflict with the memory reference.
16163
16164 2007-02-07  Jan Hubicka  <jh@suse.cz>
16165             Robert Kidd <rkidd@crhc.uiuc.edu>
16166
16167         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
16168
16169 2007-02-07  Ian Lance Taylor  <iant@google.com>
16170
16171         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
16172
16173 2007-02-07  Roger Sayle  <roger@eyesopen.com>
16174
16175         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
16176         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
16177         tablejumpdi, movsi_to_cr_one): Remove constraints from
16178         define_expand's match_operands.
16179
16180 2007-02-07  Roger Sayle  <roger@eyesopen.com>
16181
16182         * global.c (compute_regsets): Move declatation of "i" inside of
16183         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
16184
16185 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
16186
16187         PR c++/30703
16188         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
16189         of INDIRECT_REF <RESULT_DECL>.
16190
16191         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
16192
16193 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
16194             Kaz Kojima  <kkojima@gcc.gnu.org>
16195
16196         PR target/29746
16197         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
16198         properly.
16199         (sh_initialize_trampoline): Add parentheses to avoid a warning.
16200
16201 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
16202
16203         * doc/loop.texi: Document possibility not to perform disambiguation
16204         of loops with multiple latches.
16205         * cfgloopmanip.c (alp_enum_p): Removed.
16206         (add_loop): Handle subloops.  Use get_loop_body_with_size.
16207         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
16208         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
16209         the new forwarder block.
16210         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
16211         Handle the case latch is NULL.
16212         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
16213         modifications when marking loop exits.
16214         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
16215         be modified.
16216         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
16217         disambiguate_loops_with_multiple_latches.
16218         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
16219         before fix_loop_structure.
16220         * cfgloop.c: Include pointer-set.h and output.h.
16221         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
16222         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
16223         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
16224         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
16225         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
16226         disambiguate_multiple_latches, get_loop_body_with_size,
16227         disambiguate_loops_with_multiple_latches): New functions.
16228         (flow_loop_dump): Dump multiple latch edges.
16229         (flow_loop_nodes_find): Handle loops with multiple latches.
16230         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
16231         (glb_enum_p): Modified.
16232         (get_loop_body): Use get_loop_body_with_size.
16233         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
16234         (AVOID_CFG_MODIFICATIONS): New constant.
16235         (disambiguate_loops_with_multiple_latches, add_loop,
16236         get_loop_body_with_size): Declare.
16237         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
16238
16239 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
16240
16241         PR inline-asm/28686
16242         * global.c (compute_regsets): New function.
16243         (global_alloc): Refactored ELIMINABLE_REGSET
16244         and NO_GLOBAL_ALLOC_REGS computation out.
16245         (rest_of_handle_global_alloc): Call compute_regsets()
16246         for non-optimizing case.
16247
16248 2007-02-06  Richard Henderson  <rth@redhat.com>
16249
16250         * config/i386/constraints.md (Y2): Rename from Y.
16251         (Yi): New constraint.
16252         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
16253         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
16254         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
16255         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
16256         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
16257         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
16258         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
16259         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
16260         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
16261         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
16262         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
16263         vec_extractv2si_1): Change Y constraints to Y2.
16264         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
16265         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
16266         Change Y constraints to Y2.
16267         (sse2_loadld): Change Y constraints to x.
16268
16269 2007-02-06  Roger Sayle  <roger@eyesopen.com>
16270
16271         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
16272         (parity<mode>2): New define_expand using rs6000_emit_parity.
16273         * config/rs6000/rs6000.c (rs6000_emit_popcount,
16274         rs6000_emit_parity): New functions.
16275         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
16276         rs6000_emit_parity): Prototype here.
16277
16278 2007-02-06  Ian Lance Taylor  <iant@google.com>
16279
16280         * lower-subreg.c (simple_move_operand): Reject CONST.
16281         (resolve_clobber): Call validate_change rather than directly
16282         assigning to XEXP (pat, 0).
16283
16284 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
16285
16286         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
16287         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
16288         (tree-cfg.o): Remove hashtab.h dependency.
16289
16290         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
16291         (struct ivopts_data): Change niters to pointer_map_t.
16292         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
16293         (niter_for_exit): Create pointer_map on demand.  Change for
16294         pointer_map API.
16295         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
16296         (free_loop_data): Destroy data->niters if created and reset field.
16297         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
16298         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
16299
16300         * tree-ssa-reassoc.c: Include pointer-set.h.
16301         (bb_rank): Change to long *.
16302         (operand_rank): Change to pointer_map_t.
16303         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
16304         (insert_operand_rank): Accept long.
16305         (operand_entry_hash, operand_entry_eq): Remove.
16306         (get_rank): Return long.  Adjust for changes above.
16307         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
16308         and operand_rank.
16309         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
16310
16311         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
16312         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
16313         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
16314         is not NULL.
16315         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
16316         directly since it cannot be NULL.
16317         (get_vi_for_tree): Rewrite for pointer_map API.
16318         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
16319         (init_alias_vars): Create vi_for_tree as pointer_map.
16320         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
16321
16322         * tree-cfg.c: Don't include hashtab.h.
16323         (edge_to_cases): Declare as pointer_map.
16324         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
16325         Delete.
16326         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
16327         (start_recording_case_labels): Create edge_to_cases as pointer_map.
16328         (end_recoding_case_labels): Cleanup edge_to_cases manually before
16329         destroying it.
16330         (record_switch_edge): Delete.
16331         (get_cases_for_edge): Adjust for pointer_map API, inline
16332         record_switch_edge (rewritten for new API), remove goto.
16333
16334 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
16335
16336         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
16337         * tree-nested.c: Include pointer-set.h.
16338         (var_map_elt, var_map_eq, var_map_hash): Delete.
16339         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
16340         to pointer_map_t's.
16341         (nesting_info_bitmap_obstack): New.
16342         (lookup_field_for_decl): Adjust for pointer_map API.
16343         (lookup_tramp_for_decl): Adjust for pointer_map API.
16344         (get_nonlocal_debug_decl): Adjust for pointer_map API.
16345         (get_local_debug_decl): Adjust for pointer_map API.
16346         (convert_nl_goto_reference): Adjust for pointer_map API.
16347         (convert_nl_goto_receiver): Adjust for pointer_map API.
16348         (create_nesting_tree): Create outside GGC space.  Create bitmap on
16349         the new obstack.  Create field_map and var_map as pointer_maps.
16350         (free_nesting_tree): Adjust for changes to create_nesting_tree.
16351         (root): Delete.
16352         (lower_nested_functions): Move root here, no need to NULL it.
16353         Initialize and release the obstack.
16354
16355 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
16356
16357         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
16358         Remove prototypes and make them non-static.
16359         (struct tree_int_map): Remove.
16360         * tree.h (struct tree_int_map): Move here, turning TO into an
16361         unsigned int.
16362         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
16363
16364         * tree.h (TREE_COMPLEXITY): Remove.
16365         (struct tree_exp): Remove complexity field.
16366         * tree.c (build1_stat): Don't set it.
16367
16368 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
16369             Victor Kaplansky  <victork@il.ibm.com>
16370
16371         * tree-vectorizer.c (vect_is_simple_use): Support induction.
16372         (vect_is_simple_reduction): Support reduction with induction as
16373         one of the operands.
16374         (vect_is_simple_iv_evolution): Fix formatting.
16375         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
16376         formatting.  Don't mark induction phis for vectorization.
16377         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
16378         * tree-vect-transform.c (get_initial_def_for_induction): New function.
16379         (vect_get_vec_def_for_operand): Support induction.
16380         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
16381         induction case.
16382         (vectorizable_reduction): Support reduction with induction as one of
16383         the operands.
16384         (vectorizable_type_demotion): Use def-type of stmt argument rather
16385         than dummy def-type.
16386
16387         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
16388         flag_tree_scev_cprop.
16389         * common.opt (tree-scev-cprop): New flag.
16390
16391         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
16392         call to vect_get_new_vect_var.
16393
16394 2007-02-06  Ira Rosen  <irar@il.ibm.com>
16395
16396         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
16397         vectype is not NULL.
16398         (vect_pattern_recog_1): Likewise.
16399
16400 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16401
16402         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
16403         (fold_negate_expr): Likewise.
16404
16405 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
16406
16407         PR debug/30189
16408         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
16409         even if cv-qualification is the same.
16410
16411 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
16412
16413         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
16414         __enable_execute_stack on completion.
16415
16416 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
16417
16418         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
16419         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
16420         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
16421         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
16422         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
16423         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
16424         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
16425         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
16426
16427 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
16428
16429         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
16430         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
16431         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
16432         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
16433         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
16434         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
16435         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
16436         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
16437         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
16438         umuldi3_highpart_rex64, umulsi3_highpart_insn,
16439         umulsi3_highpart_zext, smuldi3_highpart_rex64,
16440         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
16441         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
16442         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
16443         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
16444         sqrtextenddfxf2_i387): Added amdfam10_decode.
16445
16446         * config/i386/athlon.md (athlon_idirect_amdfam10,
16447         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
16448         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
16449         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
16450         athlon_ivector_store_amdfam10): New define_insn_reservation.
16451         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
16452         amdfam10.
16453
16454 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
16455
16456         * config/i386/athlon.md (athlon_call_amdfam10,
16457         athlon_pop_amdfam10, athlon_lea_amdfam10): New
16458         define_insn_reservation.
16459         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
16460         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
16461         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
16462
16463 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
16464
16465         * config/i386/athlon.md (athlon_sseld_amdfam10,
16466         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
16467         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
16468
16469 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
16470
16471         * config/i386/athlon.md (athlon_sseins_amdfam10): New
16472         define_insn_reservation.
16473         * config/i386/i386.md (sseins): Added sseins to define_attr type
16474         and define_attr unit.
16475         * config/i386/sse.md: Set type attribute to sseins for insertq
16476         and insertqi.
16477
16478 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
16479
16480         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
16481         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
16482         ssecomi_load_amdfam10, ssecomi_amdfam10,
16483         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
16484         define_insn_reservation.
16485         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
16486
16487 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
16488
16489         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
16490         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
16491         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
16492         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
16493         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
16494         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
16495         define_insn_reservation.
16496
16497         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
16498         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
16499         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
16500         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
16501         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
16502
16503 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
16504
16505         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
16506         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
16507         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
16508         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
16509         athlon_ssemul_load_k8): Added amdfam10.
16510
16511 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
16512
16513         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
16514         (x86_sse_unaligned_move_optimal): New variable.
16515
16516         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
16517         m_AMDFAM10.
16518         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
16519         for unaligned vector SSE double/single precision loads for AMDFAM10.
16520
16521 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
16522
16523         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
16524         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
16525         Define TARGET_CPU_DEFAULT_amdfam10.
16526         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
16527         (processor_type): Add PROCESSOR_AMDFAM10.
16528
16529         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
16530         processor_type in config/i386/i386.h.
16531         Enable imul peepholes for TARGET_AMDFAM10.
16532
16533         * config.gcc: Add support for --with-cpu option for amdfam10.
16534
16535         * config/i386/i386.c (amdfam10_cost): New variable.
16536         (m_AMDFAM10): New macro.
16537         (m_ATHLON_K8_AMDFAM10): New macro.
16538         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
16539         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
16540         x86_promote_QImode, x86_integer_DFmode_moves,
16541         x86_partial_reg_dependency, x86_memory_mismatch_stall,
16542         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
16543         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
16544         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
16545         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
16546         Enable/disable for amdfam10.
16547         (override_options): Add amdfam10_cost to processor_target_table.
16548         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
16549         processor_alias_table.
16550         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
16551         (ix86_adjust_cost): Add code for amdfam10.
16552
16553 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
16554
16555         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
16556         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
16557         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
16558         * config/i386/i386.h: Add builtin definition for SSE4A.
16559         * config/i386/i386.md: Add support for ABM instructions
16560         (popcnt and lzcnt).
16561         * config/i386/sse.md: Add support for SSE4A instructions
16562         (movntss, movntsd, extrq, insertq).
16563         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
16564         Add -march=amdfam10 flag.
16565         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
16566         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
16567         and amdfam10.
16568         * doc/extend.texi: Add documentation for SSE4A builtins.
16569
16570 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
16571
16572         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
16573
16574 2007-02-05  Richard Guenther  <rguenther@suse.de>
16575
16576         * tree-vectorizer.h (vectorizable_function): Add argument type
16577         argument, change return type.
16578         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
16579         * tree-vect-transform.c (vectorizable_function): Handle extra
16580         argument, return vectorized function decl.
16581         (build_vectorized_function_call): Remove.
16582         (vectorizable_call): Handle calls with result and argument types
16583         differing.  Handle loop vectorization factor correctly.
16584         * targhooks.c (default_builtin_vectorized_function): Adjust for
16585         extra argument.
16586         * targhooks.h (default_builtin_vectorized_function): Likewise.
16587         * target.h (builtin_vectorized_function): Add argument type
16588         argument.
16589         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
16590         extra argument, allow vectorizing of lrintf.
16591         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
16592         documentation of target hook.
16593
16594 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
16595
16596         PR target/30665
16597         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
16598         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
16599         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
16600
16601 2007-02-05  Roger Sayle  <roger@eyesopen.com>
16602
16603         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
16604         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
16605         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
16606         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
16607         before canonicalizing sincos to cexpi.
16608         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
16609
16610 2007-02-05  Roger Sayle  <roger@eyesopen.com>
16611
16612         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
16613         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
16614         (alpha_init_builtins): Use alpha_add_builtins to process tables.
16615
16616 2007-02-05  Roger Sayle  <roger@eyesopen.com>
16617
16618         * mips-tfile.c (initialize_init_file): Correct endianness test.
16619
16620 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
16621
16622         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
16623         the 'y' constraint.
16624
16625 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
16626
16627         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
16628         saves in a PARALLEL before the register assignments.
16629
16630 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
16631
16632         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
16633         DWARF_FRAME_RETURN_COLUMN to be a general register.
16634         * dwarf2out.c (init_return_column_size): New function, split from...
16635         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
16636         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
16637         to be nongeneral registers.
16638         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
16639         integer registers.
16640         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
16641         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
16642
16643 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
16644
16645         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
16646
16647 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
16648
16649         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
16650         (remove_path): Use can_remove_branch_p and remove_branch instead
16651         of loop_delete_branch_edge.
16652         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
16653         (tree_transform_and_unroll_loop): Remove dead branches immediately.
16654         Update profile using scale_dominated_blocks_in_loop.
16655         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
16656         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
16657         (can_remove_branch_p, remove_branch): Declare.
16658         * tree-cfg.c (tree_can_remove_branch_p): New function.
16659         (tree_cfg_hooks): Add tree_can_remove_branch_p.
16660         * cfgrtl.c (rtl_can_remove_branch_p): New function.
16661         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
16662
16663 2007-02-05  Jan Hubicka  <jh@suse.cz>
16664
16665         PR middle-end/30696
16666         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
16667         nodes in cgraph, don't remove offline copy of the function.
16668
16669 2007-02-04  Jan Hubicka  <jh@suse.cz>
16670
16671         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
16672         vectors might cause maybe_lookup_element_for_expr to be called
16673         on non-sra-candidate.
16674
16675 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
16676
16677         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
16678         config/bfin/bfin.md, config/bfin/predicates.md: Follow
16679         spelling conventions.
16680
16681 2007-02-04  Richard Guenther  <rguenther@suse.de>
16682
16683         PR middle-end/30636
16684         * fold-const.c (try_move_mult_to_index): Make sure to not
16685         overflow one dimension of a multi-dimensional array access.
16686
16687 2007-02-04  Jan Hubicka  <jh@suse.cz>
16688
16689         * passes.c (init_optimization_passes): Reindent.
16690
16691 2007-02-04  Jan Hubicka  <jh@suse.cz>
16692             Eric Botcazou  <ebotcazou@adacore.com>
16693
16694         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
16695         (execute_fixup_cfg): Break out the abnormal goto code.
16696         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
16697         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
16698         (optimize_inline_calls): Call make_nonlocal_label_edges.
16699
16700 2007-02-04  Jan Hubicka  <jh@suse.cz>
16701
16702         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
16703         true when something was changed.
16704         (rename_ssa_copies): When something was changed, do
16705         TODO_remove_unused_locals.
16706         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
16707         add TODO_remove_unused_locals when instruction was removed.
16708
16709 2007-02-04  Jan Hubicka  <jh@suse.cz>
16710
16711         * ipa-inline.c (try_inline): Improve debug output; work on already
16712         inline edges too.
16713         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
16714         call try_inline for already inlined edges too when flattening;
16715         inline also functions that make callee growth but overall unit size
16716         reduce.
16717
16718 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
16719
16720         * config/m32c/bitops.md, config/m32c/jump.md,
16721         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
16722         config/m32r/m32r.h, config/m32r/m32r.md,
16723         config/m32r/predicates.md, config/m68hc11/larith.asm,
16724         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
16725         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
16726         config/mips/mips-protos.h, config/mips/mips.c,
16727         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
16728         config/mn10300/mn10300.h, config/mn10300/predicates.md,
16729         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
16730         spelling conventions.
16731
16732         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
16733         Follow spelling conventions.
16734
16735 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
16736
16737         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
16738         warn about C++0x compatibility.
16739
16740 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
16741
16742         * config/h8300/h8300.c, config/h8300/h8300.h,
16743         config/h8300/h8300.md: Follow spelling conventions.
16744
16745 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
16746
16747         PR middle-end/30667
16748         * combine.c (try_combine): Do not substitute source operand
16749         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
16750
16751 2007-02-03  Jan Hubicka  <jh@suse.cz>
16752
16753         PR gcov-profile/30650
16754         * value-prof.c (stringop_block_profile): Fix handling of size counter;
16755         do not divide by zero for never executed counters.
16756         (tree_find_values_to_profile): Fix counters.
16757         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
16758
16759 2007-02-03  Ian Lance Taylor  <iant@google.com>
16760
16761         * lower-subreg.c (simple_move_operand): New static function,
16762         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
16763         operands.
16764         (simple_move): Call simple_move_operand.
16765         (find_decomposable_subregs): Add special handling of MEMs.
16766         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
16767         meaning of return value.  If we see a hard register, test whether
16768         it can store a word_mode value.  Change all callers.
16769
16770 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16771
16772         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
16773         ftrapv insns and expanders.
16774         (subdi3): Change define_expand operand 1 to arith11_operand, and
16775         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
16776         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
16777         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
16778         respectively.
16779
16780         PR middle-end/30174
16781         * varasm.c (notice_global_symbol): Treat global objects as weak when
16782         flag_shlib is true.
16783
16784 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16785
16786         * emit-rtl.c (dconstpi): Delete.
16787         (dconstsqrt2): New.
16788         (init_emit_once): Delete dconstpi and init dconstsqrt2.
16789         * real.h (dconstpi): Delete.
16790         (dconstsqrt2): New.
16791         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
16792         (fold_builtin_hypot): Likewise.
16793
16794 2007-02-03  Tom Tromey  <tromey@redhat.com>
16795
16796         PR driver/30246
16797         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
16798         -gcoff3, -gxcoff3, -gvms3 implies -dD.
16799
16800 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
16801
16802         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
16803         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
16804         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
16805         config/rs6000/cell.md, config/rs6000/darwin.h,
16806         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
16807         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
16808         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
16809         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
16810         typos.  Follow spelling conventions.
16811         * doc/invoke.texi: Follow spelling conventions.
16812
16813 2007-02-03  Roger Sayle  <roger@eyesopen.com>
16814
16815         * simplify-rtx.c (simplify_relational_operation_1): Implement some
16816         canonicalization transformations that attempt to simplify integer
16817         constant comparisons to become comparisons against zero.
16818
16819 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16820
16821         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
16822         fabs(x)*sqrt(2).
16823         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
16824         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
16825
16826 2007-02-02  Mike Stump  <mrs@apple.com>
16827
16828         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
16829         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
16830         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
16831         generate a branch island.
16832
16833 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
16834
16835         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
16836         (xtensa_legitimate_address_p): New.
16837         (xtensa_legitimize_address): New.
16838         (xtensa_output_addr_const_extra): New.
16839         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
16840         (BASE_REG_P): New.
16841         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
16842         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
16843         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
16844         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
16845         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
16846         (xtensa_legitimize_address): New.
16847         (xtensa_output_addr_const_extra): New.
16848
16849 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
16850
16851         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
16852
16853 2007-02-02  Ian Lance Taylor  <iant@google.com>
16854
16855         * expmed.c (expand_divmod): Add comment.
16856
16857 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
16858
16859         * emit-rtl.c (renumber_insns): Remove.
16860         * flags.h: Remove the extern for flag_renumber_insns.
16861         * rtl.h: Remove the prototype for renumber_insns.
16862         * toplev.c (flag_renumber_insns): Remove.
16863
16864 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
16865
16866         Revert for x86 darwin:
16867         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
16868
16869         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
16870         code before the following patch under TARGET_MACHO.
16871         (ix86_function_value_regno_p): Likewise.
16872
16873 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16874
16875         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
16876         COMPLEX_EXPR.
16877
16878 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
16879
16880         PR target/29682
16881         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
16882         loads to general or fp registers.  Add comments.
16883         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
16884
16885 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
16886
16887         * pointer-set.c (insert_aux): Only return insertion slot.
16888         (pointer_set_insert): Adjust.
16889         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
16890         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
16891         pointer_map_traverse): New.
16892         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
16893         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
16894         pointer_map_contains, pointer_map_traverse): Declare.
16895
16896 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
16897
16898         PR middle-end/30473
16899         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
16900         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
16901
16902 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
16903
16904         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
16905
16906         (struct _dep): New type.
16907         (dep_t): New typedef.
16908         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
16909         (DEP_STATUS): New access macro.  The macro with the same name was
16910         renamed to DEP_LINK_STATUS.
16911         (dep_init): Declare function
16912
16913         (struct _dep_link): New type.
16914         (dep_link_t): New typedef.
16915         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
16916         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
16917         (DEP_LINK_STATUS): New macro.
16918         (debug_dep_links): New debug function.
16919
16920         (struct _deps_list): New type.
16921         (deps_list_t): New typedef.
16922         (DEPS_LIST_FIRST): New access macro.
16923         (FOR_EACH_DEP_LINK): New cycle macro.
16924         (create_deps_list, free_deps_list, delete_deps_list): Declare
16925         functions.
16926         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
16927         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
16928         (copy_deps_list_change_con): Ditto.
16929
16930         (move_dep_link): Declare function.
16931
16932         (struct _dep_node): New type.
16933         (dep_node_t): New typedef.
16934         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
16935
16936         (struct haifa_insn_data.back_deps): New field to hold backward
16937         dependencies of the insn.
16938         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
16939         to deps_list_t.
16940         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
16941         Change its type to deps_list_t.
16942         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
16943         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
16944         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
16945
16946         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
16947
16948         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
16949
16950         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
16951         and all callers.
16952         (dep_cost): Declare.
16953
16954         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
16955         (ds_to_dk, dk_to_ds): New functions.
16956
16957         (init_dep_1): New static function.
16958         (init_dep): New function.
16959         (copy_dep): New static function.
16960
16961         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
16962         functions.
16963         (detach_dep_link): New static function.
16964         (move_dep_link): New function.
16965
16966         (dep_links_consistent_p, dump_dep_links): New static functions.
16967         (debug_dep_links): New debugging function.
16968
16969         (deps_obstack, dl_obstack, dn_obstack): New static variables.
16970
16971         (alloc_deps_list, init_deps_list): New static functions.
16972         (create_deps_list): New function.
16973         (clear_deps_list): New static function.
16974         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
16975         (deps_list_consistent_p, dump_deps_list): New static functions.
16976         (debug_deps_list): New function.
16977         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
16978         functions.
16979         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
16980
16981         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
16982         use new scheduler dependencies lists.
16983         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
16984         (sched_analyze): Ditto.  Initialize dependencies lists.
16985         (add_forw_dep, compute_forward_dependences): Update to use new
16986         scheduler dependencies lists.
16987
16988         (init_dependency_caches): Init deps_obstack.
16989         (free_dependency_caches): Free deps_obstack.
16990
16991         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
16992         new scheduler dependencies lists.
16993         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
16994         (add_back_forw_dep, delete_back_forw_dep): Ditto.
16995
16996         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
16997         Update to use new scheduler dependencies lists.
16998         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
16999         (debug_dependencies): Ditto.
17000         (schedule_region): Update comments.
17001
17002         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
17003         scheduler dependencies lists.
17004         (schedule_ebb): Update comments.
17005
17006         * rtl.def (DEPS_LIST): Remove.
17007
17008         * lists.c (unused_deps_list): Remove.
17009         (free_list): Update assertions.
17010
17011         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
17012         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
17013
17014         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
17015         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
17016
17017         * haifa-sched.c (comments): Update.
17018         (insn_cost1): Remove.  Inline the code into insn_cost ().
17019         (insn_cost): Update to use new scheduler dependencies lists.  Move
17020         processing of the dependency cost to dep_cost ().
17021         (dep_cost): New function.  Use it instead of insn_cost () when
17022         evaluating cost of the dependency.  Use compatible interface to
17023         interact with the target.
17024         (priority): Update to use new scheduler dependencies lists.
17025         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
17026         with greater number of insns that depend on the insn.
17027         (schedule_insn): Update to use new scheduler dependencies lists.  Add
17028         code to free backward dependencies lists.  Inline and optimize code
17029         from resolve_dep () - see PR28071.
17030         (ok_for_early_queue_removal): Update to use new scheduler dependencies
17031         lists.  Update call to targetm.sched.is_costly_dependence hook.
17032
17033         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
17034         scheduler dependencies lists.
17035
17036         (resolve_dep): Remove.  Move the logic to schedule_insn ().
17037         (init_h_i_d): Initialize dependencies lists.
17038
17039         (process_insn_depend_be_in_spec): Rename to
17040         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
17041         dependencies lists.
17042         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
17043         Update to use new scheduler dependencies lists.
17044         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
17045
17046         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
17047         new scheduler dependencies lists.
17048         (build_intra_loop_deps): Ditto.
17049
17050         * target.h (struct _dep): Declare to use in
17051         gcc_target.sched.is_costly_dependence.
17052         (struct gcc_target.sched.adjust_cost): Fix typo.
17053         (struct gcc_target.sched.is_costly_dependence): Change signature to
17054         use single dep_t parameter instead of an equivalent triad.
17055         (struct gcc_target.sched.adjust_cost_2): Remove.
17056
17057         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
17058
17059         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
17060
17061         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
17062         documentation.
17063         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
17064
17065         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
17066         (REG_DEP_TRUE): Document.
17067
17068         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
17069         Change signature to correspond to the targetm.sched.adjust_cost hook.
17070         Update use in TARGET_SCHED_ADJUST_COST_2.
17071         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
17072         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
17073         new scheduler dependencies lists.
17074         (ia64_gen_check): Ditto.
17075
17076         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
17077         scheduler dependencies lists.
17078
17079         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
17080         signature to correspond to the targetm.sched.is_costly_dependence hook.
17081         (is_costly_group): Update to use new scheduler dependencies lists.
17082
17083         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
17084         instead of INSN_COST () macro.
17085
17086 2007-02-01  Ian Lance Taylor  <iant@google.com>
17087
17088         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
17089
17090 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
17091
17092         * pa.md (tp_load): Correct mfctl instruction syntax.
17093
17094 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
17095
17096         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
17097         altivec_padding_size calculation on AIX.  Improve comment, add
17098         assert to verify that it's right.
17099
17100         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
17101         64-bit.
17102
17103 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
17104
17105         PR inline-asm/28686
17106         * global.c (global_alloc): Add mising initialization of
17107         ELIMINABLE_REGSET.
17108
17109 2007-02-01  Roger Sayle  <roger@eyesopen.com>
17110
17111         * alias.c (init_alias_analysis): Correct whitespace.
17112         * bb-reorder.c (fix_edges_for_rarely_executed_code,
17113         partition_hot_cold_basic_blocks): Likewise.
17114         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
17115         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
17116         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
17117         fold_builtin_snprintf_chk, fold_builtin_printf,
17118         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
17119         do_mpfr_arg3, do_mpfr_sincos): Likewise.
17120         * cfgcleanup.c (cleanup_cfg): Likewise.
17121         * cfgexpand.c (tree_expand_cfg): Likewise.
17122         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
17123         * function.c (get_next_funcdef_no): Likewise.
17124         * gengtype.c (main): Likewise.
17125         * genmodes.c (main): Likewise.
17126         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
17127         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
17128         * ifcvt.c (noce_emit_move_insn): Likewise.
17129         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
17130         Likewise.
17131         * stor-layout.c (get_best_mode): Likewise.
17132         * tree-ssa-loop-niter.c (get_val_for): Likewise.
17133         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
17134         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
17135         perform_var_substitution, solve_graph): Likewise.
17136         * tree-vrp.c (vrp_finalize): Likewise.
17137
17138 2007-02-01  Ian Lance Taylor  <iant@google.com>
17139
17140         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
17141         high part of a paradoxical subreg, return a constant zero.
17142
17143 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
17144
17145         * toplev.c (lang_dependent_init): Call init_set_costs.
17146         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
17147
17148 2007-02-01  Richard Guenther  <rguenther@suse.de>
17149
17150         PR middle-end/30656
17151         * fold-const.c (fold_negate_expr): Allow negating a
17152         constant if overflow does not change.
17153
17154 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17155
17156         * doc/c-tree.texi (Expression trees): Improve markup.
17157         * doc/tm.texi (Register Classes, Addressing Modes)
17158         (Floating Point): Fix spacing after abbreviations.  Fix some
17159         typos.
17160
17161 2007-02-01  Ben Elliston  <bje@au.ibm.com>
17162
17163         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
17164         * doc/contrib.texi: Likewise.
17165         * doc/install.texi: Likewise.
17166
17167 2007-01-31  Richard Henderson  <rth@redhat.com>
17168             Ian Lance Taylor  <iant@google.com>
17169
17170         * lower-subreg.c: New file.
17171         * rtl.def (CONCATN): Define.
17172         * passes.c (init_optimization_passes): Add pass_lower_subreg and
17173         pass_lower_subreg2.
17174         * emit-rtl.c (update_reg_offset): New static function, broken out
17175         of gen_rtx_REG_offset.
17176         (gen_rtx_REG_offset): Call update_reg_offset.
17177         (gen_reg_rtx_offset): New function.
17178         * regclass.c: Revert patch of 2006-03-05, restoring
17179         reg_scan_update.
17180         (clear_reg_info_regno): New function.
17181         * dwarf2out.c (concatn_loc_descriptor): New static function.
17182         (loc_descriptor): Handle CONCATN.
17183         * common.opt (fsplit_wide_types): New option.
17184         * opts.c (decode_options): Set flag_split_wide_types when
17185         optimizing.
17186         * timevar.def (TV_LOWER_SUBREG): Define.
17187         * rtl.h (gen_reg_rtx_offset): Declare.
17188         (reg_scan_update): Declare.
17189         * regs.h (clear_reg_info_regno): Declare.
17190         * tree-pass.h (pass_lower_subreg): Declare.
17191         (pass_lower_subreg2): Declare.
17192         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
17193         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
17194         -fsplit-wide-types.
17195         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
17196         * Makefile.in (OBJS-common): Add lower-subreg.o.
17197         (lower-subreg.o): New target.
17198
17199 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
17200
17201         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
17202
17203 2007-01-31  Anatoly Sokolov <aesok@post.ru>
17204
17205         PR target/19087
17206         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
17207
17208 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17209
17210         PR middle-end/29335
17211         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
17212
17213 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
17214
17215         * cfgloop.h: Include vec-prim.h.
17216         (enum li_flags): Remove LI_ONLY_OLD.
17217         (loop_iterator): Changed.
17218         (fel_next, fel_init): Iterate over loop tree.
17219         (FOR_EACH_LOOP_BREAK): New macro.
17220         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
17221         FOR_EACH_LOOP.
17222         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
17223         * modulo-sched.c (sms_schedule): Ditto.
17224         * tree-vectorizer.c (vectorize_loops): Ditto.
17225         * doc/loop.texi: Update information on loop numbering and behavior of
17226         FOR_EACH_LOOP wrto new loops.
17227         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
17228         add_to_evolution_1): Test nestedness of loops instead of comparing
17229         their numbers.
17230         * tree-chrec.c (chrec_fold_plus_poly_poly,
17231         chrec_fold_multiply_poly_poly, chrec_evaluate,
17232         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
17233         reset_evolution_in_loop): Ditto.
17234         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
17235
17236 2007-01-31  Dirk Mueller  <dmueller@suse.de>
17237
17238         * c-common.c (warn_about_parentheses): Separate warning about
17239         un-parenthized sequence of comparison operators from the one
17240         which is supposed to warn about x <= y <= z.
17241
17242 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
17243
17244         * optabs.h (enum optab_index): Add new OTI_isinf.
17245         (isinf_optab): Define corresponding macro.
17246         * optabs.c (init_optabs): Initialize isinf_optab.
17247         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
17248         patterns.
17249         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
17250         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
17251         using isinf_optab.
17252         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
17253         expand_builtin_interclass_mathfn.
17254         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
17255         * config/i386/i386.md (UNSPEC_FXAM): New constant.
17256         (fxam<mode>2_i387): New insn pattern.
17257         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
17258         built-in functions as x87 inline asm.
17259
17260 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
17261
17262         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
17263
17264 2007-01-30  Eric Christopher  <echristo@apple.com>
17265
17266         * config.gcc: Add geode.
17267
17268 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
17269
17270         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
17271         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
17272         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
17273         value-prof.c: Fix comment typos.
17274
17275 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17276
17277         PR c++/24745
17278         * doc/invoke.texi (Wpointer-arith): Document warning.
17279
17280 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
17281
17282         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
17283         the list of discrepancies from the draft TR.
17284
17285 2007-01-30  Dirk Mueller  <dmueller@suse.de>
17286
17287         PR c++/30601
17288         * doc/invoke.texi (-Wreturn-type): Update description to
17289         match new behavior.
17290
17291 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
17292
17293         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
17294
17295 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
17296
17297         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
17298         to handle optabs that operate on floating point input argument and
17299         output to integer output.
17300         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
17301         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
17302         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
17303         expand_builtin_interclass_mathfn ().
17304         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
17305         (ilogbsi2): Remove.
17306         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
17307         ilogbl built-in functions as x87 intrinsics.
17308
17309 2007-01-30  Richard Guenther  <rguenther@suse.de>
17310
17311         PR middle-end/27657
17312         * dwarf2out.c (reference_to_unused): Query varpool if the
17313         variable was output.
17314
17315 2007-01-30  Richard Guenther  <rguenther@suse.de>
17316
17317         PR middle-end/30313
17318         * passes.c (execute_one_pass): Reset in_gimple_form to not
17319         confuse non-unit-at-a-time mode.
17320
17321 2007-01-29  Roger Sayle  <roger@eyesopen.com>
17322             Richard Guenther  <rguenther@suse.de>
17323
17324         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
17325         avoid undefined behaviour on overflow.  Use force_fit_type_double
17326         to construct the constant with the specified TREE_OVERFLOW.
17327
17328 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
17329
17330         * config/dfp-bit.c: Add parameterized support for fp exceptions.
17331         * config/dfp-bit.h: Ditto.
17332
17333 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17334
17335         * c-decl.c (pop_scope): Replace warnings with call to
17336         warn_for_unused_label.
17337         * c-common.h (warn_for_unused_label): Declare.
17338         * c-common.c (warn_for_unused_label): Define.
17339
17340 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17341
17342         * tree-optimize.c (update_inlined_to_pointers): Delete unused
17343         function.
17344
17345 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
17346
17347         * Makefile.in (USER_H): Remove decfloat.h.
17348         * ginclude/decfloat.h: Delete, moving contents to ...
17349         * ginclude/float.h: Add support for decimal floating point,
17350         guarded by __STDC_WANT_DEC_FP__.
17351
17352 2007-01-29  Mike Stump  <mrs@apple.com>
17353
17354         * doc/gccint.texi (Top): Rename Loop Representation to Loop
17355         Analysis and Representation to resolve case insensitive conflict.
17356         * doc/loop.texi (Loop Analysis and Representation): Likewise.
17357
17358 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
17359
17360         * tree.h (struct tree_memory_tag): Add aliases member.
17361         (MTAG_ALIASES): New macro.
17362         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
17363         (add_may_alias): Remove pointer-set. Update for may_aliases being
17364         a bitmap.
17365         (mark_aliases_call_clobbered): Update for may_aliases being a
17366         bitmap.
17367         (compute_tag_properties): Ditto.
17368         (create_partition_for): Ditto.
17369         (compute_memory_partitions): Ditto.
17370         (dump_may_aliases_for): Ditto.
17371         (is_aliased_with): Ditto.
17372         (add_may_alias_for_new_tag): Ditto.
17373         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
17374         (compute_is_aliased): New function.
17375         (compute_may_aliases): Call compute_is_aliased).
17376         (init_alias_info): Initialize alias_bitmap_obstack.
17377         (union_alias_set_into): New function.
17378         (compute_flow_sensitive_aliasing): Use union_aliases_into.
17379         (have_common_aliases_p): Rewrite to take two bitmaps and use
17380         intersection.
17381         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
17382         Update for bitmaps.
17383         (finalize_ref_all_pointers): Update for add_may_alias changes.
17384         (new_type_alias): Ditto.
17385         * tree-flow-inline.h (may_aliases): Return a bitmap.
17386         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
17387         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
17388         may_aliases being a bitmap.
17389         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
17390         may_aliases now returns a bitmap.
17391         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
17392         being a bitmap.
17393         * tree-ssa-operands.c (add_virtual_operand): Update for
17394         may_aliases being a bitmap.
17395
17396 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
17397
17398         PR tree-optimization/30630
17399         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
17400         variable as changed.
17401
17402 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
17403
17404         PR c++/28266
17405         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
17406         expanded only once even if an error occurs.
17407
17408 2007-01-29  Ben Elliston  <bje@au.ibm.com>
17409
17410         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
17411         (__gcov_average_profiler): Likewise.
17412         (__gcov_ior_profiler): Likewise.
17413         (__gcov_merge_ior): Likewise.
17414
17415 2007-01-28  Jan Hubicka  <jh@suse.cz>
17416
17417         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
17418         * value-prof.c (stringop_block_profile): Likewise.
17419
17420 2007-01-28  Jan Hubicka  <jh@suse.cz>
17421
17422         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
17423         Add variant handling histograms; add wrapper.
17424         (clear_storage_via_libcall): Export.
17425         (emit_block_move_hints): Break out from ...; add histograms.
17426         (emit_block_move): ... this one.
17427         (clear_storage_hints): Break out from ...; add histograms.
17428         (clear_storage): ... this one.
17429         (set_storage_via_memset): Handle histogram.
17430         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
17431         (clear_storage_hints, clear_storage_via_libcall): Declare.
17432         (set_storage_via_setmem): Update prototype.
17433         * doc/md.texi (movmem, setmem): Document new arguments.
17434
17435         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
17436         Add new histograms.
17437         (stringop_block_profile): New global function.
17438         (tree_stringops_values_to_profile): Profile block size and alignment.
17439         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
17440         HIST_TYPE_IOR.
17441         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
17442         (stringop_block_profile): Declare.
17443         * builtins.c: Include value-prof.h.
17444         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
17445         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
17446         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
17447         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
17448         * profile.c (instrument_values): Add new counters.
17449         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
17450         calls.
17451         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
17452         (tree_init_edge_profiler): Build new profilers.
17453         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
17454         (pass_tree_profile): Add dump.
17455         (tree_profile_hooks): Update.
17456         * Makefile.in (LIBGCOV): Add new constants.
17457         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
17458         __gcov_ior_profiler): New.
17459         * i386.md (movmem/setmem expanders): Add new optional arguments.
17460
17461 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
17462
17463         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
17464
17465 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
17466
17467         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
17468         (tree_unswitch_single_loop): Pass eni_size_weights to
17469         tree_num_loop_insns.
17470         * tree-ssa-loop-manip.c: Include tree-inline.h.
17471         (can_unroll_loop_p): Pass eni_size_weights to
17472         tree_num_loop_insns.
17473         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
17474         Pass eni_size_weights to estimate_num_insns.
17475         * tree.h (init_inline_once): Export.
17476         * toplev.c (backend_init): Call init_inline_once.
17477         * cgraphunit.c (cgraph_process_new_functions,
17478         cgraph_analyze_function): Pass eni_inlining_weights to
17479         estimate_num_insns.
17480         * ipa-inline.c (compute_inline_parameters): Ditto.
17481         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
17482         to estimate_num_insns.
17483         (try_unroll_loop_completely): Pass eni_size_weights to
17484         tree_num_loop_insns.
17485         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
17486         ot estimate_num_insns.
17487         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
17488         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
17489         * tree-inline.c (eni_inlining_weights, eni_size_weights,
17490         eni_time_weights): New variables.
17491         (init_inline_once): Initialize them.
17492         (struct eni_data): Mew.
17493         (estimate_num_insns_1, estimate_num_insns): Use weights.
17494         * tree-inline.h (struct eni_weights_d): New.
17495         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
17496         (estimate_num_insns): Declaration changed.
17497         * cfgloop.h (tree_num_loop_insns): Declaration changed.
17498         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
17499         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
17500
17501 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
17502
17503         * tree-data-ref.c (conflict_fn): Assert that the number of affine
17504         relations in the conflict function is valid.
17505
17506 2007-01-27  Ian Lance Taylor  <iant@google.com>
17507
17508         * common.opt: Add fstrict-overflow.
17509         * opts.c (decode_options): Set flag_strict_overflow if -O2.
17510         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
17511         (TYPE_OVERFLOW_UNDEFINED): Define.
17512         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
17513         Replace all uses.
17514         * tree.h (TYPE_TRAP_SIGNED): Don't define.
17515         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
17516         (fold_negate_expr): Likewise.
17517         (make_range): Likewise.
17518         (extract_muldiv_1): Likewise.
17519         (maybe_canonicalize_comparison): Likewise.
17520         (fold_comparison): Likewise.
17521         (fold_binary): Likewise.
17522         (tree_expr_nonnegative_p): Likewise.
17523         (tree_expr_nonzero_p): Likewise.
17524         * tree-vrp.c (compare_values): Likewise.
17525         (extract_range_from_binary_expr): Likewise.
17526         (extract_range_from_unary_expr): Likewise.
17527         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
17528         Likewise.
17529         (nowrap_type_p): Likewise.
17530         * tree-scalar-evolution.c (simple_iv): Likewise.
17531         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
17532         (build_range_check): Likewise.
17533         (extract_muldiv_1): Likewise.
17534         (fold_comparison): Likewise.
17535         * tree-vrp.c (vrp_int_const_binop): Likewise.
17536         (extract_range_from_unary_expr): Likewise.
17537         * convert.c (convert_to_integer): Likewise.
17538         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
17539         (fold_comparison): Likewise.
17540         (fold_binary): Likewise.
17541         * optabs.c (optab_for_tree_code): Likewise.
17542         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
17543         * simplify-rtx.c (simplify_const_relational_operation): Check
17544         flag_strict_overflow and flag_trapv.
17545         (simplify_const_relational_operation): Likewise.
17546         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
17547         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
17548         -fstrict-overflow.
17549
17550 2007-01-27  Roger Sayle  <roger@eyesopen.com>
17551
17552         * tree.c (tree_fold_gcd): Delete.
17553         * tree.h (tree_fold_gcd): Remove prototype.
17554         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
17555         test whether one constant integer is a multiple of another.  Instead
17556         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
17557         * fold-const.c (multiple_of_p):  We've determined both TOP and
17558         BOTTOM are integer constants so we can call int_const_binop directly
17559         instead of the more generic const_binop.
17560
17561 2007-01-27  Roger Sayle  <roger@eyesopen.com>
17562
17563         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
17564         1*X check that the constant hasn't overflowed, to preserve the
17565         TREE_OVERFLOW bit.
17566         (round_up): Provide an efficient implementation when rouding-up an
17567         INTEGER_CST to a power-of-two.
17568
17569 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17570
17571         * doc/sourcebuild.texi: Add comma for clarity.
17572         * doc/extend.texi: Fix some typos.
17573         * doc/passes.texi: Likewise.
17574         * doc/cppinternals.texi: Likewise.
17575         * doc/c-tree.texi: Likewise.
17576         * doc/tree-ssa.texi: Likewise.
17577         * doc/install.texi: Likewise.
17578
17579 2007-01-27  Jan Hubicka  <jh@suse.cz>
17580
17581         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
17582         (pass_sra): Do not require alias information.
17583         * passes.c (init_optimization_passes): Add SRA
17584
17585 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
17586
17587         * tracer.c (rest_of_handle_tracer): We already cleaned
17588         up the CFG in tracer() so don't do it here again.
17589         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
17590         cleanup_cfg here, either.  And don't call renumber_insns.
17591
17592         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
17593         and BB_HEAD are in the insn stream here.  Instead make sure
17594         that BB_INSN is valid on all insns.  Also, do check here that
17595         there are no pending branch predictions...
17596         (rtl_verify_flow_info): ...instead of doing it here.  Checks
17597         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
17598         here.
17599
17600 2007-01-26  Roger Sayle  <roger@eyesopen.com>
17601
17602         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
17603         function to simplify/factorize operand order canonicalization.
17604         (ix86_fixup_binary_operands): Reorganize using the above function.
17605         (ix86_binary_operator_ok): Likewise.
17606
17607 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
17608
17609         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
17610         file scope from optimize_attrs.
17611         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
17612         up search.
17613         (optimize_attrs): Clear insn_code_values after freeing it.
17614
17615 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
17616
17617         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
17618         a parts.base assignment.
17619
17620 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
17621
17622         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
17623         (compute_subscript_distance, initialize_data_dependence_relation,
17624         finalize_ddr_dependent, analyze_ziv_subscript,
17625         analyze_siv_subscript_cst_affine,
17626         compute_overlap_steps_for_affine_univar,
17627         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
17628         analyze_siv_subscript, analyze_miv_subscript,
17629         analyze_overlapping_iterations, subscript_dependence_tester_1,
17630         compute_self_dependence, free_dependence_relation): Work
17631         with affine_fn instead of chrecs.
17632         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
17633         common_affine_function, affine_function_base,
17634         affine_function_constant_p, affine_fn_op, affine_fn_plus,
17635         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
17636         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
17637         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
17638         (all_chrecs_equal_p): Removed.
17639         * tree-data-ref.h (affine_fn, conflict_function): New types.
17640         (struct subscript): Change type of conflicting_iterations_in_a
17641         and conflicting_iterations_in_b.
17642
17643 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
17644
17645         PR other/30182
17646         * config/pa/pa.h (TARGET_HPUX_11): New.
17647         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
17648         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
17649
17650 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
17651         Richard Guenther  <rguenther@suse.de>
17652
17653         * tree-ssa-structalias.c (solve_graph): Handle case
17654         we merged the variable to another.
17655
17656 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17657
17658         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
17659         functions.
17660
17661         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
17662         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
17663
17664 2007-01-25  DJ Delorie  <dj@redhat.com>
17665
17666         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
17667         allow changes to modes which don't fit in those registers.
17668
17669         * reload1.c (choose_reload_regs): Check for invalid subregs before
17670         computing their locations, not after.
17671
17672 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
17673
17674         PR 25127
17675         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
17676         save Altivec registers in an eh_return function.
17677         (compute_vrsave_mask): Likewise.
17678         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
17679         for saving Altivec registers.
17680         (rs6000_emit_prologue): Don't allocate stack twice in
17681         eh_return function.  Correct expected value of altivec_save_offset
17682         when using save_world.  Describe save of R0 to stack when using
17683         save_world.  Describe stack pointer adjustment when using
17684         save_world.  Remove duplicated eh_return parameter register saving.
17685         Update sp_offset variable after save_world.
17686         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
17687         darwin-world.asm.
17688         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
17689         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
17690         implies Altivec.
17691
17692 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
17693
17694         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
17695
17696 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
17697
17698         PR other/30182
17699         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
17700         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
17701
17702 2007-01-25  Richard Guenther  <rguenther@suse.de>
17703
17704         * doc/invoke.texi (-Wcoverage-mismatch): Document.
17705         * common.opt (-Wcoverage-mismatch): New warning option.
17706         * coverage.c (get_coverage_counts): Ignore coverage mismatch
17707         if -Wcoverage-mismatch is given.
17708
17709 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
17710
17711         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
17712         (ipcp_driver): Change to static definition.
17713         Add dumping of the ifunctions.
17714         (constant_val_insert): Remove unused parameter. Support for SSA.
17715         (ipcp_propagate_const): Support for SSA.
17716         (ipcp_profile_bb_print): Print only analyzed nodes.
17717         (ipcp_replace_map_create): Remove support for Fortran constant
17718         for now.
17719         * ipa-prop.c (ipa_method_modify_stmt,
17720         ipa_callsite_compute_param): Support for SSA.
17721         * ipa-prop.h (ipcp_driver): Remove declaration.
17722         (IS_VALID_TREE_MAP_INDEX): Add define.
17723
17724 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
17725
17726         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
17727
17728 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17729
17730         PR middle-end/30447
17731         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
17732         constant argument to cabs and do it without checking for
17733         -funsafe-math-optimizations.
17734
17735 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
17736
17737         * c-common.h (RID_FIRST_CXX0X): New.
17738         (RID_LAST_CXX0X): New.
17739         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
17740         by -Wall.
17741         * c.opt (Wc++0x-compat): New.
17742         * doc/invoke.texi (-Wc++0x-compat): Document.
17743
17744 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17745
17746         * builtins.c (fold_builtin_carg): New.
17747         (fold_builtin_1): Use it.
17748
17749 2007-01-24  Jan Hubicka  <jh@suse.cz>
17750
17751         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
17752
17753         * ipa-inline.c (initial_insns, max_insns): Delete.
17754         (compute_max_insns): New function.
17755         (cgraph_decide_inlining_of_small_function): Use it; take minimal
17756         amount of insns as base for code growth.
17757         (cgraph_decide_inlining): Make initial_insns local; do not compute
17758         max_insns.
17759         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
17760         * doc/invoke.texi (inline-unit-growth): Update docs.
17761
17762 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
17763
17764         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
17765         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
17766         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
17767         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
17768         for CPUs that have PTA_CX16 set.
17769
17770         PR middle-end/27416
17771         * gimplify.c (omp_check_private): New function.
17772         (gimplify_scan_omp_clauses): Use it for
17773         firstprivate/lastprivate/reduction.
17774
17775         PR middle-end/30494
17776         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
17777         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
17778
17779         PR middle-end/30421
17780         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
17781         If lower_lastprivate_clauses emits some statements, append them
17782         to dlist rather than body_p and to body_p append an initializer.
17783         (lower_omp_for): Adjust caller.
17784
17785 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
17786
17787         * target.h (globalize_decl_name): New.
17788         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
17789         * output.h (default_globalize_decl_name): New.
17790         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
17791         globalize_label.
17792         (globalize_decl): Ditto.
17793         (default_globalize_decl_name): New.
17794         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
17795         (ia64_handle_version_id_attribute): New.
17796         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
17797         (ia64_asm_output_external): Use globalize_decl_name instead
17798         of globalize_label.
17799         * doc/extend.texi (version_id): New pragma.
17800         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
17801
17802 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
17803
17804         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
17805         _uleb128_t and _Unwind_SWord with _sleb128_t.
17806         * unwind-dw2.c (extract_cie_info, execute_stack_op,
17807         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
17808         Likewise.
17809         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
17810         * unwind-pe.h (read_uleb128, read_sleb128,
17811         read_encoded_value_with_base): Likewise.
17812         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
17813
17814 2007-01-24  Richard Guenther  <rguenther@suse.de>
17815
17816         * builtins.c (expand_builtin_cexpi): Get the fndecl
17817         for cexp in the correct way.
17818
17819 2007-01-24  Jan Hubicka  <jh@suse.cz>
17820
17821         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
17822         of calls.
17823
17824 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
17825
17826         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
17827         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
17828         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
17829         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
17830         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
17831         __SIZEOF_PTRDIFF_T__.
17832         * doc/cpp.texi: Documentation for the new builtin macros added.
17833
17834 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
17835
17836         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
17837         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
17838         instead of operands[2] to avoid access past the end of array.
17839
17840 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
17841
17842         * reload1.c (emit_reload_insns): Pass the reload register
17843         for a non-spill output reload through forget_old_reloads_1.
17844
17845 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
17846
17847         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
17848         _SOFT_DOUBLE if doubles use software floating-point.
17849         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
17850         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
17851         * config/rs6000/darwin-ldouble.c: Also compile functions for
17852         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
17853         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
17854         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
17855         commented-out long double override.
17856         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
17857         * config/rs6000/eabispe.h: Likewise.
17858         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
17859         long double for non-SPE.
17860         (rs6000_handle_option): Likewise.
17861         (invalid_e500_subreg): Disallow more subregs involding DImode,
17862         DFmode, TImode or TFmode.
17863         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
17864         E500 double.
17865         (legitimate_lo_sum_address_p): Also check for TFmode for E500
17866         double.
17867         (rs6000_legitimize_address): Also handle TFmode for E500 double.
17868         (rs6000_legitimize_reload_address): Also handle TFmode for E500
17869         double.
17870         (rs6000_legitimate_address): Also check for TFmode for E500
17871         double.
17872         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
17873         (spe_build_register_parallel): Handle TFmode and TCmode.
17874         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
17875         double.
17876         (function_arg): Handle TFmode and TCmode for E500 double.
17877         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
17878         in general.
17879         (print_operand): Handle TFmode and TImode for %y.
17880         (rs6000_generate_compare): Handle TFmode comparisons for E500
17881         double.
17882         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
17883         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
17884         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
17885         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
17886         TFmode for E500 double.
17887         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
17888         (floatsidf2): Enable for E500 double.
17889         (movtf_softfloat): Use rs6000_nonimmediate_operand.
17890         (extenddftf2): Change to extenddftf2_fprs.
17891         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
17892         depending on TARGET_E500_DOUBLE.
17893         (extendsftf2): Enable for E500 double.
17894         (trunctfdf2): Enable for E500 double.
17895         (trunctfsf2): Change to trunctfsf2_fprs.
17896         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
17897         depending on TARGET_E500_DOUBLE.
17898         (floatsitf2): Enable for E500 double.
17899         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
17900         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
17901         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
17902         (negtf2): Change to negtf2_internal.
17903         (negtf2): New expander.
17904         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
17905         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
17906         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
17907         (movdi_internal32): Use rs6000_nonimmediate_operand.
17908         (unnamed splitter): Likewise.
17909         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
17910         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
17911         (SPE64TF, DITI): New mode macros.
17912         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
17913         modes.
17914         (frob_tf_ti): New.
17915         (frob_<mode>_di_2): New.
17916         (frob_tf_di_8_2): New.
17917         (frob_di_df): Change to frob_di_<mode>; allow more modes.
17918         (frob_ti_tf): New.
17919         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
17920         more modes.
17921         (frob_ti_<mode>_8_2): New.
17922         (frob_ti_tf_2): New.
17923         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
17924         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
17925         TFmode.
17926         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
17927         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
17928         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
17929         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
17930         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
17931         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
17932         tsttflt_gp): New.
17933
17934 2007-01-23  Ian Lance Taylor  <iant@google.com>
17935
17936         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
17937         insn-*.o first.
17938         (OBJS-archive): Reformat, alphabetize.
17939         (OBJS): Change out_object_file to OBJS-md.
17940
17941 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
17942
17943         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
17944         JUMP_P and CALL_P predicates where applicable.
17945         * config/i386/i386.c: Ditto.
17946         * config/i386/i386.md: Ditto.
17947         * config/i386/mmx.md: Ditto.
17948         * config/i386/predicates.md: Ditto.
17949
17950 2007-01-22  Andreas Schwab  <schwab@suse.de>
17951
17952         * config/m68k/m68k.h: Fix comment.
17953
17954 2007-01-22  Jan Hubicka  <jh@suse.cz>
17955
17956         * passes.c (init_optimization_passes): Do not rerun
17957         pass_early_warn_uninitialized.
17958
17959 2007-01-22  Richard Guenther  <rguenther@suse.de>
17960
17961         PR tree-optimization/30038
17962         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
17963         function.
17964         (execute_cse_sincos_1): Likewise.
17965         (execute_cse_sincos): Likewise.
17966         (gate_cse_sincos): Likewise.
17967         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
17968         the cexpi() canonicalization of sincos().
17969         * tree-pass.h (pass_cse_sincos): Declare.
17970         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
17971
17972 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
17973
17974         PR rtl-optimization/29329
17975         * combine.c (replaced_rhs_insn): Rename to i2mod.
17976         (replaced_rhs_value): Rename to i2mod_new_rhs.
17977         (i2mod_old_rhs): New global variable.
17978         (combine_instructions): Adjust for above change.  Save a copy of
17979         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
17980         note are substituted in the second instruction.
17981         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
17982         ditch the note if it pertains to the second eliminated register
17983         and this register is mentioned in i2mod_old_rhs.
17984
17985         Revert:
17986         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
17987
17988         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
17989         the insn to which the note was originally attached.
17990
17991 2007-01-21  Jan Hubicka  <jh@suse.cz>
17992
17993         * ipa-inline.c (inlining_mode): Comment, move up.
17994         (cgraph_decide_inlining_incrementally): Do not perform inlining
17995         itself; fix handling of flattening of self recursive functions.
17996         (cgraph_find_cycles): Remove.
17997         (cgraph_flatten_node): Remove.
17998         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
17999         (try_inline): New function.
18000         (cgraph_early_inlining): Update call of
18001         cgraph_decide_inlining_incrementally.  Apply inlining here.
18002         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
18003
18004 2007-01-21  Dirk Mueller  <dmueller@suse.de>
18005
18006         PR bootstrap/30511
18007         * tree-vrp.c (check_array_bounds): do not warn
18008         about ADDR_EXPR's of ARRAY_REF's which are immediately
18009         used in binary expressions.
18010
18011 2007-01-21  Ira Rosen  <irar@il.ibm.com>
18012
18013         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
18014         read_write_dep and macros for its access.
18015         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
18016         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
18017         argument, call vect_check_interleaving for every independent pair of
18018         data-refs. Mark loads that access the same memory location as a store
18019         in the loop.
18020         (vect_check_dependences): Remove.
18021         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
18022         call, fix the call to vect_analyze_data_ref_dependence.
18023         (vect_analyze_data_ref_access): For statements that access the same
18024         data-ref, check that they are not stores; for loads, check that there
18025         is no store that access the same location.
18026
18027 2007-01-20  Roger Sayle  <roger@eyesopen.com>
18028             Joseph Myers  <joseph@codesourcery.com>
18029
18030         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
18031         (-fdump-rtl-stack): Likewise.
18032         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
18033         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
18034         (-mpt-fixed): Use @minus{} for minus sign.
18035         (Using Precompiled Headers): Fix under/overfull hbox.
18036
18037 2007-01-20  Jan Hubicka  <jh@suse.cz>
18038
18039         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
18040         place within annotation.
18041
18042 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18043
18044         * pa.c (output_move_double): Change array size of xoperands to 4.
18045
18046 2007-01-20  Jan Hubicka  <jh@suse.cz>
18047
18048         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
18049         as temporary.
18050
18051 2007-01-19  Ian Lance Taylor  <iant@google.com>
18052
18053         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
18054         constant to unsigned HOST_WIDE_INT before negating.
18055
18056 2007-01-19  Ian Lance Taylor  <iant@google.com>
18057
18058         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
18059         to unsigned.
18060         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
18061         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
18062         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
18063         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
18064         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
18065         (realloc_vdef, realloc_vuse): Change second parameter to
18066         unsigned.
18067         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
18068         fields to unsigned.
18069         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
18070         unsigned. Change x and lim locals to unsigned.
18071         (realloc_vdef, realloc_vuse): Change num_elem parameter to
18072         unsigned.
18073         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
18074         (copy_virtual_operands): Change i and n locals to unsigned.
18075
18076 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18077
18078         PR middle-end/29335
18079         * builtins.c (fold_builtin_1): Handle builtin fdim.
18080
18081 2007-01-20  Jan Hubicka  <jh@suse.cz>
18082
18083         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
18084         * tree-ssa-structalias.c (compute_points_to_sets): Do call
18085         init_alias_heapvars.
18086         (init_alias_heapvars): Initialize only when not already initialized.
18087         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
18088
18089 2007-01-19  Roger Sayle  <roger@eyesopen.com>
18090
18091         * common.opt (fsigned-zeros): New command line option.
18092         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
18093         of flag_unsafe_math_optimizations.
18094         * opts.c (set_fast_math_flags): The -ffast-math command line option
18095         implies -fno-signed-zeros.
18096         (fast_math_flags_set_p): Likewise.
18097
18098         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
18099         the documentation of -ffast-math appropriately.  Wrap long lines.
18100
18101 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
18102
18103         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
18104         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
18105
18106 2007-01-19  Tomas Bily  <tbily@suse.cz>
18107
18108         * cgraphunit.c (cgraph_finalize_function): Updating of pid
18109         * tree-profile.c:
18110         (tree_init_ic_make_global_vars): New function
18111         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
18112         (tree_gen_ic_profiler): New function
18113         (tree_gen_ic_func_profiler): New function
18114         (tree_profiling): Added calling of tree_gen_ic_func_profiler
18115         (tree_profile_hooks): Added hook for indirec/virtual calls
18116         * value-prof.c (tree_find_values_to_profile): New case for
18117         indirect calls
18118         (tree_values_to_profile): Call for determining indirect/virtual
18119         counters
18120         (tree_indirect_call_to_profile): New function
18121         (tree_ic_transform): New function
18122         (tree_ic): New function
18123         (find_func_by_pid): New function
18124         (init_pid_map): New function
18125         (tree_value_profile_transformations): Added check for
18126         indirect/virtual call transformation
18127         * value-prof.h (enum hist_type): New counter type for
18128         indirect/virtual calls
18129         (profile_hooks): Added new hook for profiling indirect/virtual
18130         calls
18131         * profile.c (instrument_values): New case for indirect/virtual
18132         call added
18133         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
18134         (GCOV_COUNTER_V_INDIR): New counter type
18135         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
18136         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
18137         call added
18138         * cgraph.c: Definition of cgraph_max_pid
18139         (cgraph_create_node): Default init of pid attribute
18140         * cgraph.h: Declaration of cgraph_max_pid
18141         (struct cgraph_node): Added pid attribute
18142         * libgcov.c (__gcov_indirect_call_profiler): New function
18143         (__gcov_one_value_profiler_body): New function
18144         (__gcov_one_value_profiler): Body was moved to
18145         __gcov_one_value_profiler_body and calls it
18146
18147 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
18148
18149         * doc/gty.texi (Options): Document the mark_hook option to GTY.
18150         * gengtype.c (write_types_data, write_func_for_structure,
18151         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
18152         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
18153         (walk_type, write_func_for_structure): Generate the mark_hook if
18154         needed.
18155
18156 2007-01-19  Jan Hubicka  <jh@suse.cz>
18157
18158         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
18159         'early' argument take inlining mode argument specifying whether to
18160         inline for size/speeed or all functions; add support for flattening;
18161         improve dumpting.
18162         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
18163
18164 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18165
18166         PR c++/17947
18167         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
18168         the name of the declared identifier.
18169
18170 2007-01-19  Dirk Mueller  <dmueller@suse.de>
18171
18172         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
18173         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
18174         duplicate evaluation.
18175
18176 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
18177
18178         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
18179         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
18180         to XFMode, use acosxf2 and truncate result to requested mode.
18181         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
18182         (asin<mode>2): Similarly, with asin expanders.
18183         (*fscalexf4_i387): Rename from *fscalexf4.
18184         (expNcorexf3): New expander.
18185         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
18186         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
18187         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
18188         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
18189         patterns for SSE math.
18190         (exp10<mode>2): Similarly, with exp10 expanders.
18191         (exp2<mode>2): Similarly, with exp2 expanders.
18192         (expm1<mode>2): Similarly, with expm1 expanders.
18193         (ldexp<mode>3): Similarly, with ldexp expanders.
18194         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
18195         Use gen_truncxf<mode>2_i387_noop to truncate result.
18196
18197 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
18198
18199         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
18200         for ColdFire targets.
18201
18202 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
18203             Richard Sandiford  <richard@codesourcery.com>
18204
18205         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
18206         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
18207         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
18208         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
18209         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
18210         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
18211
18212 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
18213
18214         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
18215         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
18216         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
18217         (*adddi_dilshr32_cf): New pattern.
18218         (adddi3, subdi3): Remove first alternatives.
18219
18220 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
18221
18222         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
18223         implemented using move.l, do not use its cc result for floating-point
18224         comparisons.
18225
18226 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
18227
18228         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
18229         from accepting 's' constraints if flag_pic.
18230
18231 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
18232
18233         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
18234         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
18235         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
18236         condition from TARGET_68881 to TARGET_HARD_FLOAT.
18237
18238 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
18239
18240         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
18241         ColdFire alternatives.
18242         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
18243         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
18244         architectures that support ff1 instruction.
18245
18246 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
18247             Julian Brown  <julian@codesourcery.com>
18248
18249         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
18250         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
18251         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
18252         Add commentary.
18253
18254 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
18255
18256         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
18257         and return a bool.
18258         (output_move_const_into_data_reg, output_move_simode_const): Delete.
18259         * config/m68k/m68k.c (const_method, const_int_cost): Take a
18260         HOST_WIDE_INT instead of an rtx.
18261         (m68k_rtx_costs): Update call accordingly.
18262         (output_move_const_into_data_reg): Likewise.  Fix formatting.
18263         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
18264         Return a bool.
18265         (output_move_simode_const): Update calls after above changes.
18266         Rework to use automatic variables and predicates like MEM_P.
18267         * config/m68k/m68k.md (pushexthisi_const): Update call to
18268         valid_mov3q_const.
18269
18270 2007-01-19  Dirk Mueller  <dmueller@suse.de>
18271
18272         * tree-ssa-alias.c (perform_var_substitution): Fix typo
18273         in dump_flags test.
18274
18275 2007-01-19  Richard Guenther  <rguenther@suse.de>
18276
18277         * builtins.c (expand_builtin_cexpi): Fall back to expanding
18278         via cexp in case sincos is not available.
18279
18280 2007-01-19  Richard Guenther  <rguenther@suse.de>
18281
18282         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
18283         * defaults.h (TARGET_HAS_SINCOS): Default to off.
18284         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
18285         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
18286         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
18287         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
18288         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
18289         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
18290
18291 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
18292
18293         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
18294         New insn patterns.
18295         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
18296         (atan2xf3): Directly generate RTL pattern.
18297         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
18298         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
18299         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
18300         disable patterns for SSE math.
18301         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
18302         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
18303         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
18304         disable patterns for SSE math.
18305
18306 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
18307
18308         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
18309
18310 2007-01-18  Roger Sayle  <roger@eyesopen.com>
18311
18312         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
18313         VIEW_CONVERT_EXPR to the same type as it's operand.
18314
18315 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
18316
18317         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
18318         configured for long double 128.
18319
18320 2007-01-18  Mike Stump  <mrs@apple.com>
18321
18322         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
18323         error.
18324
18325 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
18326
18327         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
18328         type correct.
18329
18330 2007-01-18  Jan Hubicka  <jh@suse.cz>
18331
18332         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
18333         greater than NUM_VOP_FREE_BUCKETS.
18334
18335 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
18336
18337         * tree-ssa-structalias.c: Update comments.
18338         (ptabitmap_obstack): Removed.
18339         (pta_obstack): New.
18340         (oldpta_obstack): Ditto.
18341         (stats): Add a few members.
18342         (struct variable_info): Remove node, complex, address_taken, and
18343         indirect_target members. Add oldsolution member.
18344         (new_var_info): Do not initialize removed members.
18345         (constraint_expr_type): Remove INCLUDES.
18346         (constraint_graph): Add size, implicit_preds, rep,
18347         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
18348         (FIRST_REF_NODE): New macro.
18349         (LAST_REF_NODE): Ditto.
18350         (FIRST_ADDR_NODE): Ditto.
18351         (find): New function.
18352         (unite): Ditto.
18353         (dump_constraint): Do not handle INCLUDES.
18354         (insert_into_complex): Do not insert duplicate constraints.
18355         (condense_varmap_nodes): Renamed and rewritten into ...
18356         (merge_node_constraints): This. Also fix bug in handling of
18357         offseted copy constraints.
18358         (clear_edges_for_node): No longer need to deal with preds at all,
18359         or removing associated preds/succs.
18360         (merge_graph_nodes): Deal with indirect_cycles.
18361         Don't deal with predecessors.
18362         (add_implicit_graph_edge): New function.
18363         (add_pred_graph_edge): Ditto.
18364         (add_graph_edge): Don't deal with predecessors.
18365         (build_constraint_graph): Removed.
18366         (build_pred_graph): New function.
18367         (build_succ_graph): Ditto.
18368         (struct scc_info): Removed in_component. Added roots, dfs, and
18369         node_mapping. Remove visited_index, unification_queue.
18370         (scc_visit): Deal with union-find we do now.
18371         Deal with cycles with REF nodes.
18372         (collapse_nodes): Renamed and rewritten to ...
18373         (unify_nodes): This.
18374         (process_unification_queue): Removed.
18375         (topo_visit): Cleanup
18376         (do_da_constraint): Use find.
18377         (do_sd_constraint): Ditto.
18378         (do_ds_constraint): Ditto.
18379         (do_complex_constraint): Ditto.
18380         (init_scc_info): Update for removed and added members.
18381         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
18382         (find_indirect_cycles): This.
18383         (equivalence_class): New variable.
18384         (label_visit): New function.
18385         (perform_variable_substitution): Rewritten.
18386         (free_var_substitution_info): New function.
18387         (find_equivalent_node): Ditto.
18388         (move_complex_constraints): Ditto.
18389         (eliminate_indirect_cycles): Ditto.
18390         (solve_graph): Only propagate changed bits.
18391         Use indirect cycle elimination.
18392         Use find.
18393         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
18394         (tree_id_eq): Renamed to ...
18395         (tree_vi_eq): This. Update for member change
18396         (insert_id_for_tree): Renamed and rewritten to ...
18397         (insert_vi_for_tree): This.
18398         (lookup_id_for_tree): Renamed and rewritten to ...
18399         (lookup_vi_for_tree): This.
18400         (get_id_for_tree): Renamed and rewritten to ...
18401         (get_vi_for_tree): Ditto.
18402         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
18403         (process_constraint): Don't handle INCLUDES.
18404         Remove special ADDRESSOF case.
18405         (find_func_aliases): Rewrite to use vi functions instead of id
18406         ones.
18407         (create_function_info_for): Ditto.
18408         (create_variable_info_for): Ditto.
18409         (intra_create_variable_infos): Ditto.
18410         (merge_smts_into): Ditto.
18411         (find_what_p_points_to): Ditto.
18412         (init_base_vars): Ditto.
18413         (init_alias_vars): Ditto.
18414         (remove_preds_and_fake_succs): New function.
18415         (dump_sa_points_to_info): Dump new stats.
18416         (dump_solution_for_var): Use find.
18417         (set_used_smts): Fix formatting.
18418         (compute_points_to_sets): Updated for new functions.
18419         (ipa_pta_execute): Ditto.
18420
18421 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
18422             Richard Sandiford  <richard@codesourcery.com>
18423
18424         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
18425         parallels.
18426         * calls.c (expand_call): If the return value is a PARALLEL,
18427         extract its first member.
18428         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
18429         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
18430         use FUNCTION_EXTRA_EPILOGUE.
18431         (m68k_function_value): Return a PARALLEL if the return value
18432         is of a pointer type.
18433         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
18434         (FUNCTION_EXTRA_EPILOGUE): Remove.
18435         * config/m68k/m68k.md (D0_REG): New constant.
18436
18437 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
18438
18439         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
18440         output a NOP for empty epilogues.
18441
18442 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
18443
18444         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
18445         before function.  Extend register save check to include all
18446         registers, not just integer ones.
18447
18448 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
18449
18450         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
18451         (m68k_use_return_insn): ...this.
18452         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
18453         * config/m68k/m68k.c (use_return_insn): Rename to...
18454         (m68k_use_return_insn): ...this.
18455         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
18456         of USE_RETURN_INSN.
18457
18458 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
18459
18460         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
18461         nearest even, fix denormal rounding overflow.
18462
18463 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
18464
18465         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
18466         f%$smove and f%$move.
18467         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
18468         (extendsfdf2_cf): Use fdmove instead of f%&move.
18469         (truncdfsf2_cf): Use fsmove instead of f%$smove.
18470         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
18471
18472 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
18473
18474         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
18475         GPR<-GPR moves.
18476
18477 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
18478
18479         * real.h (real_format): Add a canonical_nan_lsbs_set field.
18480         (coldfire_single_format): Declare.
18481         (coldfire_double_format): Likewise.
18482         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
18483         of qnan_msb_set to determine the lower bits of a canonical
18484         NaN significand.
18485         (encode_ieee_double): Likewise.
18486         (encode_ieee_quad): Likewise.
18487         (ieee_single_format): Initialize canonical_nan_lsbs_set.
18488         (mips_single_format): Likewise.
18489         (ieee_double_format): Likewise.
18490         (mips_double_format): Likewise.
18491         (ieee_extended_motorola_format): Likewise.
18492         (ieee_extended_intel_96_format): Likewise.
18493         (ieee_extended_intel_128_format): Likewise.
18494         (ieee_extended_intel_96_round_53_format): Likewise.
18495         (ibm_extended_format): Likewise.
18496         (mips_extended_format): Likewise.
18497         (ieee_quad_format): Likewise.
18498         (mips_quad_format): Likewise.
18499         (vax_f_format): Likewise.
18500         (vax_d_format): Likewise.
18501         (vax_g_format): Likewise.
18502         (i370_single_format): Likewise.
18503         (i370_double_format): Likewise.
18504         (decimal_single_format): Likewise.
18505         (decimal_double_format): Likewise.
18506         (decimal_quad_format): Likewise.
18507         (c4x_single_format): Likewise.
18508         (c4x_extended_format): Likewise.
18509         (real_internal_format): Likewise.
18510         (coldfire_single_format): New real_format.
18511         (coldfire_double_format): Likewise.
18512         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
18513         canonical_nan_lsbs_set.
18514         (pdp11_d_format): Likewise.
18515         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
18516         if TARGET_COLDFIRE_CPU.
18517
18518 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
18519
18520         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
18521         (output_call, m68k_legitimize_call_address): Declare.
18522         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
18523         parenthesees.  Add support for a 'W' constraint.
18524         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
18525         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
18526         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
18527         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
18528         variables.
18529         (override_options): Initialize them.  Do not set flag_no_function_cse
18530         for TARGET_ID_SHARED_LIBRARY.
18531         (m68k_output_pic_call): Delete.
18532         (m68k_legitimize_call_address): New function.
18533         (print_operand): Remove the %o prefix.  Handle the %p prefix.
18534         (output_call): New function.
18535         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
18536         target address from the GOT if symbolic jumps are not allowed.
18537         * config/m68k/m68k.md (call, general_operand): Do not set
18538         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
18539         Merge separate flag_pic and !flag_pic define_insns into...
18540         (*call, *call_value): ...these new patterns.  Match the address
18541         rather than the containing MEM and require it to be a call_operand.
18542         Use output_call to generate the asm template.
18543         * config/m68k/predicates.md (const_call_operand): New predicate.
18544         (call_operand): Likewise.
18545
18546 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
18547
18548         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
18549         (STACK_GROWS_DOWNWARD): Define to 1.
18550         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
18551         comments, emphasizing that these values are only defaults.
18552         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
18553         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
18554
18555 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
18556
18557         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
18558
18559 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
18560             Richard Sandiford  <richard@codesourcery.com>
18561
18562         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
18563         (FP_REGNO_P): New macros.
18564         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
18565         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
18566         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
18567         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
18568
18569 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
18570
18571         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
18572         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
18573         to $tmake_file.
18574         * config/m68k/t-floatlib: New file, extracting common code from...
18575         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
18576         * config/m68k/t-uclinux: Here.
18577         * config/m68k/fpgnulib.c: Do not compile extendeed precision
18578         routines on ColdFire targets.
18579
18580 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
18581
18582         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
18583         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
18584         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
18585         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
18586         explicitly set MOTOROLA to 1.
18587         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
18588
18589 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
18590             Nathan Sidwell  <nathan@codesourcery.com>
18591
18592         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
18593         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
18594         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
18595         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
18596         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
18597         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
18598         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
18599         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
18600         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
18601         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
18602         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
18603         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
18604         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
18605         (DBX_REGISTER_NUMBER): Delete.
18606         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
18607         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
18608         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
18609
18610 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
18611
18612         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
18613         * config/flat.h: New file.
18614         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
18615         OBJECT_FORMAT_FLAT.
18616         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
18617         indirect references for -msep-data or -mid-shared-library.
18618         Do not use PC-relative code addresses either.
18619         * config/m68k/m68k.c (override_options): Restrict -fPIC error
18620         to -mpcrel.
18621         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
18622         for shared libraries and crt1.o for executables.  Use crti.o and
18623         crtbegin.o.
18624         (ENDFILE_SPEC): Use crtend.o and crtn.o.
18625         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
18626         Do not add -elf2flt or -shared-lib-id options here.
18627         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
18628         Pass -shared-lib-id if -mid-shared-library, taking the library
18629         identifier from -mshared-library-id if given, otherwise
18630         defaulting to 0.
18631         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
18632         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
18633         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
18634         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
18635         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
18636         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
18637         and crtend.o.
18638         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
18639         jump sequence for ISA A and ISA A+.
18640         (PICJUMP): Likewise.
18641
18642 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
18643
18644         * config.gcc (m68k-*-uclinux*): Base the port on the common
18645         and m68k GNU/Linux files rather than on the generic ELF ones.
18646         * config/m68k/uclinux.h (TARGET_VERSION): Override.
18647         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
18648
18649 2007-01-18  Julian Brown  <julian@codesourcery.com>
18650             Richard Sandiford  <richard@codesourcery.com>
18651
18652         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
18653         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
18654         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
18655         before redefining.
18656         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
18657         80 unconditionally.
18658         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
18659
18660 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
18661
18662         * doc/install.texi: Document m68k-uclinuxoldabi.
18663         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
18664         * config/m68k/uclinux-oldabi.h: New file, copied from
18665         config/m68k/uclinux.h.
18666
18667 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
18668
18669         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
18670         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
18671         (m32r_compute_frame_size): Use unsigned for regno.
18672         (m32r_reload_lr): Use gen_frame_mem.
18673         (pop): New.
18674         (m32r_output_function_epilogue): Don't output the function epilogue
18675         textually here.
18676         (m32r_expand_epilogue): New.
18677         (direct_return): Return false if the function has the interrupt
18678         attribute.
18679         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
18680         * config/m32r/m32r.md (epilogue): New expander.
18681         (return_lr, return_rte): New insns.
18682         (return): Make it expander.
18683         (return_normal): New expander.
18684
18685 2007-01-18  Josh Conner  <jconner@apple.com>
18686
18687         PR target/30485
18688         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
18689         support for UNLE, UNLT, UNGE, and UNGT.
18690
18691 2007-01-18  Jan Hubicka  <jh@suse.cz>
18692
18693         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
18694         * tree-tailcall (add_virtual_phis): Likewise.
18695         (optimize_tail_call): Return TODOs.
18696         (execute_tail_calls): Return TODOs.
18697         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
18698         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
18699         changed.
18700         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
18701         Cleanup cfg using TODO.
18702         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
18703         * passes.c (execute_function_todo): When cleanup did something, remove
18704         unused locals.
18705         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
18706         (make_edges): Don't cleanup_cfg.
18707
18708 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
18709
18710         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
18711         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
18712         operate on the top of stack.
18713         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
18714         register handling of instructions that output to the second
18715         stack slot.
18716         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
18717         (move_for_stack_reg): Special-case check for dead destination
18718         stack slot for constant load of 1.0 inside UNSPEC_TAN.
18719
18720         * config/i386/i386.md (UNSPEC_TAN): New constant.
18721         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
18722         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
18723         to correctly model move of constant 1.0 to top stack slot.
18724         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
18725         (unnamed peephole2 pattern): Remove corresponding peephole2
18726         pattern that optimizes tan insn and loading of constant 1.0.
18727         (tanxf2): Use fptanxf4_i387.
18728         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
18729         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
18730         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
18731         disable patterns for SSE math.
18732         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
18733         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
18734
18735 2007-01-18  Dirk Mueller  <dmueller@suse.de>
18736             Richard Guenther <rguenther@suse.de>
18737
18738         PR diagnostic/8268
18739         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
18740         * common.opt (Warray-bounds): Add new warning option.
18741         * c-opts.c (c_common_handle_option): Define -Warray-bounds
18742         if -Wall is given.
18743         * Makefile.in: make tree-vrp.o depend on toplev.h
18744         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
18745         is enabled.
18746         (check_array_refs, check_array_bounds, check_array_ref): New.
18747
18748 2007-01-18  Jan Hubicka  <jh@suse.cz>
18749
18750         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
18751         (execute_ssa_ccp): Return flags conditionally.
18752         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
18753         changed.
18754         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
18755
18756 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
18757
18758         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
18759         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
18760
18761         * Makefile.c (GTFILES): Add cfglayout.h.
18762         * gengtype.c (open_base_files): Likewise.
18763         * cfglayout.c (cfg_layout_function_footer,
18764         cfg_layout_function_header) Reindent to make gengtype happy.
18765         * cfglayout.h (cfg_layout_function_footer,
18766         cfg_layout_function_header): Add GTY(()) marker.
18767
18768         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
18769
18770 2007-01-18  Ben Elliston  <bje@au.ibm.com>
18771
18772         * genautomata.c (write_automata): Include xstrerror output in the
18773         error message if writing the DFA description file fails.
18774
18775 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
18776
18777         * config/mips/mips-protos.h (mips_output_external): Make it
18778         return void.
18779         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
18780         * config/mips/mips.c (irix_output_external_libcall): Likewise.
18781         (extern_list): Likewise.
18782         (extern_head): Likewise.
18783         (TARGET_ASM_FILE_END): Likewise.
18784         (mips_file_end): Likewise.
18785         (mips_output_external): Rewritten.
18786
18787 2007-01-18  Ben Elliston  <bje@au.ibm.com>
18788
18789         * genpreds.c (write_insn_preds_c): Only write out the function
18790         body for regclass_for_constraint if we have register constraints.
18791
18792 2007-01-17  Tom Tromey  <tromey@redhat.com>
18793
18794         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
18795         * doc/install.texi (Testing): Use sourceware.org.
18796         (Binaries): Likewise.
18797         (Specific): Likewise.
18798         * doc/contrib.texi (Contributors): Use sourceware.org.
18799
18800 2007-01-17  Anatoly Sokolov <aesok@post.ru>
18801
18802         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
18803         (AVR_ENHANCED): Rename to ...
18804         (AVR_HAVE_MUL): ... new.
18805         (avr_enhanced_p): Rename to ...
18806         (avr_have_mul_p): ... new.
18807         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
18808         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
18809         * config/avr/avr.c (avr_enhanced_p): Rename to ...
18810         (avr_have_mul_p): ... new.
18811         (base_arch_s): Rename 'enhanced' to 'have_mul'.
18812         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
18813         'avr_enhanced_p' and 'enhanced'.
18814         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
18815         AVR_HAVE_MUL instead of AVR_ENHANCED.
18816         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
18817         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
18818         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
18819         instead of AVR_ENHANCED.
18820         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
18821         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
18822         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
18823
18824 2007-01-17  Ian Lance Taylor  <iant@google.com>
18825
18826         * vec.h (VEC_reserve_exact): Define.
18827         (vec_gc_p_reserve_exact): Declare.
18828         (vec_gc_o_reserve_exact): Declare.
18829         (vec_heap_p_reserve_exact): Declare.
18830         (vec_heap_o_reserve_exact): Declare.
18831         (VEC_OP (T,A,reserve_exact)): New static inline function, three
18832         versions.
18833         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
18834         negative parameter.
18835         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
18836         (VEC_OP (T,A,copy)) [all versions]: Likewise.
18837         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
18838         * vec.c (calculate_allocation): Add exact parameter.  Change all
18839         callers.
18840         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
18841         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
18842         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
18843         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
18844         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
18845         (vec_heap_p_reserve_exact): New function.
18846         (vec_heap_o_reserve_exact): New function.
18847
18848 2007-01-17  Jan Hubicka  <jh@suse.cz>
18849
18850         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
18851
18852 2007-01-17  Eric Christopher  <echristo@apple.com>
18853
18854         * config.gcc: Support core2 processor.
18855
18856 2007-01-16  Jan Hubicka  <jh@suse.cz>
18857
18858         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
18859         the names, just unlink the chain so we don't crash on dangling
18860         pointers
18861         to dead SSA names.
18862
18863 2007-01-16  Jan Hubicka  <jh@suse.cz>
18864
18865         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
18866         * tree-pass.h: Reorder to make IPA passes appear toegher.
18867         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
18868         Declare.
18869         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
18870         parameters, do not call early inliner.
18871         * ipa-inline.c: Update comments.  Include tree-flow.h
18872         (cgraph_decide_inlining): Do not compute inlining parameters.
18873         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
18874         be called with function context set up.
18875         (pass_ipa_inline): Remove unreachable functions before pass.
18876         (cgraph_early_inlining): Simplify assuming to be called from the
18877         PM as local pass.
18878         (pass_early_inline): New pass.
18879         (cgraph_gate_ipa_early_inlining): New gate.
18880         (pass_ipa_early_inline): Turn into simple wrapper.
18881         (compute_inline_parameters): New function.
18882         (gate_inline_passes): New gate.
18883         (pass_inline_parameters): New pass.
18884         (apply_inline): Move here from tree-optimize.c
18885         (pass_apply_inline): New pass.
18886         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
18887         transforming.
18888         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
18889         doing them by hand.
18890         (tree_function_versioning): Do not allocate dummy struct function.
18891         * tree-inline.h (optimize_inline_calls): Update prototype.
18892         * tree-optimize.c (execute_fixup_cfg): Export.
18893         (pass_fixup_cfg): Remove
18894         (tree_rest_of_compilation): Do not apply inlines.
18895         * tree-flow.h (execute_fixup_cfg): Declare.
18896         * Makefile.in (gt-passes.c): New.
18897         * passes.c: Include gt-passes.h
18898         (init_optimization_passes): New passes.
18899         (nnodes, order): New static vars.
18900         (do_per_function_toporder): New function.
18901         (execute_one_pass): Dump current pass here.
18902         (execute_ipa_pass_list): Don't dump current pass here.
18903
18904 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
18905
18906         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
18907         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
18908
18909 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
18910
18911         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
18912         (strong_alias): Define.
18913         (__gcc_qmul): Provide non-FMA for soft-float.
18914         (__gcc_qdiv): Same.
18915         (__gcc_qneg): New.
18916         (__gcc_qeq): New.
18917         (__gcc_qle): New.
18918         (__gcc_qge): New.
18919         (__gcc_qunord): New.
18920         (__gcc_stoq): New.
18921         (__gcc_dtoq): New.
18922         (__gcc_qtos): New.
18923         (__gcc_qtod): New.
18924         (__gcc_qtoi): New.
18925         (__gcc_qtou): New.
18926         (__gcc_itoq): New.
18927         (__gcc_utoq): New.
18928         (fmsub): New.
18929         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
18930         soft-float functions.
18931         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
18932         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
18933         about long double soft float.
18934
18935 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
18936             Tehila Meyzels  <tehila@il.ibm.com>
18937
18938         * tree-vectorizer.h (is_pattern_stmt_p): New.
18939         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
18940         formatting (tabs instead of spaces). Cleanup and clarify setting
18941         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
18942         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
18943         (vectorizable_type_demotion): Check that types are integral.
18944         (vectorizable_type_promotion): Likewise.
18945         (vectorizable_store): Fix typo.  Eliminate new-line at end of
18946         comments.
18947
18948 2007-01-16  Jan Hubicka  <jh@suse.cz>
18949
18950         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
18951         cgraph edges too.
18952
18953 2007-01-15  Eric Christopher  <echristo@apple.com>
18954
18955         * ifcvt.c: Include vec.h, vecprim.h.
18956         (check_cond_move_block): New argument regs.
18957         Reorganize. Add registers used to regs.
18958         (cond_move_process_if_block): Use regs set above as
18959         loop bounds.
18960
18961 2007-01-15  Eric Christopher  <echristo@apple.com>
18962
18963         * config/darwin.h: Update copyright.
18964         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
18965         (LINK_COMMAND_SPEC): Add -u.
18966         (LINK_SPEC): Fix umbrella for above.
18967
18968 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
18969
18970         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
18971         glibc CVS.
18972
18973 2007-01-15  Tom Tromey  <tromey@redhat.com>
18974
18975         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
18976         * doc/install.texi (Testing): Don't mention jacks.
18977         (Configuration): Document --enable-java-maintainer-mode.  Move
18978         --with-java-home to libgcj-specific section.  Document
18979         --with-ecj-jar.
18980         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
18981
18982 2007-01-15  Jan Hubicka  <jh@suse.cz>
18983
18984         * tree-ssa-dce.c (DCE_TODOs): New.
18985         (propagate_necessity): Return if something changed.
18986         (eliminate_unnecessary_stmts): Likewise.
18987         (perform_tree_ssa_dce): Return TODO flags when needed.
18988         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
18989
18990 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
18991
18992         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
18993         (fyl2x_extend<mode>xf3_i387): New insn pattern.
18994         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
18995         patterns using X87MODEF12 mode macro.  Extend operand 1
18996         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
18997         (log10<mode>2): Ditto.
18998         (log2<mode>2): Ditto.
18999         (log1p<mode>2): Ditto.
19000         (logb<mode>2): Ditto.
19001         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
19002         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
19003         (*fxtractxf3_i387): Rename from *fxtractxf3.
19004         (fxtract_extend<mode>xf3_i387): New insn pattern.
19005         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
19006         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
19007         and gen_fyl2xxf3_i387().
19008
19009 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
19010
19011         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
19012         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
19013         get_loop_exit_edges.  Changed return type to bool.
19014         * cfgloop.h (fix_loop_placement): Declaration removed.
19015
19016 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
19017
19018         * param.h (MIN_VECT_LOOP_BOUND): New.
19019         * params.def (MIN_VECT_LOOP_BOUND): New.
19020         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
19021         argument - minimum threshold for number of iterations.
19022         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
19023         argument to declaration.
19024         * tree-vect-analyze.c (vect_analyze_operations): Check value of
19025         MIN_VECT_LOOP_BOUND.
19026         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
19027         slpeel_tree_peel_loop_to_edge with additional argument.
19028         (vect_do_peeling_for_alignment): Likewise.
19029         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
19030
19031 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
19032
19033         PR target/30413
19034         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
19035         operands of size 1.
19036
19037 2007-01-14  Jan Hubicka  <jh@suse.cz>
19038
19039         * tree-dfa.c (remove_referenced_var): New function.
19040         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
19041         prune referenced vars list too.
19042         * tree-flow.h (remove_referenced_var): Declare.
19043
19044 2007-01-14  Jan Hubicka  <jh@suse.cz>
19045
19046         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
19047         separately.
19048         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
19049         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
19050         * except.h (verify_eh_throw_table_statements): Kill prototype.
19051         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
19052         into call exrepssions.
19053         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
19054         eh trhow verifier.
19055         * tree-cfg.c: Include pointer-set.h.
19056         (verify_node_sharing): Work on pointer set.
19057         (verify_eh_throw_stmt_node): New.
19058         (verify_stmts): Use pointers sets, verify throw_stmt.
19059
19060 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
19061
19062         * ipa-reference.c (analyze_function): Consider also addresses taken
19063         in phi nodes.
19064
19065 2007-01-12  Roger Sayle  <roger@eyesopen.com>
19066
19067         * c-typeck.c (null_pointer_constant_p): Replace use of
19068         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
19069         (build_c_cast): Likewise.
19070
19071 2007-01-12  Roger Sayle  <roger@eyesopen.com>
19072
19073         * tree.h (force_fit_type_double): Remove unused final argument.
19074         * c-common.c (constant_expression_warning): Replace use of
19075         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
19076         (convert_and_check): Likewise.
19077         (shorten_compare): Update call to force_fit_type_double.
19078         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
19079         * convert.c (convert_to_pointer): Update call to
19080         force_fit_type_double.
19081         * fold-const.c (force_fit_type_double): Remove overflowed_const
19082         argument.
19083         (int_const_binop, fold_convert_const_int_from_int,
19084         fold_convert_const_int_from_real, fold_div_compare,
19085         fold_sign_changed_comparison, fold_unary, fold_negate_const,
19086         fold_abs_const, fold_not_const): Remove the final argument from
19087         calls to force_fit_type_double.
19088
19089 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19090
19091         * configure.ac: Set insn to "nop" for spu-*-* also.
19092         * configure: Regenerate.
19093
19094 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
19095
19096         * builtins.def : Add BUILT_IN_FREE.
19097
19098 2007-01-12  Jan Hubicka  <jh@suse.cz>
19099
19100         PR tree-optimization/30443
19101         * tree-inline.c (tree_function_versioning): Do not optimize when
19102         cloning for inlining.
19103
19104 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
19105
19106         * doc/loop.texi: Document recording of loop exits.
19107         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
19108         (update_single_exits_after_duplication,
19109         update_single_exit_for_duplicated_loop,
19110         update_single_exit_for_duplicated_loops): Removed.
19111         (duplicate_loop_to_header_edge): Do not call
19112         update_single_exits_after_duplication and
19113         update_single_exit_for_duplicated_loops.
19114         (loop_version): Do not update single_exit information.
19115         (fix_loop_structure): Use record_loop_exits instead of
19116         mark_single_exit_loops.
19117         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
19118         the lists of loop exits.
19119         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
19120         split_edge, merge_blocks): Update the lists of loop exits.
19121         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
19122         loop_optimizer_init.
19123         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
19124         of mark_single_exit_loops.
19125         (loop_optimizer_finalize): Call release_recorded_exits.
19126         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
19127         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
19128         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
19129         update single exit information.
19130         * lambda-code.c (perfect_nestify): Ditto.
19131         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
19132         (mark_single_exit_loops): Removed.
19133         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
19134         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
19135         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
19136         functions.
19137         (get_loop_exit_edges, single_exit): Use recorded exit lists.
19138         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
19139         (verify_loop_structure): Verify consistency of the exit lists.
19140         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
19141         (set_single_exit): Removed.
19142         * cfgloop.h (struct loop_exit): New function.
19143         (struct loop): single_exit_ field replaced by exits field.
19144         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
19145         LOOPS_HAVE_RECORDED_EXITS.
19146         (struct loops): Added exits hash.
19147         (mark_single_exit_loops, set_single_exit): Declaration removed.
19148         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
19149
19150 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
19151
19152         * doc/invoke.texi: Avoid use of @headitem.
19153
19154 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
19155
19156         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
19157
19158 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
19159
19160         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
19161         list of targets.
19162
19163 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
19164             Richard Sandiford  <richard@codesourcery.com>
19165
19166         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
19167         * config/m68k/m68k.opt: Resort options.
19168         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
19169
19170 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
19171             Richard Sandiford  <richard@codesourcery.com>
19172
19173         * doc/invoke.texi: Document the macros that are defined by
19174         m68k's -mtune and -mhard-float options.
19175         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
19176         (m68k_cpp_cpu_family): Likewise.
19177         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
19178         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
19179         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
19180         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
19181         (m68k_cpp_cpu_family): Likewise.
19182
19183 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
19184
19185         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
19186         macros besides mc68000 as tuning macros.  Use a switch statement
19187         to set them and mcpu32.
19188
19189 2007-01-12  Julian Brown  <julian@codesourcery.com>
19190
19191         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
19192         (TARGET_68040_ONLY): Rename to...
19193         (TARGET_68040): ...this.
19194         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
19195         * config/m68k/m68k.md: Likewise.
19196
19197 2007-01-12  Julian Brown  <julian@codesourcery.com>
19198             Nathan Sidwell  <nathan@codesourcery.com>
19199             Richard Sandiford  <richard@codesourcery.com>
19200
19201         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
19202         the -mcpu= argument associated with the --with-cpu setting.
19203         Define M68K_DEFAULT_TUNE to the default -mtune= option,
19204         if different from the one implied by the -mcpu setting.
19205         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
19206         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
19207         * doc/invoke.texi: Mention ColdFire in the introduction to the
19208         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
19209         -mno-div and -mhard-float options.  Make -m68881 a synonym for
19210         -mhard-float.  Document the previously-undocumented -m5206e,
19211         -m528x, -m5307 and -m5407 options.  Tweak the existing option
19212         documentation for consistency.
19213         * doc/install.texi: Mention new --with-cpu arguments.
19214         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
19215         default CPU if neither -mcpu nor -march are specified.
19216         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
19217         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
19218         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
19219         using m68k_tune to decide between families that implement the
19220         same ISA.  Use m68k_tune to set __mcfv4e__.
19221         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
19222         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
19223         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
19224         (FL_ISA_C, FL_ISA_MMU): New macros.
19225         (MASK_COLDFIRE): Delete.
19226         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
19227         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
19228         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
19229         (TARGET_HARD_FLOAT): Do not define here.
19230         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
19231         (TUNE_68000): New macro.
19232         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
19233         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
19234         (TUNE_CFV2): Redefine in terms of m68k_tune.
19235         (uarch_type, target_device, fpu_type): New enums.
19236         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
19237         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
19238         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
19239         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
19240         (FL_FOR_isa_c): New macros.
19241         (m68k_isa): New enum.
19242         (m68k_target_selection): New structure.
19243         (all_devices, all_isas, all_microarchs): New tables.
19244         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
19245         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
19246         (MASK_ALL_CPU_BITS): Delete.
19247         (m68k_find_selection): New function.
19248         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
19249         Map the legacy target options to a combination of the new ones.
19250         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
19251         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
19252         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
19253         settings.
19254         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
19255         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
19256         properties.
19257         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
19258         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
19259         * config/m68k/m68k-devices.def: New file.
19260
19261 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
19262             Nathan Sidwell  <nathan@codesourcery.com>
19263
19264         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
19265         (SUBTARGET_EXTRA_SPECS): New macros.
19266         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
19267         use %(asm_cpu_spec) instead.
19268         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
19269         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
19270         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
19271         (EXTRA_SPECS): Rename to...
19272         (SUBTARGET_EXTRA_SPECS): ...this.
19273
19274 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
19275             Richard Sandiford  <richard@codesourcery.com>
19276             Julian Brown  <julian@codesourcery.com>
19277
19278         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
19279         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
19280         to the configuration's default CPU.
19281         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
19282         Remove default masks.
19283         (m680[012]0-*-*): Set the default with_cpu to the first part of
19284         the target name.
19285         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
19286         (m68k*-*-linux): Extend the --with-cpu handling to...
19287         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
19288         and m68010.  Don't set target_cpu_default2.
19289         * doc/install.texi: Document --with-cpu for m68k.
19290         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
19291         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
19292         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
19293         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
19294         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
19295         (ASM_SPEC): Remove use of %(asm_cpu_default).
19296         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
19297         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
19298         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
19299         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
19300         __HAVE_FPU__ if TARGET_HARD_FLOAT.
19301         (TARGET_DEFAULT): Delete.
19302         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
19303         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
19304         (CPP_CPU_SPEC): Delete.
19305         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
19306         the appropriate string.
19307         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
19308         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
19309         (ASM_SPEC): Don't use %(asm_default_spec).
19310         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
19311         TARGET_DEFAULT and add MASK_68881.
19312         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
19313
19314 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
19315
19316         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
19317         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
19318         MASK_68010 alongside MASK_68020.
19319         * doc/invoke.texi: Document -m68010.
19320         * config/m68k/m68k.opt (m68010): New.
19321         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
19322         if TUNE_68010.
19323         (TUNE_68010): New macro.
19324         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
19325         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
19326         (M68K_CPU_m68332): Add MASK_68010.
19327         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
19328         fallback definition.
19329         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
19330         defines.
19331         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
19332         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
19333         to all entries that use MASK_68020.
19334         (output_move_simode_const, output_move_himode, output_move_qimode)
19335         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
19336         instead of TARGET_68020 to select clr behavior.  Remove comment
19337         about there being no TARGET_68010.
19338         * config/m68k/m68k.md: Likewise throughout.
19339
19340 2007-01-12  Julian Brown  <julian@codesourcery.com>
19341
19342         * config/m68k/m68k.h (TARGET_ISAB): New macro.
19343         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
19344         * config/m68k/m68k.md: Likewise.
19345
19346 2007-01-12  Julian Brown  <julian@codesourcery.com>
19347
19348         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
19349         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
19350
19351 2007-01-12  Julian Brown  <julian@codesourcery.com>
19352
19353         * config/m68k/m68k.h (TUNE_68040_60): New macro.
19354         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
19355         * config/m68k/m68k.md: Likewise.
19356
19357 2007-01-12  Julian Brown  <julian@codesourcery.com>
19358             Richard Sandiford  <richard@codesourcery.com>
19359
19360         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
19361         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
19362         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
19363         TARGET_CPU32.
19364         (TARGET_CPU32): Rename to...
19365         (TUNE_CPU32): ...this.
19366         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
19367         (TUNE_CFV2): New macros.
19368         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
19369         remove conditions that are implied by TARGET_68020.
19370         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
19371         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
19372         (m68k_output_function_epilogue): Likewise.
19373         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
19374         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
19375         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
19376         non-68000 timings.  Refactor multiplication and division costs.
19377         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
19378         TUNE_CPU32 instead of TARGET_CPU32.
19379         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
19380         and TUNE_68060 instead of TARGET_68060.
19381         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
19382         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
19383         TARGET_CPU32.
19384         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
19385         && !TARGET_COLDFIRE" to choose between moveq and clr.
19386         Likewise in the unnamed movsf pattern.
19387         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
19388         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
19389         ashiftrt pattern.
19390
19391 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
19392
19393         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
19394         of tabbing before backslashes.
19395
19396 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19397
19398         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
19399         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
19400         (ASM_OUTPUT_INTERNAL_LABEL): Define.
19401
19402 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
19403
19404         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
19405         find_interesting_uses_cond.
19406         (find_interesting_uses_cond): Use extract_cond_operands.
19407         (rewrite_use_compare): Use extract_cond_operands and
19408         force_gimple_operand_bsi.  Do not call update_stmt.
19409         (determine_use_iv_cost_condition): Use extract_cond_operands.
19410         Return cheaper of using original bound and changing the exit bound.
19411
19412 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
19413
19414         PR tree-optimization/29516
19415         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
19416         most_expensive_mult_to_index, addr_to_parts,
19417         create_mem_ref, maybe_fold_tmr): Make the type of
19418         fields of TARGET_MEM_REF sizetype.
19419         (move_fixed_address_to_symbol, move_pointer_to_base):
19420         New functions.
19421         * tree.def (TARGET_MEM_REF): Add comment on types of
19422         the operands.
19423
19424 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
19425
19426         * c-common.c (vector_types_convertible_p): Treat opaque types as
19427         always convertible if they have the same size, but not otherwise.
19428
19429 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
19430
19431         * ifcvt.c (struct noce_if_info): Add comments to the fields.
19432         Remove the b_unconditional field.
19433         (noce_try_sign_mask): Do not look at b_unconditional.
19434         (noce_process_if_block): Do not use merge_if_blocks.  Update
19435         the CFG here.  Do not set b_unconditional.
19436         (cond_move_process_if_block): Likewise.
19437         (find_cond_trap): Likewise.
19438         (check_cond_move_block): Require simple jump insns at the end
19439         of the basic block.
19440
19441 2007-01-11  Jan Hubicka  <jh@suse.cz>
19442
19443         PR tree-optimization/1046
19444         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
19445         when alias info is not ready.
19446         (pass_tail_recursion): Do not require aliasing.
19447         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
19448         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
19449         * tree-ssa-copy.c (pass_copy_prop): Likewise.
19450         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
19451         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
19452         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
19453         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
19454         before inlining.
19455         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
19456         When aliasing is not build, mark statement as volatile.
19457
19458 2007-01-11  Tom Tromey  <tromey@redhat.com>
19459
19460         PR preprocessor/15185, PR preprocessor/20989:
19461         * doc/cppopts.texi <-MT>: Update description of algorithm for
19462         computing default target.
19463         <-M, -MD>: Reword "basename" text.
19464
19465 2007-01-11  Roger Sayle  <roger@eyesopen.com>
19466
19467         * builtins.c (expand_builtin_pow, expand_builtin_powi,
19468         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
19469         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
19470         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
19471         fold_builtin_bswap, real_constp, fold_builtin_pow,
19472         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
19473         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
19474         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
19475         * convert.c (convert_to_pointer): Likewise.
19476         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
19477         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
19478         const_binop, fold_convert_const_int_from_int,
19479         fold_convert_const_int_from_real,
19480         fold_convert_const_real_from_real, sign_bit_p,
19481         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
19482         fold_sign_changed_comparison, fold_unary, fold_comparison,
19483         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
19484         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
19485         * print-tree.c (print_node_brief, print_node): Likewise.
19486         * stor-layout.c (place_field, layout_type): Likewise.
19487         * tree-chrec.c (keep_cast): Likewise.
19488         * tree.c (build_vector, build_real, build_real_from_int_cst,
19489         build_complex): Likewise.
19490
19491 2007-01-11  Roger Sayle  <roger@eyesopen.com>
19492
19493         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
19494         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
19495
19496 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
19497
19498         * configure.ac (strict1_warn): Rename to strict_warn.
19499         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
19500         cc_set_by_configure, quoted_cc_set_by_configure,
19501         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
19502         all_boot_languages, all_stagestuff): Remove.
19503         (target_list): Remove bootstrap targets.
19504         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
19505         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
19506         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
19507         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
19508         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
19509         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
19510         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
19511         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
19512         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
19513         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
19514         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
19515         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
19516         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
19517         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
19518         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
19519         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
19520         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
19521         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
19522         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
19523         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
19524         (mostlyclean): Adjust.
19525         (clean, distclean): Don't mention bootstrap stuff.
19526         * configure: Regenerate.
19527         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
19528         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
19529         treelang/config-lang.in (stagestuff): Remove.
19530         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
19531         stageprofile, stagefeedback, stagestuff): Remove mention.
19532
19533 2007-01-11  Nick Clifton  <nickc@redhat.com>
19534
19535         * config/mcore/predicates.md (mcore_general_movesrc_operand):
19536         Accept CONSTs.
19537         (mcore_general_movdst_operand): Do not accept CONST_INTs.
19538         (mcore_arith_K_S_operand): Run the test for the S constraint not
19539         the test for the M constraint.
19540         (mcore_addsub_operand): Do not accept integer values that are
19541         larger than 32 bits.
19542         * config/mcore/mcore.md: Remove unused constraints from split.
19543         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
19544         (addsi3): Likewise.
19545         (allocate_stack): Likewise.
19546         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
19547         operands to 32 bits.
19548         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
19549         INTVAL.
19550         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
19551         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
19552         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
19553         mcore_output_bclri, mcore_output_andn, output_inline_const,
19554         mcore_output_move, mcore_output_movedouble): Likewise.
19555         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
19556         (output_inline_const): Likewise.
19557         (output_inline_const): Fix format strings used in sprintf
19558         statements.
19559         * config/mcore/mcore-protos.h: Update prototypes for changed
19560         functions in mcore.c.
19561         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
19562         HOST_WIDE_INT and not int.
19563         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
19564         CONST_OK_FOR_N): Likewise.
19565         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
19566         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
19567         an INTVAL.
19568
19569 2007-01-10  Jan Hubicka  <jh@suse.cz>
19570
19571         * tree-vrp.c (remove_range_assertions): Release defs.
19572         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
19573         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
19574
19575 2007-01-10  Paul Brook  <paul@codesourcery.com>
19576
19577         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
19578         * config/arm/arm.md (mulsi3subsi): New insn.
19579
19580 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
19581
19582         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
19583         (tree_transform_and_unroll_loop): New.
19584         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
19585         Declare.
19586
19587 2007-01-10  Robert Kennedy <jimbob@google.com>
19588
19589         * fold-const.c (fold_comparison): Fold comparisons like (x *
19590         1000 < 0) to (x < 0).
19591
19592 2007-01-10  Ian Lance Taylor  <iant@google.com>
19593
19594         * tree-pretty-print.c (dump_generic_node): Print parentheses when
19595         operands have the same priority.
19596
19597 2007-01-10  Tom Tromey  <tromey@redhat.com>
19598
19599         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
19600         (fold_binary): Likewise.
19601         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
19602         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
19603         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
19604         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
19605         * langhooks.h (struct lang_hooks): Removed field
19606         'can_use_bit_fields_p'.
19607
19608 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
19609
19610         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
19611
19612 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
19613
19614         * function.c (get_last_funcdef_no): New function.
19615         * function.h (get_last_funcdef_no): Declare.
19616         * tree-inline.c (initialize_cfun): Add initialization.
19617         (tree_function_versioning): Cleanup.
19618
19619 2007-01-10  Jan Hubicka  <jh@suse.cz>
19620
19621         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
19622         PHIs.
19623
19624 2007-01-10  Sa Liu  <saliu@de.ibm.com>
19625             Ben Elliston  <bje@au.ibm.com>
19626
19627         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
19628         for SAVE_NONLOCAL and Pmode for any other save level.
19629         * spu-protos.h (spu_restore_stack_block): Declare.
19630         * spu.md (save_stack_block): Remove.
19631         (restore_stack_block): Call spu_restore_stack_block.
19632         * spu.c (spu_restore_stack_block): New function.
19633         (spu_expand_epilogue): Remove old comment.
19634
19635 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
19636
19637         PR tree-optimization/30322
19638         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
19639         (cand_value_at): Return the value as aff_tree.
19640         (may_eliminate_iv): Convert the bound from aff_tree to tree.
19641         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
19642         aff_combination_mult): New functions.
19643         (aff_combination_add): Use aff_combination_add_cst.
19644         (aff_combination_convert): Allow conversions to a wider type.
19645         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
19646         * tree-affine.h (aff_combination_mult): Declare.
19647
19648 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
19649
19650         * doc/tm.texi: Update documentation to reflect reality of exec
19651         and start file search behaviours. Update copyright year.
19652         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
19653         header file directories.
19654
19655 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
19656
19657         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
19658         (*cosxf2): Rename to cosxf2_i387.
19659         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
19660         using X87MODEF12 mode macro. Rename patterns to
19661         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
19662         for SSE math.
19663         (*cosdf2, *cossf2): Ditto.
19664         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
19665         to match extended input operands.
19666         (sincos<mode>3): New expander.
19667         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
19668         insn patterns and corresponding splitters.
19669
19670 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
19671
19672         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
19673         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
19674
19675 2007-01-09  Nicolas Pitre  <nico@cam.org>
19676
19677         PR target/30173
19678         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
19679
19680 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
19681
19682         * target.h (struct gcc_target): New field library_rtti_comdat.
19683         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
19684         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
19685         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
19686         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
19687
19688 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
19689
19690         * doc/invoke.texi (Optimize Options): Correct description of -O0.
19691
19692 2007-01-08  Richard Guenther  <rguenther@suse.de>
19693
19694         * tree.h (force_fit_type_double): Export.
19695         (force_fit_type): Remove.
19696         * fold-const.c (force_fit_type_double): New function.
19697         (force_fit_type): Remove.
19698         (int_const_binop): Use it.
19699         (fold_convert_const_int_from_int): Likewise.
19700         (fold_convert_const_int_from_real): Likewise.
19701         (fold_div_compare): Likewise.
19702         (fold_sign_changed_comparison): Likewise.
19703         (fold_unary): Likewise.
19704         (fold_negate_const): Likewise.
19705         (fold_abs_const): Likewise.
19706         (fold_not_const): Likewise.
19707         * c-common.c (shorten_compare): Use force_fit_type_double.
19708         * convert.c (convert_to_pointer): Likewise.
19709
19710 2007-01-08  Richard Guenther  <rguenther@suse.de>
19711
19712         * tree.h (build_int_cst_wide_type): Export.
19713         * tree.c (build_int_cst_wide_type): New function.
19714         (build_int_cst_wide): Fix comment.
19715         * builtins.c (fold_builtin_object_size): Use build_int_cst
19716         to build -1 or 0 of the correct type.  Use fit_double_type
19717         to check for overflow.
19718         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
19719         to build the mask.
19720         (decode_field_reference): Likewise.
19721         (all_ones_mask_p): Likewise.
19722         (native_interpret_int): Use build_int_cst_wide_type.
19723         (fold_binary): Use build_int_cst_type to build an all-ones
19724         value.
19725         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
19726
19727 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
19728
19729         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
19730
19731 2007-01-09  Ben Elliston  <bje@au.ibm.com>
19732
19733         * genautomata.c (STATS_OPTION): New option.
19734         (stats_flag): New flag.
19735         (gen_automata_option): Handle it.
19736         (initiate_automaton_gen): Ditto.
19737         (write_automata): Output statistics only if stats_flag is
19738         set. Likewise, output time statistics only if time_flag is set.
19739         * doc/md.texi (Processor pipeline description): Document new flag.
19740
19741 2007-01-08  Richard Guenther  <rguenther@suse.de>
19742
19743         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
19744         * tree.c (build_int_cst_type): Likewise.
19745         (size_in_bytes): Don't call force_fit_type on the result.
19746         (int_fits_type_p): Use fit_double_type.
19747         * fold-const.c (fit_double_type): New function.
19748         (force_fit_type): Use it.
19749         * tree.h (fit_double_type): Export.
19750
19751 2007-01-08  Jan Hubicka  <jh@suse.cz>
19752
19753         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
19754         * ipa.c (function_and_variable_visibility): Fix return type.
19755
19756 2007-01-08  Richard Guenther  <rguenther@suse.de>
19757
19758         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
19759         of offset to build the index.
19760         * tree-pretty-print.c (dump_generic_node): Don't build negated
19761         const just for printing.
19762         * c-pretty-print.c (pp_c_integer_constant): Likewise.
19763         * builtins.c (fold_builtin_int_roundingfn): Check if result
19764         fits the type by using force_fit_type and comparing the result.
19765         * predict.c (predict_loops): Use compare_tree_int for comparison.
19766         * tree.c (build_int_cst): Fall back to integer_type_node for
19767         NULL_TREE type.
19768         (build_int_cst_wide): Assert type is non-null.
19769
19770 2007-01-08  Roberto Costa  <roberto.costa@st.com>
19771
19772         * tree-vrp.c (extract_range_from_cond_expr): New.
19773         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
19774         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
19775         as expressions.
19776         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
19777         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
19778         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
19779         used as expressions.
19780         * tree-object-size.c (cond_expr_object_size): New.
19781         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
19782
19783 2007-01-08  Jan Hubicka  <jh@suse.cz>
19784
19785         * tree-ssa-forwprop.c (forward_propagate_into_cond,
19786         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
19787         statement.
19788
19789 2007-01-08  Richard Guenther  <rguenther@suse.de>
19790
19791         PR tree-optimization/23603
19792         * tree-vrp.c (set_value_range_to_truthvalue): New function.
19793         (extract_range_from_binary): Fall back to truthvalue instead of
19794         varying for TRUTH_*_EXPR.
19795         (extract_range_from_comparison): Fall back to truthvalue instead of
19796         varying.
19797         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
19798         if all visited PHI values were constant.
19799
19800 2007-01-08  Jan Hubicka  <jh@suse.cz>
19801
19802         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
19803         (cgraph_analyze_function): break out from ...
19804         (cgraph_finalize_compilation_unit): ... here.
19805         (cgraph_expand_function): Remove forgoten commented out line.
19806         (cgraph_optimize): Analyze functions.
19807
19808 2007-01-08  Jan Hubicka  <jh@suse.cz>
19809
19810         * tree-pas.h (TODO_remove_function): New flag.
19811         (TODO_update*): Renumber.
19812         (pass_ipa_increase_alignment,
19813         pass_ipa_function_and_variable_visibility): New passes.
19814         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
19815         (cgraph_function_and_variable_visibility): Move to ipa.c
19816         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
19817         cgraph_increase_alignment.
19818         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
19819         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
19820         calling tree-inline.
19821         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
19822         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
19823         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
19824         (gate_increase_alignment): New function.
19825         (pass_ipa_increase_alignment): New pass.
19826         * ipa.c: Inline tree-pass.h and timevar.h
19827         (function_and_variable_visibility): Move here from cgraphunit.c
19828         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
19829         * passes.c (init_optimization_passes): Add the two new passes.
19830         (execute_todo): Handle cgraph_remove_functions.
19831
19832 2007-01-08  Nick Clifton  <nickc@redhat.com>
19833
19834         * config/frv/predicates.md (reg_or_0_operand): Accept
19835         CONST_DOUBLEs.
19836
19837 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
19838
19839         * config/bfin/rtems.h, config/bfin/t-rtems: New.
19840         * config.gcc: Add bfin*-rtems*.
19841
19842 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
19843
19844         * c.opt: Add -flax-vector-conversions.
19845         * c-typeck.c (convert_for_assignment): Pass flag to
19846         vector_types_convertible_p to allow emission of note.
19847         (digest_init): Likewise.
19848         * c-opts.c: Handle -flax-vector-conversions.
19849         * c-common.c (flag_lax_vector_conversions): New.
19850         (vector_types_convertible_p): Unless -flax-vector conversions
19851         has been passed, disallow conversions between vectors with
19852         differing numbers of subparts and/or element types.  If such
19853         a conversion is disallowed, possibly emit a note on the first
19854         occasion only to inform the user of -flax-vector-conversions.
19855         The new last argument specifies this.
19856         * c-common.h (flag_lax_vector_conversions): New.
19857         (vector_types_convertible_p): Add extra argument.
19858         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
19859         char_type_node for V*QI type vectors.
19860         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
19861         Update to satisfy new typechecking rules.
19862         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
19863         C and C++ variants.
19864         * doc/invoke.texi (C Dialect Options): Document
19865         -flax-vector-conversions.
19866
19867 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
19868
19869         PR tree-optimization/29877
19870         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
19871         a register variable on the RHS to not be replaceable.
19872
19873 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
19874         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
19875         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
19876         const_simm15, const_pow2, const_npow2): Added.
19877         * config/score/misc.md (insv, extv, extzv, movmemsi,
19878         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
19879         * config/score/score.c (score_address_cost, score_select_cc_mode):
19880         Added.
19881         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
19882         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
19883         Update score_print_operand.
19884         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
19885         Adjust register allocate order and update some macro define.
19886         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
19887         mdx_block_move_straight, mdx_block_move_loop_head,
19888         mdx_block_move_loop_body, mdx_block_move_loop_foot,
19889         mdx_block_move_loop, mdx_block_move): Added.
19890         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
19891         mdp_limm): Updated and fix some bug and typo.
19892         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
19893         (movsf, movdf, doloop_end): Added.
19894
19895 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
19896
19897         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
19898         config/arm/thumb2.md: Fix comment typos.
19899         * doc/extend.texi: Fix a typo.
19900
19901 2007-01-07  Eric Christopher  <echristo@apple.com>
19902
19903         * configure.ac: Check for __stack_chk_fail for darwin.
19904         * configure: Regenerate.
19905
19906 2007-01-07  Richard Guenther  <rguenther@suse.de>
19907
19908         * tree-vrp.c (extract_range_from_assert): CSE calls to
19909         compare_values where possible.
19910         (extract_range_from_unary_expr): Likewise.
19911
19912 2007-01-07  Anatoly Sokolov <aesok@post.ru>
19913
19914         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
19915         * config/avr/avr.c (call_insn_operand): Delete function.
19916         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
19917         instead of register number. Use predicates.
19918         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
19919         call_insn_operand): Add.
19920
19921 2007-01-06  Jan Hubicka  <jh@suse.cz>
19922
19923         * tree-pass.h (pass_build_cgraph_edges): Declare.
19924         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
19925         (visited_nodes): Remove.
19926         (cgraph_create_edges): Move to cgraphbuild.c; rename to
19927         build_cgrpah_edges; make visited_nodes local.
19928         (cgraph_process_new_functions): DO not call initialize_inline_failed.
19929         (record_references_in_initializer): Move to cgraphbuild.c
19930         (initialize_inline_failed, rebuild_cgraph_edges,
19931         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
19932         (verify_cgraph_node): Make visited_nodes local.
19933         (cgraph_analyze_function): Do not call cgraph_create_edges and
19934         initialize_inline_failed.
19935         (cgraph_expand_function): Do not call cgraph_lower_function;
19936         assert that function is already lowered.
19937         * Makefile.in (cgraphbuild.o): New.
19938         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
19939         at the end of lowering passes.
19940
19941 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
19942
19943         * ifcvt.c (cond_move_convert_if_block): New function, code
19944         factored out from...
19945         (cond_move_process_if_block): ...here.  Call the new function
19946         on the THEN and ELSE blocks.
19947         (merge_if_block): Do not copy global_live_at_end, merge_blocks
19948         already takes care of this.
19949
19950 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19951
19952         PR c/19978
19953         * tree.h (TREE_OVERFLOW_P): New.
19954         * c-typeck.c (parser_build_unary_op): Warn only if result
19955         overflowed and operands did not.
19956         (parser_build_binary_op): Likewise.
19957         (convert_for_assignment): Remove redundant overflow_warning.
19958         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
19959
19960 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19961
19962         * c-typeck.c (store_init_value): Split over two lines to follow
19963         the GNU coding style.
19964
19965 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
19966
19967         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
19968         __GXX_EXPERIMENTAL_CXX0X__.
19969         * doc/cpp.texi: Same.
19970
19971 2007-01-05  Richard Guenther  <rguenther@suse.de>
19972
19973         PR middle-end/27826
19974         * tree.c (get_narrower): Do not construct COMPONENT_REFs
19975         with mismatched types.  Instead explicitly build a
19976         conversion NOP_EXPR.
19977
19978 2007-01-05  Ian Lance Taylor  <iant@google.com>
19979
19980         * c-common.c (decl_with_nonnull_addr_p): New function.
19981         (c_common_truthvalue_conversion): Call it.
19982         * c-typeck.c (build_binary_op): Likewise.
19983         * c-common.h (decl_with_nonnull_addr_p): Declare.
19984
19985 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
19986
19987         PR c/30360
19988         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
19989         denom against 0.0.
19990
19991 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
19992
19993         * doc/install.texi (Final install): Document the fact that
19994         the GNAT runtime should not be stripped.
19995
19996 2007-01-04  Jan Hubicka  <jh@suse.cz>
19997
19998         * tree-inline.c (fold_marked_statements): Update operand caches
19999         and EH after folding
20000
20001 2007-01-04  Ian Lance Taylor  <iant@google.com>
20002
20003         * c-common.c (check_function_nonnull): Whitespace fix.
20004
20005 2007-01-04  Jan Hubicka  <jh@suse.cz>
20006
20007         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
20008         comitted older version of patch.
20009         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
20010         function, celanup cfg and collect garbage.
20011
20012 2007-01-04  Mike Stump  <mrs@apple.com>
20013
20014         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
20015         (clean): Likewise.
20016
20017 2007-01-04  Eric Christopher  <echristo@apple.com>
20018
20019         * libgcc2.c (__bswapsi2): Use SItype.
20020         (__bswapdi2): Use DItype.
20021         * libgcc2.h: Update for above.
20022
20023 2007-01-04  Paul Brook  <paul@codesourcery.com>
20024
20025         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
20026         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
20027         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
20028         umulsidi3, umulsidi3adddi, smulsi3_highpart,
20029         umulsi3_highpart): Make conditional on !arm_arch6.
20030         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
20031         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
20032         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
20033         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
20034         umulsi3_highpart_v6): New insns.
20035
20036 2007-01-04  Roger Sayle  <roger@eyesopen.com>
20037
20038         * fold-const.c (fold_convert): When casting an expression to void,
20039         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
20040         have a type.  Instead of attempting to build a NOP_EXPR, return
20041         these "special" trees directly.
20042
20043 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
20044
20045         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
20046         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
20047         rs6000_cost->fp not 0 as adjustment for outer NEG.
20048
20049 2007-01-04  Jan Hubicka  <jh@suse.cz>
20050
20051         * cgraph.c (cgraph_release_function_body): New function.
20052         (cgraph_remove_node): Use it.
20053         * cgraph.h (cgraph_release_function_body): Declare.
20054         * cgraphunit.c (cgraph_expand_function): Use it.
20055         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
20056         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
20057         is initialized and while compilation of other function is running.
20058         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
20059         statement CFG annotations from here to ...
20060         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
20061
20062 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
20063
20064         * cfgloop.h (enum li_flags): Make the constants powers of two.
20065
20066 2007-01-04  Jan Hubicka  <jh@suse.cz>
20067
20068         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
20069         set.
20070         (fold_marked_statements): New function.
20071         (optimize_inline_calls, tree_function_versioning): Fold new statements.
20072         * tree-inline.h (copy_body_data): Add statements_to_fold.
20073
20074 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
20075
20076         * config.gcc: Mention libgcc/config.host.
20077         * Makefile.in: Update comments mentioning libgcc.
20078         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
20079         (all.cross, start.encap, rest.encap, rest.cross): Update
20080         dependencies for libgcc move.
20081         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
20082         (clean-target, clean-target-libgcc): Delete.
20083         (srcdirify, GCC_EXTRA_PARTS): New macros.
20084         (libgcc-support, libgcc.mvars): New rules.
20085         (distclean): Remove mention of mklibgcc.
20086         (install): Don't reference INSTALL_LIBGCC.
20087         (install-common): Don't reference EXTRA_PARTS.
20088         (install-libgcc, install-multilib): Delete rules.
20089         * mklibgcc.in: Delete file.
20090         * doc/configfiles.texi: Don't mention mklibgcc.
20091
20092         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
20093         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
20094         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
20095         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
20096         (mklibgcc, ldblspecs): Likewise.
20097
20098         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
20099         (posixpre.def): Use $(T).
20100         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
20101         (SHLIB_SRC, SHLIB_INSTALL): Delete.
20102         (SHLIB_LINK): Make dummy.
20103         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
20104
20105         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
20106
20107         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
20108         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
20109         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
20110         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
20111
20112         * configure.ac (all_outputs): Remove mklibgcc.
20113         * configure: Regenerated.
20114
20115 2007-01-03  Josh Conner  <jconner@apple.com>
20116
20117         PR middle-end/29683
20118         * calls.c (compute_argument_addresses): Set stack and stack_slot
20119         for partial args, too.
20120         (store_one_arg): Use locate.size.constant for the size when
20121         generating a save_area.
20122
20123 2007-01-03  Robert Kennedy <jimbob@google.com>
20124
20125         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
20126         whose definitions are deleted due to basic block merging.
20127
20128 2007-01-03  Paul Brook  <paul@codesourcery.com>
20129
20130         PR target/16634
20131         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
20132         functions.
20133         (use_return_insn): Return 0 for Thumb interrupt functions.
20134         (print_multi_reg): Add rfe argument for IRQ returns.
20135         (arm_output_epilogue): Pop interrupt return address directly into PC.
20136         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
20137
20138 2007-01-03  Paul Brook  <paul@codesourcery.com>
20139
20140         Merge from sourcerygxx-4_1.
20141         * config/arm/thumb2.md: New file.
20142         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
20143         Thumb-2.
20144         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
20145         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
20146         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
20147         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
20148         tables.
20149         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
20150         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
20151         comptibility.
20152         * config/arm/ieee754-sf.S: Ditto.
20153         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
20154         (thumb1_base_register_rtx_p): ... to this.
20155         (thumb_index_register_rtx_p): Rename...
20156         (thumb1_index_register_rtx_p): ... to this.
20157         (thumb_output_function_prologue): Rename...
20158         (thumb1_output_function_prologue): ... to this.
20159         (thumb_legitimate_address_p): Rename...
20160         (thumb1_legitimate_address_p): ... to this.
20161         (thumb_rtx_costs): Rename...
20162         (thumb1_rtx_costs): ... to this.
20163         (thumb_compute_save_reg_mask): Rename...
20164         (thumb1_compute_save_reg_mask): ... to this.
20165         (thumb_final_prescan_insn): Rename...
20166         (thumb1_final_prescan_insn): ... to this.
20167         (thumb_expand_epilogue): Rename...
20168         (thumb1_expand_epilogue): ... to this.
20169         (arm_unwind_emit_stm): Rename...
20170         (arm_unwind_emit_sequence): ... to this.
20171         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
20172         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
20173         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
20174         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
20175         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
20176         thumb2_output_casesi): New functions.
20177         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
20178         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
20179         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
20180         THUMB2_WORK_REGS): Define.
20181         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
20182         arm_condexec_mask, arm_condexec_masklen)): New variables.
20183         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
20184         (arm_override_options): Check new CPU capabilities.
20185         Set new architecture flag variables.
20186         (arm_isr_value): Handle v7m interrupt functions.
20187         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
20188         Thumb-2.
20189         (const_ok_for_arm): Handle Thumb-2 constants.
20190         (arm_gen_constant): Ditto.  Use movw when available.
20191         (arm_function_ok_for_sibcall): Return false for v7m interrupt
20192         functions.
20193         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
20194         (thumb_find_work_register, arm_load_pic_register,
20195         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
20196         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
20197         print_multi_reg, output_mov_long_double_fpa_from_arm,
20198         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
20199         output_mov_double_fpa_from_arm, output_move_double,
20200         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
20201         output_return_instruction, arm_output_function_prologue,
20202         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
20203         arm_output_mi_thunk, thumb_set_return_address): Ditto.
20204         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
20205         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
20206         (arithmetic_instr, shift_op): Use arm_shift_nmem.
20207         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
20208         '!' and 'L'.
20209         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
20210         (thumb_expand_prologue): Use thumb_set_frame_pointer.
20211         (arm_file_start): Output directive for unified syntax.
20212         (arm_unwind_emit_set): Handle stack alignment instruction.
20213         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
20214         Add v6t2, v7, v7a, v7r and v7m.
20215         (RETLDM): Add Thumb-2 code.
20216         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
20217         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
20218         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
20219         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
20220         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
20221         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
20222         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
20223         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
20224         ADJUST_INSN_LENGTH): Define.
20225         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
20226         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
20227         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
20228         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
20229         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
20230         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
20231         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
20232         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
20233         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
20234         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
20235         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
20236         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
20237         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
20238         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
20239         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
20240         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
20241         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
20242         cortex-m3.
20243         * config/arm/arm-tune.md: Regenerate.
20244         * config/arm/arm-protos.h: Update prototypes.
20245         * config/arm/vfp.md: Enable patterns for Thumb-2.
20246         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
20247         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
20248         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
20249         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
20250         * config/arm/libunwind.S: Add Thumb-2 code.
20251         * config/arm/constraints.md: Update include Thumb-2.
20252         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
20253         * config/arm/ieee754-df.S: Ditto.
20254         * config/arm/bpabi.S: Ditto.
20255         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
20256         * config/arm/predicates.md (low_register_operand,
20257         low_reg_or_int_operand, thumb_16bit_operator): New.
20258         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
20259         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
20260         * config/arm/t-arm-elf: Add armv7 multilib.
20261         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
20262         Include thumb2.md.
20263         (UNSPEC_STACK_ALIGN, ce_count): New.
20264         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
20265         arm_zero_extendsidi2, arm_zero_extendqidi2): New
20266         insns/expanders.
20267         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
20268         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
20269         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
20270         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
20271         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
20272         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
20273         insns.
20274         * doc/extend.texi: Document ARMv7-M interrupt functions.
20275         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
20276
20277 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
20278
20279         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
20280         (struct _Unwind_Context): Rename args_size to flags, remove
20281         signal_frame field, add a new args_size field and version field.
20282         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
20283         _Unwind_IsExtendedContext): New inline functions.
20284         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
20285         Assume by_value array is only present if _Unwind_IsExtendedContext.
20286         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
20287         _Unwind_IsSignalFrame.
20288         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
20289         (uw_update_context_1): Use _Unwind_SetSignalFrame.
20290         (uw_init_context_1): Initialize context->flags to
20291         EXTENDED_CONTEXT_BIT.
20292         * config/rs6000/linux-unwind.h (frob_update_context): Use
20293         _Unwind_SetSignalFrame.
20294
20295 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20296
20297         PR middle-end/30353
20298         * gimplify.c (gimplify_modify_expr_complex_part): Move below
20299         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
20300         the value.
20301
20302 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
20303
20304         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
20305         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
20306         RET, AT_SP): Remove.
20307         * config/i386/i386.md (*sse_prologue_save_insn): Use return
20308         instead of RET.
20309
20310         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
20311         * cfgbuild.c (find_basic_blocks): Likewise.
20312         * cfgrtl.c (rtl_create_basic_block): Likewise.
20313         * function.c (temp_slots_at_level): Likewise.
20314         * reg-stack.c (stack_regs_mentioned): Likewise.
20315         * regclass.c (allocate_reg_info): Likewise.
20316         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
20317         set_bb_for_stmt, move_block_to_fn): Likewise.
20318         * tree-complex.c (tree_lower_complex): Likewise.
20319         * vec.h (VEC_safe_grow_cleared): New.
20320
20321         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
20322
20323 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
20324
20325         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
20326         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
20327         to loop_version.
20328         * cfgloopmanip.c (scale_loop_frequencies): Export.
20329         (loopify): Scale the frequencies by prescribed coefficients.
20330         (set_zero_probability): New function.
20331         (duplicate_loop_to_header_edge): Improve updating of frequencies.
20332         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
20333         and frequencies according to arguments.
20334         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
20335         correctly.
20336         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
20337         * modulo-sched.c (sms_schedule): Set probabilities for entering
20338         versioned loop correctly.
20339         * tree-vect-transform.c (vect_transform_loop): Ditto.
20340         * cfgloop.h (loopify, loop_version): Declaration changed.
20341         (scale_loop_frequencies): Declared.
20342
20343 2007-01-02  Jan Hubicka  <jh@suse.cz>
20344
20345         * cgraph.c: Include tree-flow.h
20346         (cgraph_add_new-function): Handle IPA_SSA mode; execute
20347         early_local_passes.
20348         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
20349         * tree-pass.h (pass_all_early_optimizations): Declare.
20350         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
20351         early_local_passes.
20352         (cgraph_analyze_function): Do early_local_passes.
20353         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
20354         Do not add referenced vars.
20355         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
20356         SSA form.
20357         (gate_all_early_local_passes): New gate.
20358         (pass_early_local_passes): Use new gate.
20359         (execute_early_local_optimizations): New functions.
20360         (gate_all_early_optimizations): New gate.
20361         (pass_all_early_optimizations): New pass.
20362         (execute_free_datastructures): Free SSA only when initialized.
20363         (gate_init_datastructures): Init only when optimizing.
20364         (tree_lowering_passes): Do early local passes when called late.
20365         * tree-profile.c (do_tree_profiling): Don't profile functions added
20366         late.
20367         (do_early_tree_profiling, pass_early_tree_profile): Kill.
20368         * tree-cfg.c (update_modified_stmts): Do not update when operands are
20369         not active.
20370         * passes.c (init_optimizations_passes): Reorder so we go into SSA
20371         during early_local_passes.
20372         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
20373
20374
20375 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
20376
20377         * Makefile.in: Update copyright year.
20378
20379 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
20380
20381         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
20382         in $(lang_checks) and check-consistency targets.
20383
20384 2007-01-02  Jan Hubicka  <jh@suse.cz>
20385
20386         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
20387         Do not add referenced vars.
20388         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
20389         are not active.
20390         * passes.c (init_optimization_passes): Put mudflap_2 after
20391         free_datastructures.
20392
20393 2007-01-02  Jan Hubicka  <jh@suse.cz>
20394
20395         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
20396         Set NOTHROW flag on call statements proved to be nothrow.
20397         Update statement of local calls so new pure/const functions are
20398         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
20399         goto receivers.
20400         (tree_rest_of_compilation): Register hooks and initialize bitmap
20401         early. Do not set after_inlining flag.
20402
20403 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
20404
20405         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
20406         HOST_BITS_PER_LONGLONG
20407
20408 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
20409
20410         PR c/19977
20411         * c-typeck.c (store_init_value): Don't emit pedantic overflow
20412         warning for non-static initializers.
20413
20414 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
20415
20416         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
20417         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
20418         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
20419         Always use set_unique_reg_note to add REG_EQUAL notes.
20420
20421 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
20422
20423         Revert:
20424         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
20425
20426         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
20427         * cfgbuild.c (find_basic_blocks): Likewise.
20428         * cfgrtl.c (rtl_create_basic_block): Likewise.
20429         * function.c (temp_slots_at_level): Likewise.
20430         * reg-stack.c (stack_regs_mentioned): Likewise.
20431         * regclass.c (allocate_reg_info): Likewise.
20432         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
20433         set_bb_for_stmt, move_block_to_fn): Likewise.
20434         * tree-complex.c (tree_lower_complex): Likewise.
20435         * vec.h (VEC_safe_grow_cleared): New.
20436
20437 2007-01-02  Ian Lance Taylor  <iant@google.com>
20438
20439         * c-common.c (c_common_truthvalue_conversion): When warning about
20440         using an assignment as a truth value, set TREE_NO_WARNING.
20441
20442 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20443
20444         PR middle-end/7651
20445         * c.opt (Wold-style-declaration): New.
20446         * doc/invoke.texi (C-only Warning Options): New.
20447         (Wold-style-declaration): Document it.
20448         (Wextra): Enabled by -Wextra.
20449         * c-opts.c (c_common_post_options): Enabled by -Wextra.
20450         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
20451         -Wold-style-declaration.
20452
20453 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
20454
20455         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
20456         * cfgbuild.c (find_basic_blocks): Likewise.
20457         * cfgrtl.c (rtl_create_basic_block): Likewise.
20458         * function.c (temp_slots_at_level): Likewise.
20459         * reg-stack.c (stack_regs_mentioned): Likewise.
20460         * regclass.c (allocate_reg_info): Likewise.
20461         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
20462         set_bb_for_stmt, move_block_to_fn): Likewise.
20463         * tree-complex.c (tree_lower_complex): Likewise.
20464         * vec.h (VEC_safe_grow_cleared): New.
20465
20466 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
20467
20468         * c-common.c (c_common_nodes_and_builtins): Since variants of
20469         void_type_node get built before it is given a name, we need to
20470         give those variants the name, too.
20471         (complete_array_type): We need to work with the canonical main
20472         type of the array, from which we will build the qualified version.
20473         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
20474         * print-tree.c (print_node): Display canonical type information
20475         for each type.
20476         * stor-layout.c (layout_type): When we don't know the
20477         alignment of a type for which we're building an array, we end up
20478         guessing wrong, so make the type require structural equality.
20479         * tree.c (make_node_stat): When we build a new type, it is its
20480         own canonical type.
20481         (build_type_attribute_qual_variant): When building an attribute
20482         variant, its canonical type is the non-attribute variant. However,
20483         if the attributes are target-dependent and they differ, we need to
20484         use structural equality checks for this type.
20485         (build_qualified_type): A qualified type is not equivalent to its
20486         unqualified variant; set the canonical type appropriately.
20487         (build_distinct_type_copy): When building a distinct type from
20488         another type, the new type is its own canonical type.
20489         (build_variant_type_copy): When building a new type variant, we
20490         assume that it is equivalent to the original type.
20491         (build_pointer_type_for_mode): When building a pointer type, also
20492         build a canonical type pointer.
20493         (build_reference_type_for_mode): When building a reference type,
20494         also build a canonical type reference.
20495         (build_index_type): When we can't hash an index type (e.g.,
20496         because its maximum value is negative), the index type requires
20497         structural equality tests.
20498         (build_array_type): Build the canonical form of an array type.
20499         (build_function_type): Function types require structural equality,
20500         because they contain default arguments, attributes, etc.
20501         (build_method_type_directly): Ditto for method types.
20502         (build_offset_type): Build the canonical offset type.
20503         (build_complex_type): Build the canonical vector type.
20504         (make_vector_type): Build the canonical vector type.
20505         * tree.h (TYPE_CANONICAL): New.
20506         (TYPE_STRUCTURAL_EQUALITY_P): New.
20507         (SET_TYPE_STRUCTURAL_EQUALITY): New.
20508         (struct tree_type): Added "canonical" field.
20509         * params.h (VERIFY_CANONICAL_TYPES): New.
20510         * doc/c-tree.texi (TYPE_CANONICAL): Document.
20511         (TYPE_STRUCTURAL_EQUALITY_P): Document.
20512         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
20513         * doc/invoke.texi (verify-canonical-types): Document --param
20514         parameter for verifying canonical types.
20515
20516 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
20517
20518         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
20519         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
20520         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
20521         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
20522         tm_file.
20523         * config/rs6000/e500.h: New.
20524         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
20525         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
20526         Remove.
20527         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
20528         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
20529         TARGET_E500_DOUBLE): Remove.
20530         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
20531         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
20532         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
20533         * config/rs6000/rs6000.c (rs6000_override_options): Use
20534         CHECK_E500_OPTIONS.
20535
20536 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
20537
20538         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
20539         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
20540         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
20541         rs6000_emit_cmove): Don't check TARGET_E500.
20542         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
20543         sordered): Don't check TARGET_E500.
20544
20545 2007-01-01  Eric Christopher  <echristo@apple.com>
20546
20547         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
20548         HARD_REGISTER_NUM_P.
20549
20550 2007-01-01  Roger Sayle  <roger@eyesopen.com>
20551
20552         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
20553         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
20554         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
20555         eq/ne Y".
20556
20557 2007-01-01  Mike Stump  <mrs@apple.com>
20558
20559         * configure.ac: Remove support for building with Apple's gcc-3.1.
20560
20561 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
20562
20563         PR middle-end/30311
20564         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
20565         REG is a hard register.  Do not modify REG before calling
20566         subreg_nregs.
20567         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
20568         multiple of the size of YMODE for certain lowpart cases.
20569
20570 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
20571
20572         PR middle-end/30253
20573         * gimplify (voidify_wrapper_expr): Update for
20574         GIMPLE_MODIFY_STMT.
20575
20576 2007-01-01  Andreas Schwab  <schwab@suse.de>
20577
20578         PR target/29166
20579         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
20580         save of BR0 in extra_spill_size instead of spill_size.
20581         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
20582         area.
20583         (ia64_expand_epilogue): Restore BR0 from its new location.
20584
20585 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
20586
20587         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
20588         Use a temporary variable if the left hand side is not a gimple
20589         register.
20590
20591 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
20592
20593         * gimplify.c (gimplify_return_expr): Make the temporary variable
20594         for the return expression, a gimple register variable.
20595
20596 2007-01-01  Jan Hubicka  <jh@suse.cz>
20597
20598         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
20599         INSN_LIST.
20600
20601 2007-01-01  Mike Stump  <mrs@apple.com>
20602
20603         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
20604         .literal16.
20605         * config/darwin.c (machopic_select_rtx_section): Use
20606         HAVE_GAS_LITERAL16.
20607         (darwin_mergeable_constant_section): Likewise.
20608         * configure: Regenerate.
20609         * config.in: Regenerate.
20610
20611 2007-01-01  Jan Hubicka  <jh@suse.cz>
20612             Andrew Pinski  <pinskia@gmail.com>
20613
20614         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
20615         before starting IPA passes.