OSDN Git Service

* config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-00-01  Jan Hubicka  <jh@suse.cz>
2
3         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
4
5         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P): Pass speed operand.
6         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
7         * gimplify.c (gimplify_init_constructor): Add speed operand.
8         * tree-sra.c (decide_block_copy): Likewise.
9         * tree-inline.c (estimate_move_cost): Likewise.
10         * config/alpha/alpha.h (MOVE_RATIO): Update.
11         * config/frv/frv.c (MOVE_RATIO): Update.
12         * config/spu/spu.h (MOVE_RATIO): Update.
13         * config/sparc/sparc.h (MOVE_RATIO): Update.
14         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
15         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
16         * config/cris/cris.h (MOVE_RATIO): Update.
17         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
18         * config/arm/arm.h (MOVE_RATIO): Update.
19         * config/pa/pa.md: Update uses of MOVE_RATIO
20         * config/pa/pa.h (MOVE_RATIO): Update.
21         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES, CLEAR_RATIO, SET_RATIO): Update.
22         * config/h8300/h8300.h (MOVE_RATIO): Update.
23         * config/v850/v850.h (MOVE_RATIO): Update.
24         * config/bfin/bfin.h (MOVE_RATIO): Update.
25
26 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
27         Dmitry Melnik  <dm@ispras.ru>
28         Dmitry Zhurikhin  <zhur@ispras.ru>
29         Alexander Monakov  <amonakov@ispras.ru>
30         Maxim Kuvyrkov  <maxim@codesourcery.com>
31
32         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
33         sel-sched-dump.c, sel-sched-ir.c: New files.
34         * Makefile.in (OBJS-common): Add selective scheduling object
35         files.
36         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
37         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
38         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
39         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
40         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
41         (make_forwarder_block): Update loop latch if we have redirected
42         the loop latch edge.
43         * cfgloop.c (get_loop_body_in_custom_order): New function.
44         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
45         (CP_FALLTHRU_PREHEADERS): Likewise.
46         (get_loop_body_in_custom_order): Declare.
47         * cfgloopmanip.c (has_preds_from_loop): New.
48         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
49         Assert that the preheader edge will be fall thru when it is set.
50         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
51         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
52         fsel-sched-substitution, fselective-scheduling): New flags.
53         * cse.c (hash_rtx_cb): New.
54         (hash_rtx): Use it.
55         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
56         sel_sched_insn_cnt): New counters. 
57         * final.c (compute_alignments): Export.  Free dominance info after loop_optimizer_finalize.
58         * genattr.c (main): Output maximal_insn_latency prototype.
59         * genautomata.c (output_default_latencies): New. Factor its code from ...
60         (output_internal_insn_latency_func): ... here.
61         (output_internal_maximal_insn_latency_func): New.
62         (output_maximal_insn_latency_func): New.
63         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
64         (struct hard_reg_set_iterator): New.
65         (hard_reg_set_iter_init, hard_reg_set_iter_set,
66         hard_reg_set_iter_next): New functions.
67         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
68         * lists.c (remove_free_INSN_LIST_node,
69         remove_free_EXPR_LIST_node): New functions.
70         * loop-init.c (loop_optimizer_init): When LOOPS_HAVE_FALLTHRU_PREHEADERS,
71         set CP_FALLTHRU_PREHEADERS when calling create_preheaders.
72         (loop_optimizer_finalize): Do not verify flow info after reload.
73         * recog.c (validate_replace_rtx_1): New parameter simplify.
74         Default it to true.  Update all uses.  Factor out simplifying
75         code to ...
76         (simplify_while_replacing): ... this new function.
77         (validate_replace_rtx_part,
78         validate_replace_rtx_part_nosimplify): New.
79         * recog.h (validate_replace_rtx_part,
80         validate_replace_rtx_part_nosimplify): Declare.
81         * rtl.c (rtx_equal_p_cb): New.
82         (rtx_equal_p): Use it.
83         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
84         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
85         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
86         * vecprim.h: Add a vector type for unsigned int. 
87         * haifa-sched.c: Include vecprim.h and cfgloop.h.
88         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
89         ready_try, cycle_issued_insns, spec_info): Make global.
90         (readyp): Initialize.
91         (dfa_lookahead): New global variable.
92         (old_max_uid, old_last_basic_block): Remove.
93         (h_i_d): Make it a vector.
94         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
95         through HID macro.
96         (after_recovery, adding_bb_to_current_region_p):
97         New variables to handle correct insertion of the recovery code.
98         (struct ready_list): Move declaration to sched-int.h.
99         (rgn_n_insns): Removed.
100         (rtx_vec_t): Move to sched-int.h.
101         (find_insn_reg_weight): Remove.
102         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
103         (haifa_init_h_i_d, haifa_finish_h_i_d):
104         New functions to initialize / finalize haifa instruction data.
105         (extend_h_i_d, init_h_i_d): Rewrite.
106         (unlink_other_notes): Move logic to add_to_note_list.  Handle
107         selective scheduler.
108         (ready_lastpos, ready_element, ready_sort, reemit_notes,
109         find_fallthru_edge): Make global, remove static prototypes.
110         (max_issue): Make global.  Add privileged_n and state parameters.  Use
111         them.  
112         (extend_global, extend_all): Removed.
113         (init_before_recovery): Add new param.  Fix the handling of the case
114         when we insert a recovery code before the EXIT which has a predecessor
115         with a fallthrough edge to it.
116         (create_recovery_block): Make global.  Rename to
117         sched_create_recovery_block.  Update.
118         (change_pattern): Rename to sched_change_pattern.  Make global.
119         (speculate_insn): Rename to sched_speculate_insn.  Make global.
120         Split haifa-specific functionality into ...
121         (haifa_change_pattern): New static function.
122         (sched_extend_bb): New static function.
123         (sched_init_bbs): New function.
124         (current_sched_info): Change type to struct haifa_sched_info.
125         (insn_cost): Adjust for selective scheduling.
126         (dep_cost_1): New function.  Move logic from ...
127         (dep_cost): ... here.
128         (dep_cost): Use dep_cost_1.
129         (contributes_to_priority_p): Use sched_deps_info instead of
130         current_sched_info.
131         (priority): Adjust to work with selective scheduling.  Process the
132         corner case when all dependencies don't contribute to priority.
133         (rank_for_schedule): Use ds_weak instead of dep_weak.
134         (advance_state): New function.  Move logic from ...
135         (advance_one_cycle): ... here.
136         (add_to_note_list, concat_note_lists): New functions.
137         (rm_other_notes): Make static.  Adjust for selective scheduling.
138         (remove_notes, restore_other_notes): New functions.
139         (move_insn): Add two arguments.  Update assert.  Don't call
140         reemit_notes.
141         (choose_ready): Remove lookahead variable, use dfa_lookahead.
142         Remove more_issue, max_points.  Move the code to initialize
143         max_lookahead_tries to max_issue.
144         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
145         ready.  Adjust use of move_insn.  Call restore_other_notes.
146         (luid): Remove.
147         (sched_init, sched_finish): Move Haifa-specific initialization/
148         finalization to ...
149         (haifa_sched_init, haifa_sched_finish): ... respectively.
150         New functions.
151         (setup_sched_dump): New function.
152         (haifa_init_only_bb): New static function.
153         (haifa_speculate_insn): New static function.
154         (try_ready): Use haifa_* instead of speculate_insn and
155         change_pattern.
156         (extend_ready, extend_all): Remove.
157         (sched_extend_ready_list, sched_finish_ready_list): New functions.
158         (create_check_block_twin, add_to_speculative_block): Use
159         haifa_insns_init instead of extend_global.  Update to use new
160         initialization functions.  Change parameter.  Factor out code from
161         create_check_block_twin to ...
162         (sched_create_recovery_edges) ... this new function.
163         (add_block): Remove.
164         (sched_scan_info): New.
165         (extend_bb): Use sched_scan_info.
166         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
167         static functions for walking through scheduling region.
168         (sched_luids): New vector variable to replace uid_to_luid.
169         (luids_extend_insn): New function.
170         (sched_max_luid): New variable.
171         (luids_init_insn): New function.
172         (sched_init_luids, sched_finish_luids): New functions.
173         (insn_luid): New debug function.
174         (sched_extend_target): New function.
175         (haifa_init_insn): New static function.
176         (sched_init_only_bb): New hook.
177         (sched_split_block): New hook.
178         (sched_split_block_1): New function.
179         (sched_create_empty_bb): New hook.
180         (sched_create_empty_bb_1): New function.        
181         (common_sched_info, ready): New global variables.
182         (current_sched_info_var): Remove.
183         (move_block_after_check): Use common_sched_info.                
184         (haifa_luid_for_non_insn): New static function. 
185         (init_before_recovery): Use haifa_init_only_bb instead of
186         add_block.
187         (increase_insn_priority): New.
188         * modulo-sched.c: (issue_rate): Remove static declaration.
189         (sms_sched_info): Change type to haifa_sched_info.
190         (sms_sched_deps_info, sms_common_sched_info): New variables.
191         (setup_sched_infos): New.
192         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
193         Do not call regstat_free_calls_crossed.
194         (sms_print_insn): Use const_rtx.
195         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
196         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
197         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
198         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
199         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
200         current_sched_info to use it.
201         (enum reg_pending_barrier_mode): Move to sched-int.h.
202         (h_d_i_d): New variable. Initialize to NULL.
203         ({true, output, anti, spec, forward}_dependency_cache): Initialize
204         to NULL.
205         (estimate_dep_weak): Remove static declaration.
206         (sched_has_condition_p): New function.  Adjust users of
207         sched_get_condition to use it instead.
208         (conditions_mutex_p): Add arguments indicating which conditions are
209         reversed.  Use them.
210         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
211         argument to indicate whether returned condition is reversed.  Do not
212         generate new rtx when condition should be reversed; indicate it by
213         setting new argument instead.
214         (add_dependence_list_and_free): Add deps parameter.
215         Update all users.  Do not free dependence list when
216         deps context is readonly.
217         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
218         contexts.
219         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
220         (remove_from_deps): New. Use the above functions.       
221         (cur_insn, can_start_lhs_rhs_p): New static variables.
222         (add_or_update_back_dep_1): Initialize present_dep_type.
223         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
224         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
225         haifa_note_dep): New functions implementing dependence hooks for
226         the Haifa scheduler.
227         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
228         note_dep): New functions.
229         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
230         functions.
231         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
232         (free_deps): Initialize deps->reg_last.
233         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
234         sched_analyze_insn): Update to use dependency hooks infrastructure
235         and readonly contexts.
236         (deps_analyze_insn): New function.  Move part of logic from ...
237         (sched_analyze): ... here.  Also move some logic to ...
238         (deps_start_bb): ... here.  New function.
239         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
240         sel_sched_p.
241         (sched_deps_init): New function.  Move code from ...
242         (init_dependency_caches): ... here.  Remove.
243         (init_deps_data_vector): New.
244         (sched_deps_finish): New function.  Move code from ...
245         (free_dependency_caches): ... here.  Remove.
246         (init_deps_global, finish_deps_global): Adjust for use with
247         selective scheduling.
248         (get_dep_weak): Move logic to ...
249         (get_dep_weak_1): New function.
250         (ds_merge): Move logic to ...
251         (ds_merge_1): New static function.
252         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
253         (ds_get_max_dep_weak): New function.
254         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
255         (n_insns): Rename to rgn_n_insns.
256         (debug_ebb_dependencies): New function.
257         (init_ready_list): Use it.
258         (begin_schedule_ready): Use sched_init_only_bb.
259         (ebb_print_insn): Indicate when an insn starts a new cycle.
260         (contributes_to_priority, compute_jump_reg_dependencies,
261         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
262         (add_block1): Remove to ebb_add_block.
263         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
264         (schedule_ebb): Initialize them.  Use remove_notes instead of
265         rm_other_notes.  Use haifa_local_init/finish.
266         (schedule_ebbs): Use haifa_sched_init/finish.
267         * sched-int.h: Include vecprim.h, remove rtl.h.
268         (struct ready_list): Delete declaration.
269         (sched_verbose_param, enum sched_pass_id_t,
270         bb_vec_t, insn_vec_t, rtx_vec_t): New.
271         (struct sched_scan_info_def): New structure.
272         (sched_scan_info, sched_scan, sched_init_bbs,
273         sched_init_luids, sched_finish_luids, sched_extend_target,
274         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
275         (struct common_sched_info_def): New.
276         (common_sched_info, haifa_common_sched_info,
277         sched_emulate_haifa_p): Declare.
278         (sel_sched_p): New.
279         (sched_luids): Declare.
280         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
281         (sched_max_luid, insn_luid): Declare.
282         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
283         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
284         print_insn, print_pattern, print_value, haifa_classify_insn,
285         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
286         setup_sched_dump, sched_init, sched_finish,
287         sel_insn_is_speculation_check): Export.
288         (struct ready_list): Move from haifa-sched.c.
289         (ready_try, ready, max_issue): Export.
290         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
291         sched_init_only_bb, sched_split_block, sched_split_block_1,
292         sched_create_empty_bb, sched_create_empty_bb_1,
293         sched_create_recovery_block, sched_create_recovery_edges): Export.
294         (enum reg_pending_barrier_mode): Export.
295         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
296         (deps_t): New.
297         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
298         print_insn field.  Move add_block and fix_recovery_cfg to
299         common_sched_info_def.  Move compute_jump_reg_dependencies, use_cselib  ...
300         (struct sched_deps_info_def): ... this new structure.
301         (sched_deps_info): Declare.
302         (struct spec_info_def): Remove weakness_cutoff, add
303         data_weakness_cutoff and control_weakness_cutoff.
304         (spec_info): Declare.
305         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
306         dep_count field.
307         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
308         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
309         (current_sched_info): Change type to struct haifa_sched_info.
310         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
311         (h_d_i_d): New variable.
312         (HDID): New accessor macro.
313         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
314         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
315         and HDID.
316         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
317         (enum SCHED_FLAGS): Update for selective scheduler.
318         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
319         (init_dependency_caches, free_dependency_caches): Delete declarations.
320         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
321         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
322         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
323         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
324         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
325         ds_to_dt): Export.
326         (rm_other_notes): Delete declaration.
327         (schedule_block): Remove one argument.
328         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
329         ready_element, ready_lastpos, sched_extend_ready_list,
330         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
331         concat_note_lists): Export.
332         (struct region): Move from sched-rgn.h.
333         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
334         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
335         BLOCK_TO_BB, CONTAINING_RGN): Export.
336         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
337         (current_nr_blocks, current_blocks, target_bb): Likewise.
338         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
339         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
340         sched_rgn_local_init, extend_regions,
341         rgn_make_new_region_out_of_new_block, compute_priorities,
342         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
343         extend_rgns, deps_join rgn_setup_common_sched_info,
344         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
345         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
346         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority, 
347         increase_insn_priority): Likewise.
348         * sched-rgn.c: Include sel-sched.h.
349         (ref_counts): New static variable.  Use it ...
350         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
351         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
352         (sched_is_disabled_for_current_region_p): Delete static declaration.
353         (struct region): Move to sched-int.h.
354         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
355         ebb_head): Define and initialize.
356         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
357         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
358         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
359         sched-int.h.
360         (find_single_block_region): Add new argument to indicate that EBB
361         regions should be constructed.
362         (debug_live): Delete declaration.
363         (current_nr_blocks, current_blocks, target_bb): Remove static qualifiers.
364         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
365         declaration.
366         (init_regions): Delete declaration.
367         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
368         rgn_estimate_number_of_insns): New.
369         (too_large): Use estimate_number_of_insns.
370         (haifa_find_rgns): New. Move the code from ...
371         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
372         (free_trg_info): New.
373         (compute_trg_info): Allocate candidate tables here instead of ...
374         (init_ready_list): ... here.
375         (rgn_print_insn): Use const_rtx.
376         (contributes_to_priority, extend_regions): Delete static declaration.
377         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
378         (add_block1): Rename to rgn_add_block.
379         (debug_rgn_dependencies): Delete static qualifier.
380         (new_ready): Use sched_deps_info.  Simplify.
381         (rgn_common_sched_info, rgn_const_sched_deps_info,
382         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info): New.
383         (region_sched_info): Rename to rgn_const_sched_info.
384         (deps_join): New, extracted from ...
385         (propagate_deps): ... here.
386         (compute_block_dependences, debug_dependencies): Update for selective
387         scheduling.
388         (free_rgn_deps, compute_priorities): New functions.
389         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
390         sched_rgn_compute_dependencies): New functions.
391         (schedule_region): Use them.
392         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
393         rgn_setup_common_sched_info, rgn_setup_sched_infos):
394         New functions.
395         (schedule_insns): Call new functions that were split out.
396         (rgn_make_new_region_out_of_new_block): New.
397         (get_rgn_sched_max_insns_priority): New.
398         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
399         scheduling when appropriate.
400         * sched-vis.c: Include insn-attr.h.
401         (print_value, print_pattern): Make global.
402         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
403         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
404         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
405         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
406         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
407         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
408         hooks.  Initialize them to 0.
409         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
410         * target.h (struct gcc_target): Add them.  Rename gen_check field to
411         gen_spec_check.
412         * flags.h (sel_sched_switch_set): Declare.
413         * opts.c (sel_sched_switch_set): New variable.
414         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
415         pipelining is disabled from command line.
416         (common_handle_option): Record whether selective scheduling is
417         requested from command line.
418         * doc/invoke.texi: Document new flags and parameters.
419         * doc/tm.texi: Document new target hooks.
420         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to ia64_gen_check.
421         (dfa_state_size): Do not declare locally.
422         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
423         * config/rs6000/rs6000.c (rs6000_init_sched_context,
424         rs6000_alloc_sched_context, rs6000_set_sched_context,
425         rs6000_free_sched_context): New functions.
426         (struct _rs6000_sched_context): New.
427         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
428         scheduling.
429         (rs6000_sched_finish): Do not run for selective scheduling. 
430
431 2008-08-31  Jan Hubicka  <jh@suse.cz>
432
433         * frv.c (frv_rtx_costs): Update forward declaration.
434         * spu.c (spu_rtx_costs): Likewise.
435         * pdp11.c: Include df.h
436         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
437         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
438         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
439         * iq2000.c (iq2000_address_cost): Add speed argument.
440         (iq2000_rtx_costs): Likewise.
441         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
442         update call of mn10300_address_cost.
443         * mcore.c: Include df.h
444         (mcore_rtx_costs): Update prototype.
445         * score3.c: Include df.h
446         (score3_rtx_costs): Remove speed argument.
447         * score7.c: Include df.h
448         (score7_address_cost): Remove speed argument.
449         * score-protos.h (score_address_cost): Update prototype.
450         * score.c: Include df.h
451         (score_rtx_costs): Update call of costs functions.
452         * v850.c (v850_rtx_costs): Add bool argument.
453
454 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
455
456         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
457
458 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
459
460         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
461         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
462
463 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
464
465         * mkmap-flat.awk: Add option pe_dll.
466         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
467         * config/i386/t-cygwin (SHLIB_LC): Add.
468         * config/i386/t-mingw32 (SHLIB_LC): Add.
469         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
470         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
471         (LINK_SPEC): Support libgcc_s.
472         (LIBGCC_SPEC): Support libgcc_s.
473         (LIBGCC_SONAME): New.
474
475 2008-08-31  Jan Hubicka  <jh@suse.cz>
476
477         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
478         mistakely had old version of patch.
479
480         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
481         (ipcp_estimate_growth): New.
482         (ipcp_insert_stage): Use ipcp_estimate_growth.
483         * profile.c (branch_prob): When reading failed, do not consider
484         profile as read.
485
486 2008-08-31  Jan Hubicka  <jh@suse.cz>
487
488         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
489         loop is optimized for speed.
490
491 2008-08-31  Richard Guenther  <rguenther@suse.de>
492
493         PR middle-end/37289
494         * fold-const.c (fold_binary): Retain conversions in folding
495         ~A + 1 to -A.
496
497 2008-08-31  Jan Hubicka  <jh@suse.cz>
498
499         * postreload-gcse.c (eliminate_partially_redundant_loads): Use optimize_bb_for_size_p.
500         * predict.c (maybe_hot_frequency_p): Make inline.
501         (maybe_hot_count_p): Break out from ...
502         (maybe_hot_bb_p): ... this one.
503         (maybe_hot_edge_p): Simplify.
504         * basic-block.h (probably_cold_bb_p): Remove.
505
506 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
507
508         PR target/37168
509         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
510         prototype.
511         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
512         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
513         Also split V4SFmode.
514         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
515         vector float modes.
516
517 2008-08-31  Jan Hubicka  <jh@suse.cz>
518
519         * predict.c (PROB_VERY_LIKELY): Make small enough so things
520         become cold.
521         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
522
523 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
524
525         PR debug/37287
526         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
527         add source coords.
528
529         * dwarf2out.c (native_encode_initializer): Subtract min_index for
530         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
531
532 2008-08-31  Jan Hubicka  <jh@suse.cz>
533
534         * sparc.h (BRANCH_COST): Fix macro definition.
535         * avr.c (avr_operand_rtx_cost): Add speed argument.
536         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
537
538 2008-08-31  Richard Guenther  <rguenther@suse.de>
539
540         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
541         types instead of operands.  Re-instantiate verifying of
542         binary expression operands.
543
544 2008-08-30  Jan Hubicka  <jh@suse.cz>
545
546         * fwprop.c (should_replace_address): Add speed attribute.
547         (PR_OPTIMIZE_FOR_SPEED): New flag.
548         (propagate_rtx_1): Use it.
549         (propagate_rtx): Set it.
550         (try_fwprop_subst): Update call of rtx_costs.
551         (forward_propagate_and_simplify): LIkewise.
552         * hooks.c (hook_int_rtx_bool_0): New
553         (hook_bool_rtx_int_int_intp_false): Replace by ...
554         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
555         * hooks.h (hook_int_rtx_bool_0): New
556         (hook_bool_rtx_int_int_intp_false): Replace by ...
557         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
558         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
559         (prepare_cmp_insn): UPdate call of rtx_cost.
560         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
561         (reload_cse_simplify_operands): Update call of rtx_cost.
562         (reload_cse_move2add): call of rtx_cost.
563         * target.h (struct gcc_target): Update rtx_costs and address_costs.
564         * rtlanal.c (rtx_cost): Add speed argument.
565         (address_cost): Add speed argument
566         (default_address_cost): Likewise.
567         (insn_rtx_cost): Likewise.
568         * cfgloopanal.c (seq_cost): Add speed argument.
569         (target_reg_cost, target_spill_cost): Turn to array.
570         (init_set_costs): Update for speed.
571         (estimate_reg_pressure_cost): Add speed argument.
572         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
573         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
574         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
575         (seq_cost): Add speed argument.
576         (computation_cost): Add speed arugment.
577         (add_cost, multiply_by_const, get_address_cost): add speed argument.
578         (force_expr_to_var_cost): Update for profile info.
579         (force_var_cost): Likewise.
580         (split_address_cost): Likewise.
581         (ptr_difference_cost): Likewise.
582         (difference_cost): Likewise.
583         (get_computation_cost_at): Likewise.
584         (determine_iv_cost): Likewise.
585         (ivopts_global_cost_for_size): Likewise.
586         (rewrite_use_address): Likewise.
587         (tree_ssa_iv_optimize_loop): Initialize speed field.
588         * cse.c (optimize_this_for_speed_p): New static var.
589         (notreg_cost): Update call of rtx_cost.
590         (cse_extended_basic_block): set optimize_this_for_speed_p.
591         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
592         (noce_try_cmove_arith): Likewise.
593         (noce_try_sign_mask): LIkewise.
594         * expr.c (compress_float_constant): Update rtx_cost calls.
595         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed argument.
596         (addr_to_parts): Likewise.
597         (create_mem_ref): Likewise.
598         * dse.c (find_shift_sequence): Add speed argument.
599         (replace_read): Update call.
600         * calls.c (precompute_register_parameters): Update call of rtx_cost.
601         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
602         * neg_cost, shift_cost, shiftadd_cost,
603         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
604         mul_highpart_cost): Increase dimension.
605         (init_expmed): Initialize for both size and speed.
606         (expand_shift): Use profile.
607         (synth_mult): Use profile.
608         (choose_mult_variant): Use profile.
609         (expand_mult): Use profile.
610         (expand_mult_highpart_optab): Use profile.
611         (expand_mult_highpart): Use profile.
612         (expand_smod_pow2): Use profile.
613         (expand_divmod): Use profile.
614         * simplify-rtx.c (simplify_binary_operation_1): Update call of rtx_cost.
615         * loop-invariant.c (create_new_invariant): Use profile.
616         (gain_for_invariant): Add speed parameter.
617         (best_gain_for_invariant): Likewise.
618         (find_invariants_to_move): Likewise.
619         (move_single_loop_invariants): Set it.
620         * target-def.h (TARGET_RTX_COSTS): Use hook.
621         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
622         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
623         * output.h (default_address_cost): Update prototype.
624         * combine.c (optimize_this_for_speed_p): New static var.
625         (combine_validate_cost): Update call of rtx_cost.
626         (combine_instructions): Set optimize_this_for_speed_p.
627         (expand_compound_operation): Update call of rtx_cost.
628         (make_extraction):Update call of rtx_cost.
629         (force_to_mode):Update call of rtx_cost.
630         (distribute_and_simplify_rtx):Update call of rtx_cost.
631         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
632         (estimate_reg_pressure_cost): Update prototype.
633         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
634         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
635         Remove.
636         * config/alpha/alpha.c (alpha_rtx_costs): Update.
637         (alpha_rtx_costs): Update.
638         * config/frv/frv.c (frv_rtx_costs): Update.
639         * config/s390/s390.c (s390_rtx_costs): Update.
640         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
641         (m32c_rtx_costs): Update.
642         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
643         (spu_rtx_costs): Update.
644         * config/sparc/sparc.c (sparc_rtx_costs): Update.
645         * config/m32r/m32r.c (m32r_rtx_costs): Update.
646         * config/i386/i386.c (:ix86_address_cost): Update.
647         (ix86_rtx_costs): Update.
648         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
649         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
650         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
651         * config/crx/crx.c (crx_address_cost): Update.
652         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
653         * config/stormy16/stormy16.c
654         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
655         * config/m68hc11/m68hc11.c
656         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
657         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
658         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost): Update.
659         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs): Update
660         * config/ia64/ia64.c (ia64_rtx_costs): Update.
661         * config/m68k/m68k.c (m68k_rtx_costs): Update.
662         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
663         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
664         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
665         (mcore_rtx_costs): update.
666         * config/score/score3.c (score3_rtx_costs): Update.
667         * config/score/score7.c (score7_rtx_costs): Update.
668         * config/score/score3.h (score3_rtx_costs):Update.
669         * config/score/score7.h (score7_rtx_costs): Update.
670         * config/score/score.c (score_rtx_costs): Update.
671         * config/arm/arm.c (arm_address_cost): Update.
672         (arm_rtx_costs_1): Update.
673         (arm_rtx_costs_1): Update.
674         (arm_size_rtx_costs): Update.
675         (arm_size_rtx_costs): Update.
676         (arm_size_rtx_costs): Update.
677         (arm_xscale_rtx_costs): Update.
678         (arm_thumb_address_cost): Update.
679         * config/pa/pa.c (hppa_address_cost): Update.
680         * config/mips/mips.c (mips_rtx_costs): Update.
681         * config/vax/vax.c (vax_address_cost): Update.
682         * config/h8300/h8300.c (h8300_shift_costs): Update.
683         (h8300_rtx_costs): Update.
684         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
685         (v850_rtx_costs): Update.
686         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
687         * config/bfin/bfin.c
688         (bfin_address_cost): Update.
689         (bfin_rtx_costs): Update.
690         * stmt.c (lshift_cheap_p): Update.
691
692 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
693
694         PR middle-end/36444
695         * expmed.c (extract_bit_field_1): Check the mode size to make
696         sure the vector modes have the same size.
697
698 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
699
700         * dojump.c (top level): Include basic-block.h to declare
701         optimize_insn_for_speed_p
702
703         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
704
705         * opts.h (CL_SAVE): New option class for marking options that are
706         target specific options usable in the target attribute.
707         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
708
709         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
710         can easily find the target specific options that are safe to use
711         in the attribute or pragma.
712
713         * attribs.c (decl_attributes): Change #pragma GCC option to
714         #pragma GCC target, and attribute((option(...))) to
715         attribute((target(...))).
716
717         * doc/extend.texi (target attribute): Change from option
718         attribute.  Delete push/pop/reset.
719         (#pragma GCC target): Change from #pragma GCC option.  Delete
720         push/pop/reset.
721         (#pragma GCC push_options): Document new pragma.
722         (#pragma GCC pop_options): Document new pragma.
723         (#pragma GCC reset_options): Document new pragma.
724
725         * targhooks.c (default_target_option_valid_attribute_p): Add
726         warning about port not supporting target attributes.
727         (default_target_option_pragma_parse): New function, warn about
728         #pragma GCC target not being supported.
729
730         * targhooks.h (default_target_option_pragma_parse): Add
731         declaration.
732
733         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
734         TI_CURRENT_OPTION_PRAGMA.
735         (current_target_pragma): Rename from current_option_pragma.
736
737         * target.h: (struct target_option): Delete booleans for changing
738         the optimization level on hot/cold functions.  Change signature of
739         pragma_parse hook to take a second tree.
740
741         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
742
743         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
744         that the declaration is done at global scope.
745
746         * langhooks.c (add_builtin_function_common): Move most of the code
747         from add_builtin_function here, calling the hook passed in.
748         (add_builtin_function): Call add_builtin_function_common with
749         standard builtin hook.
750         (add_builtin_function_ext_scope): New function to add builtins to
751         global scope.
752
753         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
754         hook.
755         (add_builtin_function_ext_scope): Add declaration.
756
757         * c-pragma.c (handle_pragma_target): Rename from
758         handle_pragma_option, #pragma GCC option is now #pragma GCC
759         target.  Move warning about port not supporting target options to
760         default pragma parse hook.  Remove push/pop/reset from this
761         pragma.
762         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
763         (option_stack): Delete static variable.
764         (optimize_stack): Ditto.
765         (optons_stack): New stack of saved target and optimization
766         options.
767         (handle_pragma_push_options): New function to handle pushing both
768         target and optimization options.
769         (handle_pragma_pop_options): New function to handle popping both
770         target and optimization options.
771         (handle_pragma_reset_options): New function to handle resetting
772         both target and optimization options to their initial state.
773         (init_pragma): Rename handle_pragma_option to
774         handle_pragma_target.  Add support for push_options, pop_options,
775         and reset_options pragmas.
776
777         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
778         default_target_option_pragma_parse.
779         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
780         default_target_option_valid_attribute_p.
781         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
782         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
783         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
784         optimization level on hot/cold functions.
785
786         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
787         if the caller and callee have different optimization levels.
788
789         * c-common.c (handle_target_attribute): Rename from
790         handle_option_attribute, attribute((option(...))) is now
791         attribute((target(...))).  Move warning if the port does not
792         support target attributes to the default hook.
793         (handle_hot_attribute): Delete code to change the optimization
794         level of hot functions.
795         (handle_cold_attribute): Ditto.
796
797         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
798         argument that is the binary tree options to use if there are no
799         arguments.  Call ix86_valid_target_attribute_tree instead of
800         ix86_valid_option_attribute_tree.
801         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
802         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
803         ix86_pragma_option_parse.
804
805         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
806         Rename from ix86_valid_option_attribute_tree.
807
808         * config/i386/i386.c (ix86_add_new_builtins): New function to add
809         new builtins when the ISA changes.
810         (ix86_valid_target_attribute_tree): Rename from
811         ix86_valid_option_attribute_tree.  Change callers.  If the
812         function specified optimization options, use those as the starting
813         point before setting up the target attributes.  If the
814         optimization options were changed in the course of setting the
815         target attributes, record the new optimization options.
816         (ix86_valid_target_attribute_tree_inner_p): Rename from
817         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
818         ix86_add_new_builtins if the ISA changed.
819         (ix86_valid_target_attribute_p): Rename from
820         ix86_valid_option_attribute_p.  Change callers.
821         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
822         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
823         as delayed builtin functions.
824         (struct builtin_isa): New structure to record builtin functions
825         that should be delayed until the ISA for that function is used.
826         (ix86_builtins_isa): Change from int to struct to track builtin
827         functions we want to declare at some point.
828         (def_builtin): If the front end can delay defining the builtin
829         functions, don't create builtins for ISAs not part of the default
830         options.
831         (def_builtin_const): Ditto.
832         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
833         __builtin_ia32_pcmov_v2di to be different builtin functions.
834         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
835         a structure instead of an int.
836         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
837         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
838         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
839         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
840
841         * config/ia64/ia64.h
842         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
843         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
844
845         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
846         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
847         (LANG_HOOKS_INITIALIZER): Add
848         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
849
850 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
851
852         PR target/37270
853         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
854         the reload address with the index register for SFmode
855         access with a displacement.
856
857 2008-08-30  Jan Hubicka  <jh@suse.cz>
858
859         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
860         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
861         * dojump.c (do_jump): Likewise.
862         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
863         (note-if_info): Add BRANCH_COST.
864         (noce_try_store_flag_constants, noce_try_addcc, noce_try_store_flag_mask,
865         noce_try_cmove_arith, noce_try_cmove_arith, noce_try_cmove_arith,
866         noce_find_if_block, find_if_case_1, find_if_case_2): Use compuated
867         branch cost.
868         * expr.h (BRANCH_COST): Update default.
869         * predict.c (predictable_edge_p): New function.
870         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
871         Update BRANCH_COST call.
872         * basic-block.h (predictable_edge_p): Declare.
873         * config/alpha/alpha.h (BRANCH_COST): Update.
874         * config/frv/frv.h (BRANCH_COST): Update.
875         * config/s390/s390.h (BRANCH_COST): Update.
876         * config/spu/spu.h (BRANCH_COST): Update.
877         * config/sparc/sparc.h (BRANCH_COST): Update.
878         * config/m32r/m32r.h (BRANCH_COST): Update.
879         * config/i386/i386.h (BRANCH_COST): Update.
880         * config/i386/i386.c (ix86_expand_int_movcc): Update use of BRANCH_COST.
881         * config/sh/sh.h (BRANCH_COST): Update.
882         * config/pdp11/pdp11.h (BRANCH_COST): Update.
883         * config/avr/avr.h (BRANCH_COST): Update.
884         * config/crx/crx.h (BRANCH_COST): Update.
885         * config/xtensa/xtensa.h (BRANCH_COST): Update.
886         * config/stormy16/stormy16.h (BRANCH_COST): Update.
887         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
888         * config/iq2000/iq2000.h (BRANCH_COST): Update.
889         * config/ia64/ia64.h (BRANCH_COST): Update.
890         * config/rs6000/rs6000.h (BRANCH_COST): Update.
891         * config/arc/arc.h (BRANCH_COST): Update.
892         * config/score/score.h (BRANCH_COST): Update.
893         * config/arm/arm.h (BRANCH_COST): Update.
894         * config/pa/pa.h (BRANCH_COST): Update.
895         * config/mips/mips.h (BRANCH_COST): Update.
896         * config/vax/vax.h (BRANCH_COST): Update.
897         * config/h8300/h8300.h (BRANCH_COST): Update.
898         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
899         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
900         * doc/tm.texi (BRANCH_COST): Update.
901
902 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
903
904         PR target/37283
905         * config/arm/arm.c (arm_optimization_options): Set
906         flag_section_anchors to 2 instead of 1 to distinguish it from
907         -fsection-anchors given explicitely on the command line.
908
909 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
910
911         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
912         final insn of a split.
913
914 2008-08-30  Jan Hubicka  <jh@suse.cz>
915
916         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
917         optimized for speed.
918         * final.c (compute_alignments): Use optimize_bb_for_size_p.
919         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
920         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
921         flag_gcse_after_reload_set): New static vars.
922         (common_handle_option): Enable those flags for profile-use.
923         (decode_options): Remove optimize_size flags that are handled
924         on higher granuality.
925         * tree-vectorizer.c (vectorize_loops): Use
926         optimize_loop_nest_for_speed_p.
927         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
928         * tree-predcom.c (tree_predictive_commoning): Use
929         optimize_loop_for_speed_p.
930         * varasm.c (assemble_start_function): Use optimize_function_for_speed_p.
931         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
932         * predict.c (optimize_loop_for_speed_p): Fix walk.
933
934 2008-08-30  Jan Hubicka  <jh@suse.cz>
935
936         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
937         functions.
938         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
939         profile presence locally.
940
941 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
942
943         PR bootstrap/37086
944         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
945         versions before 4.0.
946
947 2008-08-29  Jan Hubicka  <jh@suse.cz>
948
949         * tree-inline.c (insert_init_stmt): Insert sequence even when
950         not in SSA form.
951
952 2008-08-29  Jeff Law  <law@redhat.com>
953
954         * mn10300.c (mn10300_secondary_reload_class): We need secondary
955         reloads for AM33-2 if IN is a pseudo with an equivalent memory
956         location and class is an FP register.
957
958 2008-08-29  Jan Hubicka  <jh@suse.cz>
959
960         * see.c (see_merge_one_def_extension): Silence used uninitialized
961         warning.
962         * matrix-reorg.c (check_allocation_function): Likewise.
963         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
964
965 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
966
967         PR c/37261
968         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
969         compute new & and | in type rather than TREE_TYPE (arg0).
970
971         * dwarf2out.c (fortran_common): Update comment.
972         (gen_variable_die): Swap com_die and var_die variables in Fortran
973         COMMON block handling code.
974
975         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
976
977         * dwarf2out.c (gen_const_die): New function.
978         (size_of_die, value_format, output_die): Output larger
979         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
980         (native_encode_initializer): New function.
981         (tree_add_const_value_attribute): Call it.
982         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
983
984         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
985         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
986         TREE_THIS_VOLATILE to add_type_attribute.
987
988         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
989         types.
990         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
991         types.
992
993         * dwarf2out.c (loc_by_reference): New function.
994         (add_location_or_const_value_attribute): Use it.
995
996         PR fortran/23057
997         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
998         as DW_TAG_variable children of DW_TAG_common_block rather than
999         DW_TAG_member children.  Put DW_AT_external to individual
1000         DW_TAG_variable DIEs, not to DW_TAG_common_block.
1001
1002         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
1003         loc_descriptor_from_tree_1.
1004
1005         PR fortran/29635
1006         PR fortran/23057
1007         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
1008         arguments to imported_module_or_decl.
1009         (debug_nothing_tree_tree): Removed.
1010         (debug_nothing_tree_tree_tree_bool): New prototype.
1011         * debug.c (do_nothing_debug_hooks): Adjust.
1012         (debug_nothing_tree_tree): Removed.
1013         (debug_nothing_tree_tree_tree_bool): New function.
1014         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
1015         (gen_variable_die): Put all common vars for the
1016         same COMMON block under one DW_TAG_common_block.
1017         (declare_in_namespace): Return new context_die, for Fortran
1018         return the module DIE instead of adding extra declarations into
1019         the namespace.
1020         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
1021         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
1022         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
1023         DW_AT_declaration.
1024         (dwarf2out_global_decl): Don't skip Fortran global vars.
1025         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
1026         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
1027         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
1028         DW_TAG_imported_declaration as child of previous
1029         DW_TAG_imported_module.
1030         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
1031         * sdbout.c (sdb_debug_hooks): Likewise.
1032         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
1033
1034 2008-08-29  Jan Hubicka  <jh@suse.cz>
1035
1036         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
1037
1038         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
1039         * ipa-cp.c (n_cloning_candidates): New static variable.
1040         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
1041         (ipcp_print_all_lattices): Improve debug output.
1042         (ipcp_cloning_candidate_p): New function.
1043         (ipcp_initialize_node_lattices): Use it.
1044         (ipcp_init_stage): Do only analyzis here; prettier debug output.
1045         (ipcp_propagate_stage): Prettier debug output.
1046         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
1047         (ipcp_print_all_structures): Remove.
1048         (ipcp_need_redirect_p): Test !n_cloning_candidates.
1049         (ipcp_insert_stage): Prettier debug output; call
1050         cgraph_remove_unreachable_nodes before propagating.
1051         (pass_ipa_cp): Schedule function removal pass.
1052         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
1053         debug output.
1054         (cgraph_maybe_hot_edge_p): Move to ...
1055         * predict.c (cgraph_maybe_hot_edge_p) ... here.
1056         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
1057         (common_handle_option): Set them; enable ipa-cp when profiling.
1058         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
1059         (ipa_print_all_jump_functions): Likewise.
1060         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
1061         (ipa_print_node_params, ipa_print_all_params): New.
1062         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
1063         ipa_print_all_param_flags): Remove.
1064         (ipa_print_node_params, ipa_print_all_params): New.
1065
1066 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
1067
1068         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
1069         change from 2008-04-03.
1070         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
1071
1072 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
1073
1074         PR rtl-opt/37251
1075
1076         * ira-color.c (push_allocnos_to_stack): Truncate
1077         removed_splay_allocno_vec.
1078
1079 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
1080
1081         PR rtl-opt/37243
1082         * ira-color (ira_fast_allocation): Don't assign hard registers to
1083         global allocnos.
1084
1085 2008-08-29  Jan Hubicka  <jh@suse.cz>
1086
1087         PR middle-end/37278
1088         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
1089         for cold internal loops.
1090
1091 2008-08-29  Richard Guenther  <rguenther@suse.de>
1092
1093         * tree-ssa-structalias.c (create_variable_info_for): Do not
1094         create fields for heap vars or vars with a noalias state.
1095         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
1096         from ESCAPED.
1097
1098 2008-08-29  Richard Guenther  <rguenther@suse.de>
1099
1100         * common.opt (ftree-store-ccp): Mark as preserved for
1101         backward compatibility.
1102         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
1103         * tree-pass.h (pass_store_ccp): Remove.
1104         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
1105         (first_vdef): Remove declaration.
1106         (get_value_loaded_by): Likewise.
1107         * tree-ssa-ccp.c (do_store_ccp): Remove.
1108         (get_default_value): Simplify as do_store_ccp is always false
1109         now.  Do not initialize mem_ref.
1110         (set_value_varying): Likewise.
1111         (canonicalize_float_value): Likewise.
1112         (set_lattice_value): Likewise.
1113         (likely_value): Likewise.
1114         (surely_varying_stmt_p): Likewise.
1115         (ccp_initialize): Likewise.
1116         (ccp_lattice_meet): Likewise.
1117         (ccp_visit_phi_node): Likewise.
1118         (ccp_fold): Likewise.
1119         (evaluate_stmt): Likewise.
1120         (visit_assignment): Likewise.
1121         (ccp_visit_stmt): Likewise.
1122         (execute_ssa_ccp): Fold into ...
1123         (do_ssa_ccp): ... this.
1124         (do_ssa_store_ccp): Remove.
1125         (gate_store_ccp): Likewise.
1126         (pass_store_ccp): Likewise.
1127         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
1128         initialize mem_ref.
1129         * tree-ssa-propagate.c (first_vdef): Remove.
1130         (get_value_loaded_by): Likewise.
1131         (replace_vuses_in): Likewise.
1132         (substitute_and_fold): Do not call replace_vuses_in.
1133         * opts.c (decode_options): Do not set flag_tree_store_ccp.
1134
1135 2008-08-29  Richard Guenther  <rguenther@suse.de>
1136
1137         PR middle-end/37236
1138         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
1139         PARAM_NOALIAS tags with is_heapvar.
1140         * tree-ssa-operands.c (access_can_touch_variable): Offset
1141         based tests do not apply for heapvars.  Fix offset test.
1142
1143 2008-08-29  Jan Hubicka  <jh@suse.cz>
1144
1145         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
1146         (-fipa-cp-clone): Enabled by default at -O3.
1147         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
1148         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
1149
1150 2008-08-29  Jan Hubicka  <jh@suse.cz>
1151
1152         * tree.c (build_function_type_skip_args, build_function_decl_skip_args):
1153         New functions.
1154         * tree.h (build_function_type_skip_args, build_function_decl_skip_args):
1155         Declare.
1156         * gimple.c (giple_copy_call_skip_args): New function.
1157         (giple_copy_call_skip_args): Declare.
1158
1159         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
1160         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
1161         (ipcp_node_modifiable_p): ... this one; use tree_versionable_function_p.
1162         (ipcp_create_replace_map): Improve debug output.
1163         (ipcp_need_redirect_p): Return false when not clonning.
1164         (ipcp_update_callgraph): Skip args.
1165         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
1166         skip args.
1167         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
1168         (save_inline_function_body): Update call of tree_function_versioning.
1169         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
1170         * tree-inline.c (copy_arguments_for_versioning): Add skip_args argument.
1171         (tree_function_versioning): Likewise.
1172         * tree-inline.h (tree_function_versioning): Update prototype.
1173
1174 2008-08-29  Jan Hubicka  <jh@suse.cz>
1175
1176         * loop-unswitch.c (unswitch_single_loop): Use optimize_loop_for_speed_p.
1177         * tree-ssa-threadupdate.c (mark_threaded_blocks): Use optimize_function_for_size_p.
1178         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
1179         * postreload-gcse.c (eliminate_partially_redundant_load): Use optimize_bb_for_size_p.
1180         * value-prof.c (gimple_divmod_fixed_value_transform,
1181         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
1182         gimple_stringops_transform): Use optimize_bb_for_size_p.
1183         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
1184         * final.c (compute_alignments): Use optimize_function_for_size_p.
1185         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
1186         (fold_builtin_strcpy, fold_builtin_fputs): Use
1187         optimize_function_for_size_p.
1188         * fold-const.c (tree_swap_operands_p): Use optimize_function_for_size_p.
1189         * recog.c (relax_delay_slots): Likewise.
1190         * tree-ssa-math-opts.c (replace_reciprocal): Use optimize_bb_for_speed_p.
1191         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
1192         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
1193         optimize_function_for_size_p.
1194         (cgraph_decide_inlining_of_small_function): Use
1195         optimize_function_for_size_p.
1196         * global.c (find_reg): Use optimize_function_for_size_p.
1197         * opts.c (decode_options): Do not clear flag_tree_ch, flag_inline_functions,
1198         flag_unswitch_loops, flag_unroll_loops, flag_unroll_all_loops and
1199         flag_prefetch_loop_arrays. Those can work it out from profile.
1200         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
1201         optimize_loop_for_speed_p.
1202         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p): Constify
1203         argument.
1204         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
1205         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
1206         * tree-eh.c (decide_copy_try_finally): Use optimize_function_for_size_p.
1207         * local-alloc.c (block_alloc): Pass BB pointer.
1208         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
1209         * gcse.c (gcse_main): Use optimize_function_for_size_p.
1210         * loop-unroll.c (decide_unrolling_and_peeling): Use optimize_loop_for_size_p.
1211         (decide_peel_completely): Likewise.
1212         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
1213         optimize_loop_for_size_p.
1214         (vect_enhance_data_refs_alignment): Likewise.
1215         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
1216         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map): Update call.
1217         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
1218         (try_crossjump_bb): Use optimize_bb_for_size_p.
1219         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
1220         optimize_loop_for_speed_p.
1221         * bb-reorder.c (find_traces_1_round): Likewise.
1222         (copy_bb): Use optimize_bb_for_speed_p.
1223         (duplicate_computed_gotos): Likewise.
1224         * basic-block.h (optimize_loop_nest_for_size_p,
1225         optimize_loop_nest_for_speed_p): New.
1226         * stmt.c (expand_case): Use optimize_insn_for_size_p.
1227
1228 2008-08-29  Tristan Gingold  <gingold@adacore.com>
1229
1230         * gcov.c (main): Call expandargv.
1231
1232 2008-08-29  Jan Hubicka  <jh@suse.cz>
1233
1234         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
1235         is not cold.
1236         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
1237         Constify arguments.
1238         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
1239         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
1240         Constify.
1241         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
1242
1243 2008-08-29  Jan Hubicka  <jh@suse.cz>
1244
1245         * tree-pass.h (pass_strip_predict_hints): Declare.
1246         * predict.c (strip_builtin_expect): Rename to ...
1247         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
1248         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
1249         (tree_estimate_probability): Do not strip builtin_expect.
1250         (pass_strip_predict_hints): New pass.
1251         * tree-inline.c (expand_call_inline): When inlining cold function, predict
1252         it as unlikely.
1253         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
1254
1255 2008-08-29  Richard Guenther  <rguenther@suse.de>
1256
1257         PR tree-optimization/37207
1258         * tree-vrp.c (extract_range_from_binary_expr): Also try
1259         to constant fold if only one of the operands is a constant.
1260
1261 2008-08-29  Nick Clifton  <nickc@redhat.com>
1262
1263         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
1264         the same way as SYMBOL_REFs.
1265
1266 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
1267
1268         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
1269
1270 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
1271
1272         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
1273         * config/mips/mips.md (branch_likely): Remove const.  Fix
1274         comment formatting.
1275         (define_delay for type "branch"): Change to only apply for branch
1276         with likely variant.
1277         (define_delay for type "branch" and "branch_likely" no).  New delay
1278         definition.
1279         (equality_op): New code iterator.
1280         (bbv, bbinv): New code attributes.
1281         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
1282         patterns.
1283
1284 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1285             Andrew Pinski  <pinskia@gcc.gnu.org>
1286
1287         PR 18050
1288         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
1289
1290 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
1291
1292         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
1293         rule that a symbolic constant must be defined and >= 0 for the
1294         corresponding facility to be present at compile-time.
1295         * gthr-posix.c: Likewise.
1296
1297 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
1298
1299         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
1300         * config/mips/mips.md (D): New mode attribute.
1301         (mulsi3, muldi3): Merge it into ...
1302         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op
1303         patterns.
1304         (muldi3_mul3): New pattern.
1305         (mulsi3_mult3): Rename to mulsi3_mul3.
1306
1307 2008-08-28  Jan Hubicka  <jh@suse.cz>
1308
1309         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
1310         to fail.
1311         * predict.c (always_optimize_for_size_p): Rename to ...
1312         (optimize_function_for_size): ... this one; make extern.
1313         (optimize_function_for_speed_p): New.
1314         (optimize_bb_for_size_p, optimize_bb_for_size_p,
1315         optimize_edge_for_size_p,optimize_edge_for_size_p,
1316         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
1317         * basic-block.h (optimize_function_for_size_p,
1318         optimize_function_for_speed_p): Declare.
1319         * i386.md (optimize_size checks): Replace them by appropriate
1320         predicate.
1321         (standard_80387_constant_p, ix86_compute_frame_layout,
1322         ix86_expand_epilogue, ix86_decompose_address,
1323         print_operand, emit_i387_cw_initialization,
1324         inline_memory_move_cost, ix86_pad_returns,
1325         ix86_reorg): Replace optimize_size checks.
1326
1327 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
1328
1329         * rtl.h (simplify_subreg_regno): Declare.
1330         * rtlanal.c (simplify_subreg_regno): New function, split out from...
1331         * simplify-rtx.c (simplify_subreg): ...here.
1332         * reload.c (find_reloads): Use simplify_subreg_regno instead of
1333         subreg_offset_representable_p.
1334
1335 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1336
1337         PR c/30949
1338         * c-typeck.c (convert_for_assignment): Give a note describing what
1339         was passed and what was expected.
1340
1341 2008-08-28  Joey Ye  <joey.ye@intel.com>
1342
1343         * doc/extend.texi: Document AVX built-in functions.
1344         * doc/invoke.texi: Document -mavx.
1345
1346 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
1347             Joey Ye  <joey.ye@intel.com>
1348             Xuepeng Guo  <xuepeng.guo@intel.com>
1349
1350         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
1351
1352         * config/i386/cpuid.h (bit_FMA): New.
1353         (bit_XSAVE): Likewise.
1354         (bit_OSXSAVE): Likewise.
1355         (bit_AVX): Likewise.
1356
1357         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
1358         define.  Use ASM_OUTPUT_AVX_PREFIX.
1359
1360         * config/i386/gmmintrin.h: New.
1361
1362         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
1363         (OPTION_MASK_ISA_AVX_SET): New.
1364         (OPTION_MASK_ISA_FMA_SET): Likewise.
1365         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
1366         (OPTION_MASK_ISA_FMA_SET): Likewise.
1367         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
1368         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
1369         (pta_flags): Add PTA_AVX and PTA_FMA.
1370         (override_options): Handle PTA_AVX and PTA_FMA.
1371         (init_cumulative_args): Handle warn_avx.
1372         (classify_argument): Return 0 for COImode and OImode.  Return
1373         1 and X86_64_AVX_CLASS for 256bit vector types.
1374         (examine_argument): Handle X86_64_AVX_CLASS.
1375         (construct_container): Likewise.
1376         (function_arg_advance_32): Pass OImode and 256bit vector types
1377         in AVX register.
1378         (function_arg_advance_64): Take a new argument to indicate if a
1379         parameter is named.  Handle 256bit vector types.  Return
1380         immediately for unnamed 256bit vector mode parameters.
1381         (function_arg_advance): Updated.
1382         (function_arg_32): Add comments for TImode.  Handle OImode
1383         and 256bit vector types.
1384         (function_arg_64): Take a new argument to indicate if a
1385         parameter is named.  Handle 256bit vector types.  Return NULL
1386         for unnamed 256bit vector mode parameters.
1387         (function_arg): Updated.
1388         (setup_incoming_varargs_64): Support
1389         AVX encoding for *sse_prologue_save_insn.
1390         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
1391         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
1392         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
1393         enabled, otherwise return -3.
1394         (standard_sse_constant_opcode): Handle AVX and 256bit vector
1395         modes.
1396         (print_reg): Support AVX registers.  Handle 'x' and 't'.
1397         Handle 'd' to duplicate the operand.
1398         (print_operand): Likewise.  Also support AVX vector compare
1399         instructions.
1400         (output_387_binary_op): Support AVX.
1401         (output_fp_compare): Likewise.
1402         (ix86_expand_vector_move_misalign): Likewise.
1403         (ix86_attr_length_vex_default): New.
1404         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
1405         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
1406         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
1407         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
1408         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
1409         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
1410         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
1411         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
1412         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
1413         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
1414         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
1415         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
1416         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
1417         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
1418         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
1419         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
1420         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
1421         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
1422         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
1423         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
1424         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
1425         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
1426         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
1427         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
1428         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
1429         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
1430         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
1431         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
1432         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
1433         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
1434         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
1435         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
1436         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
1437         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
1438         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
1439         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
1440         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
1441         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
1442         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
1443         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
1444         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
1445         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
1446         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
1447         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
1448         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
1449         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
1450         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
1451         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
1452         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
1453         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
1454         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
1455         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
1456         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
1457         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
1458         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
1459         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
1460         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
1461         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
1462         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
1463         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
1464         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
1465         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
1466         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
1467         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
1468         and IX86_BUILTIN_MOVMSKPS256,
1469         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
1470         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
1471         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
1472         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
1473         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
1474         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
1475         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
1476         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
1477         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
1478         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
1479         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
1480         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
1481         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
1482         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
1483         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
1484         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
1485         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
1486         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
1487         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
1488         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
1489         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
1490         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
1491         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
1492         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
1493         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
1494         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
1495         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
1496         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
1497         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
1498         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
1499         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
1500         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
1501         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
1502         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
1503         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
1504         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
1505         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
1506         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
1507         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
1508         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
1509         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
1510         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
1511         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
1512         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
1513         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
1514         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
1515         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
1516         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
1517         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
1518         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
1519         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
1520         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
1521         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
1522         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
1523         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
1524         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
1525         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
1526         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
1527         IX86_BUILTIN_CMPPS,
1528         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
1529         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
1530         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
1531         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
1532         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
1533         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
1534         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
1535         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
1536         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
1537         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
1538         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
1539         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
1540         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
1541         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
1542         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
1543         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
1544         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
1545         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
1546         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
1547         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
1548         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
1549         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
1550         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
1551         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
1552         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
1553         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
1554         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
1555         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
1556         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
1557         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
1558         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
1559         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
1560         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
1561         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
1562         IX86_BUILTIN_MOVMSKPS256.
1563         (ix86_init_mmx_sse_builtins): Support AVX builtins.
1564         (ix86_expand_args_builtin): Likewise.
1565         (ix86_expand_special_args_builtin): Likewise.
1566         (ix86_hard_regno_mode_ok): Handle AVX modes.
1567         (ix86_expand_vector_init_duplicate): Likewise.
1568         (ix86_expand_vector_init_one_nonzero): Likewise.
1569         (ix86_expand_vector_init_one_var): Likewise.
1570         (ix86_expand_vector_init_concat): Likewise.
1571         (ix86_expand_vector_init_general): Likewise.
1572         (ix86_expand_vector_set): Likewise.
1573         (ix86_vector_mode_supported_p): Likewise.
1574         (x86_extended_reg_mentioned_p): Check INSN_P before using
1575         PATTERN.
1576
1577         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1578         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
1579
1580         * config/i386/i386.h (TARGET_AVX): New.
1581         (TARGET_FMA): Likewise.
1582         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
1583         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
1584         (VALID_AVX256_REG_MODE): New.
1585         (AVX256_VEC_FLOAT_MODE_P): Likewise.
1586         (AVX_FLOAT_MODE_P): Likewise.
1587         (AVX128_VEC_FLOAT_MODE_P): Likewise.
1588         (AVX256_VEC_FLOAT_MODE_P): Likewise.
1589         (AVX_VEC_FLOAT_MODE_P): Likewise.
1590         (ASM_OUTPUT_AVX_PREFIX): Likewise.
1591         (ASM_OUTPUT_OPCODE): Likewise.
1592         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
1593         support.
1594         (SSE_REG_MODE_P): Allow 256bit vector modes.
1595         (ix86_args): Add a warn_avx field.
1596
1597         * config/i386/i386.md (UNSPEC_PCMP): New.
1598         (UNSPEC_VPERMIL): Likewise.
1599         (UNSPEC_VPERMIL2): Likewise.
1600         (UNSPEC_VPERMIL2F128): Likewise.
1601         (UNSPEC_MASKLOAD): Likewise.
1602         (UNSPEC_MASKSTORE): Likewise.
1603         (UNSPEC_CAST): Likewise.
1604         (UNSPEC_VTESTP): Likewise.
1605         (UNSPECV_VZEROALL): Likewise.
1606         (UNSPECV_VZEROUPPER): Likewise.
1607         (XMM0_REG): Likewise.
1608         (XMM1_REG): Likewise.
1609         (XMM2_REG): Likewise.
1610         (XMM3_REG): Likewise.
1611         (XMM4_REG): Likewise.
1612         (XMM5_REG): Likewise.
1613         (XMM6_REG): Likewise.
1614         (XMM8_REG): Likewise.
1615         (XMM9_REG): Likewise.
1616         (XMM10_REG): Likewise.
1617         (XMM11_REG): Likewise.
1618         (XMM12_REG): Likewise.
1619         (XMM13_REG): Likewise.
1620         (XMM14_REG): Likewise.
1621         (XMM15_REG): Likewise.
1622         (prefix): Likewise.
1623         (prefix_vex_imm8): Likewise.
1624         (prefix_vex_w): Likewise.
1625         (length_vex): Likewise.
1626         (maxmin): Likewise.
1627         (movoi): Likewise.
1628         (*avx_ashlti3): Likewise.
1629         (*avx_lshrti3): Likewise.
1630         (*avx_setcc<mode>): Likewise.
1631         (*fop_<mode>_comm_mixed_avx): Likewise.
1632         (*fop_<mode>_comm_avx): Likewise.
1633         (*fop_<mode>_1_mixed_avx): Likewise.
1634         (*fop_<mode>_1_avx): Likewise.
1635         (*avx_<code><mode>3): Likewise.
1636         (*avx_ieee_smin<mode>3): Likewise.
1637         (*avx_ieee_smax<mode>3): Likewise.
1638         (mode): Add OI, V8SF and V4DF.
1639         (length): Support VEX prefix.
1640         (*cmpfp_i_mixed): Set prefix attribute.
1641         (*cmpfp_i_sse): Likewise.
1642         (*cmpfp_iu_mixed): Likewise.
1643         (*cmpfp_iu_sse): Likewise.
1644         (*movsi_1): Support AVX.
1645         (*movdi_2): Likewise.
1646         (*movdi_1_rex64): Likewise.
1647         (*movti_internal): Likewise.
1648         (*movti_rex64): Likewise.
1649         (*movsf_1): Likewise.
1650         (*movdf_nointeger): Likewise.
1651         (*movdf_integer_rex64): Likewise.
1652         (*movtf_internal): Likewise.
1653         (zero_extendsidi2_32): Likewise.
1654         (zero_extendsidi2_rex64): Likewise.
1655         (*extendsfdf2_mixed): Likewise.
1656         (*extendsfdf2_sse): Likewise.
1657         (*truncdfsf_fast_mixed): Likewise.
1658         (*truncdfsf_fast_sse): Likewise.
1659         (*truncdfsf_mixed): Likewise.
1660         (fix_trunc<mode>di_sse): Likewise.
1661         (fix_trunc<mode>si_sse): Likewise.
1662         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
1663         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
1664         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
1665         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
1666         (*rcpsf2_sse): Likewise.
1667         (*rsqrtsf2_sse): Likewise.
1668         (*sqrt<mode>2_sse): Likewise.
1669         (sse4_1_round<mode>2): Likewise.
1670         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
1671         Support AVX.  Set length attribute properly for AVX.
1672
1673         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
1674         (VECTOR_MODES (FLOAT, 32)): Likewise.
1675         (VECTOR_MODE (INT, DI, 8)): Likewise.
1676         (VECTOR_MODE (INT, HI, 32)): Likewise.
1677         (VECTOR_MODE (INT, QI, 64)): Likewise.
1678         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
1679         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
1680         (VECTOR_MODE (INT, DI, 4)): Removed.
1681         (VECTOR_MODE (INT, SI, 8)): Likewise.
1682         (VECTOR_MODE (INT, HI, 16)): Likewise.
1683         (VECTOR_MODE (INT, QI, 32)): Likewise.
1684         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
1685         (INT_MODE (OI, 32)): Likewise.
1686
1687         * config/i386/i386.opt (mavx): New.
1688         (mfma): Likewise.
1689
1690         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
1691
1692         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
1693         (*mov<mode>_internal_avx): New.
1694         (*movv2sf_internal_rex64_avx): Likewise.
1695         (*movv2sf_internal_avx): Likewise.
1696
1697         * config/i386/predicates.md (const_4_to_5_operand): New.
1698         (const_6_to_7_operand): Likewise.
1699         (const_8_to_11_operand): Likewise.
1700         (const_12_to_15_operand): Likewise.
1701         (avx_comparison_float_operator): Likewise.
1702
1703         * config/i386/sse.md (AVX256MODEI): New.
1704         (AVX256MODE): Likewise.
1705         (AVXMODEQI): Likewise.
1706         (AVXMODE): Likewise.
1707         (AVX256MODEF2P): Likewise.
1708         (AVX256MODE2P): Likewise.
1709         (AVX256MODE4P): Likewise.
1710         (AVX256MODE8P): Likewise.
1711         (AVXMODEF2P): Likewise.
1712         (AVXMODEF4P): Likewise.
1713         (AVXMODEDCVTDQ2PS): Likewise.
1714         (AVXMODEDCVTPS2DQ): Likewise.
1715         (avxvecmode): Likewise.
1716         (avxvecpsmode): Likewise.
1717         (avxhalfvecmode): Likewise.
1718         (avxscalarmode): Likewise.
1719         (avxcvtvecmode): Likewise.
1720         (avxpermvecmode): Likewise.
1721         (avxmodesuffixf2c): Likewise.
1722         (avxmodesuffixp): Likewise.
1723         (avxmodesuffixs): Likewise.
1724         (avxmodesuffix): Likewise.
1725         (vpermilbits): Likewise.
1726         (pinsrbits): Likewise.
1727         (mov<mode>): Likewise.
1728         (*mov<mode>_internal): Likewise.
1729         (push<mode>1): Likewise.
1730         (movmisalign<mode>): Likewise.
1731         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1732         (avx_movdqu<avxmodesuffix>): Likewise.
1733         (avx_lddqu<avxmodesuffix>): Likewise.
1734         (<plusminus_insn><mode>3): Likewise.
1735         (*avx_<plusminus_insn><mode>3): Likewise.
1736         (*avx_vm<plusminus_insn><mode>3): Likewise.
1737         (mul<mode>3): Likewise.
1738         (*avx_mul<mode>3): Likewise.
1739         (*avx_vmmul<mode>3): Likewise.
1740         (divv8sf3): Likewise.
1741         (divv4df3): Likewise.
1742         (avx_div<mode>3): Likewise.
1743         (*avx_div<mode>3): Likewise.
1744         (*avx_vmdiv<mode>3): Likewise.
1745         (avx_rcpv8sf2): Likewise.
1746         (*avx_vmrcpv4sf2): Likewise.
1747         (sqrtv8sf2): Likewise.
1748         (avx_sqrtv8sf2): Likewise.
1749         (*avx_vmsqrt<mode>2): Likewise.
1750         (rsqrtv8sf2): Likewise.
1751         (avx_rsqrtv8sf2): Likewise.
1752         (*avx_vmrsqrtv4sf2): Likewise.
1753         (<code><mode>3): Likewise.
1754         (*avx_<code><mode>3_finite): Likewise.
1755         (*avx_<code><mode>3): Likewise.
1756         (*avx_vm<code><mode>3): Likewise.
1757         (*avx_ieee_smin<mode>3): Likewise.
1758         (*avx_ieee_smax<mode>3): Likewise.
1759         (avx_addsubv8sf3): Likewise.
1760         (avx_addsubv4df3): Likewise.
1761         (*avx_addsubv4sf3): Likewise.
1762         (*avx_addsubv2df3): Likewise.
1763         (avx_h<plusminus_insn>v4df3): Likewise.
1764         (avx_h<plusminus_insn>v8sf3): Likewise.
1765         (*avx_h<plusminus_insn>v4sf3): Likewise.
1766         (*avx_h<plusminus_insn>v2df3): Likewise.
1767         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
1768         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
1769         (*avx_maskcmp<mode>3): Likewise.
1770         (avx_nand<mode>3): Likewise.
1771         (*avx_<code><mode>3): Likewise.
1772         (*avx_nand<mode>3): Likewise.
1773         (*avx_<code><mode>3): Likewise.
1774         (*avx_cvtsi2ss): Likewise.
1775         (*avx_cvtsi2ssq): Likewise.
1776         (*avx_cvtsi2sd): Likewise.
1777         (*avx_cvtsi2sdq): Likewise.
1778         (*avx_cvtsd2ss): Likewise.
1779         (avx_cvtss2sd): Likewise.
1780         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
1781         (avx_cvtps2dq<avxmodesuffix>): Likewise.
1782         (avx_cvttps2dq<avxmodesuffix>): Likewise.
1783         (*avx_cvtsi2sd): Likewise.
1784         (*avx_cvtsi2sdq): Likewise.
1785         (avx_cvtdq2pd256): Likewise.
1786         (avx_cvtpd2dq256): Likewise.
1787         (avx_cvttpd2dq256): Likewise.
1788         (*avx_cvtsd2ss): Likewise.
1789         (*avx_cvtss2sd): Likewise.
1790         (avx_cvtpd2ps256): Likewise.
1791         (avx_cvtps2pd256): Likewise.
1792         (*avx_movhlps): Likewise.
1793         (*avx_movlhps): Likewise.
1794         (avx_unpckhps256): Likewise.
1795         (*avx_unpckhps): Likewise.
1796         (avx_unpcklps256): Likewise.
1797         (*avx_unpcklps): Likewise.
1798         (avx_movshdup256): Likewise.
1799         (avx_movsldup256): Likewise.
1800         (avx_shufps256): Likewise.
1801         (avx_shufps256_1): Likewise.
1802         (*avx_shufps_<mode>): Likewise.
1803         (*avx_loadhps): Likewise.
1804         (*avx_storelps): Likewise.
1805         (*avx_loadlps): Likewise.
1806         (*avx_movss): Likewise.
1807         (*vec_dupv4sf_avx): Likewise.
1808         (*vec_concatv2sf_avx): Likewise.
1809         (*vec_concatv4sf_avx): Likewise.
1810         (*vec_setv4sf_0_avx): Likewise.
1811         (*vec_setv4sf_avx): Likewise.
1812         (*avx_insertps): Likewise.
1813         (avx_vextractf128<mode>): Likewise.
1814         (vec_extract_lo_<mode>): Likewise.
1815         (vec_extract_hi_<mode>): Likewise.
1816         (vec_extract_lo_<mode>): Likewise.
1817         (vec_extract_hi_<mode>): Likewise.
1818         (vec_extract_lo_v16hi): Likewise.
1819         (vec_extract_hi_v16hi): Likewise.
1820         (vec_extract_lo_v32qi): Likewise.
1821         (vec_extract_hi_v32qi): Likewise.
1822         (avx_unpckhpd256): Likewise.
1823         (*avx_unpckhpd): Likewise.
1824         (avx_movddup256): Likewise.
1825         (*avx_movddup): Likewise.
1826         (avx_unpcklpd256): Likewise.
1827         (*avx_unpcklpd): Likewise.
1828         (avx_shufpd256): Likewise.
1829         (avx_shufpd256_1): Likewise.
1830         (*avx_punpckhqdq): Likewise.
1831         (*avx_punpcklqdq): Likewise.
1832         (*avx_shufpd_<mode>): Likewise.
1833         (*avx_storehpd): Likewise.
1834         (*avx_loadhpd): Likewise.
1835         (*avx_loadlpd): Likewise.
1836         (*avx_movsd): Likewise.
1837         (*vec_concatv2df_avx): Likewise.
1838         (*avx_<plusminus_insn><mode>3): Likewise.
1839         (*avx_<plusminus_insn><mode>3): Likewise.
1840         (*avx_mulv8hi3): Likewise.
1841         (*avxv8hi3_highpart): Likewise.
1842         (*avx_umulv8hi3_highpart): Likewise.
1843         (*avx_umulv2siv2di3): Likewise.
1844         (*avx_mulv2siv2di3): Likewise.
1845         (*avx_pmaddwd): Likewise.
1846         (*avx_mulv4si3): Likewise.
1847         (*avx_ashr<mode>3): Likewise.
1848         (*avx_lshr<mode>3): Likewise.
1849         (*avx_ashl<mode>3): Likewise.
1850         (*avx_<code><mode>3): Likewise.
1851         (*avx_eq<mode>3): Likewise.
1852         (*avx_gt<mode>3): Likewise.
1853         (*avx_nand<mode>3): Likewise.
1854         (*avx_nand<mode>3): Likewise.
1855         (*avx_<code><mode>3): Likewise.
1856         (*avx_<code><mode>3): Likewise.
1857         (*avx_packsswb): Likewise.
1858         (*avx_packssdw): Likewise.
1859         (*avx_packuswb): Likewise.
1860         (*avx_punpckhbw): Likewise.
1861         (*avx_punpcklbw): Likewise.
1862         (*avx_punpckhwd): Likewise.
1863         (*avx_punpcklwd): Likewise.
1864         (*avx_punpckhdq): Likewise.
1865         (*avx_punpckldq): Likewise.
1866         (*avx_pinsr<avxmodesuffixs>): Likewise.
1867         (*avx_pinsrq): Likewise.
1868         (*avx_loadld): Likewise.
1869         (*vec_extractv2di_1_rex64_avx): Likewise.
1870         (*vec_extractv2di_1_avx): Likewise.
1871         (*vec_dupv2di_avx): Likewise.
1872         (*vec_concatv2si_avx): Likewise.
1873         (*vec_concatv4si_1_avx): Likewise.
1874         (*vec_concatv2di_avx): Likewise.
1875         (*vec_concatv2di_rex64_avx): Likewise.
1876         (*avx_uavgv16qi3): Likewise.
1877         (*avx_uavgv8hi3): Likewise.
1878         (*avx_psadbw): Likewise.
1879         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
1880         (*avx_phaddwv8hi3): Likewise.
1881         (*avx_phadddv4si3): Likewise.
1882         (*avx_phaddswv8hi3): Likewise.
1883         (*avx_phsubwv8hi3): Likewise.
1884         (*avx_phsubdv4si3): Likewise.
1885         (*avx_phsubswv8hi3): Likewise.
1886         (*avx_pmaddubsw128): Likewise.
1887         (*avx_pmulhrswv8hi3): Likewise.
1888         (*avx_pshufbv16qi3): Likewise.
1889         (*avx_psign<mode>3): Likewise.
1890         (*avx_palignrti): Likewise.
1891         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1892         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1893         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1894         (*avx_mpsadbw): Likewise.
1895         (*avx_packusdw): Likewise.
1896         (*avx_pblendvb): Likewise.
1897         (*avx_pblendw): Likewise.
1898         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1899         (avx_ptest256): Likewise.
1900         (avx_roundp<avxmodesuffixf2c>256): Likewise.
1901         (*avx_rounds<ssemodesuffixf2c>): Likewise.
1902         (*avx_aesenc): Likewise.
1903         (*avx_aesenclast): Likewise.
1904         (*avx_aesdec): Likewise.
1905         (*avx_aesdeclast): Likewise.
1906         (avx_vzeroupper): Likewise.
1907         (avx_vzeroupper_rex64): Likewise.
1908         (avx_vpermil<mode>): Likewise.
1909         (avx_vpermilvar<mode>3): Likewise.
1910         (avx_vpermil2<mode>3): Likewise.
1911         (avx_vperm2f128<mode>3): Likewise.
1912         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1913         (avx_vbroadcastss256): Likewise.
1914         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
1915         (avx_vinsertf128<mode>): Likewise.
1916         (vec_set_lo_<mode>): Likewise.
1917         (vec_set_hi_<mode>): Likewise.
1918         (vec_set_lo_<mode>): Likewise.
1919         (vec_set_hi_<mode>): Likewise.
1920         (vec_set_lo_v16hi): Likewise.
1921         (vec_set_hi_v16hi): Likewise.
1922         (vec_set_lo_v32qi): Likewise.
1923         (vec_set_hi_v32qi): Likewise.
1924         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1925         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1926         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
1927         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
1928         (vec_init<mode>): Likewise.
1929         (*vec_concat<mode>_avx): Likewise.
1930         (blendbits): Support V8SF and V4DF.
1931         (sse2_movq128): Support AVX.
1932         (<sse>_movnt<mode>): Likewise.
1933         (sse2_movntv2di): Likewise.
1934         (sse_rcpv4sf2): Likewise.
1935         (sse_sqrtv4sf2): Likewise.
1936         (sse_rsqrtv4sf2): Likewise.
1937         (<sse>_comi): Likewise.
1938         (<sse>_ucomi): Likewise.
1939         (sse_cvtss2si): Likewise.
1940         (sse_cvtss2si_2): Likewise.
1941         (sse_cvtss2siq): Likewise.
1942         (sse_cvtss2siq_2): Likewise.
1943         (sse_cvttss2si): Likewise.
1944         (sse_cvttss2siq): Likewise.
1945         (sse2_cvtsd2si): Likewise.
1946         (sse2_cvtsd2si_2): Likewise.
1947         (sse2_cvtsd2siq): Likewise.
1948         (sse2_cvtsd2siq_2): Likewise.
1949         (sse2_cvttsd2si): Likewise.
1950         (sse2_cvttsd2siq): Likewise.
1951         (sse2_cvtdq2pd): Likewise.
1952         (*sse2_cvtpd2dq): Likewise.
1953         (*sse2_cvttpd2dq): Likewise.
1954         (*sse2_cvtpd2ps): Likewise.
1955         (sse2_cvtps2pd): Likewise.
1956         (sse3_movshdup): Likewise.
1957         (sse3_movsldup): Likewise.
1958         (sse_storehps): Likewise.
1959         (*sse4_1_extractps): Likewise.
1960         (sse2_storelpd): Likewise.
1961         (vec_dupv2df_sse3): Likewise.
1962         (*vec_concatv2df_sse3): Likewise.
1963         (*sse4_1_pextrb): Likewise.
1964         (*sse4_1_pextrb_memory): Likewise.
1965         (*sse2_pextrw): Likewise.
1966         (*sse4_1_pextrw_memory): Likewise.
1967         (*sse4_1_pextrd): Likewise.
1968         (*sse4_1_pextrq): Likewise.
1969         (sse2_pshufd_1): Likewise.
1970         (sse2_pshuflw_1): Likewise.
1971         (sse2_pshufhw_1): Likewise.
1972         (*sse2_storeq_rex64): Likewise.
1973         (*vec_dupv4si): Likewise.
1974         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
1975         (sse2_pmovmskb): Likewise.
1976         (*sse2_maskmovdqu): Likewise.
1977         (*sse2_maskmovdqu_rex64): Likewise.
1978         (sse_ldmxcsr): Likewise.
1979         (sse_stmxcsr): Likewise.
1980         (abs<mode>2): Likewise.
1981         (sse4_1_movntdqa): Likewise.
1982         (sse4_1_phminposuw): Likewise.
1983         (sse4_1_extendv8qiv8hi2): Likewise.
1984         (*sse4_1_extendv8qiv8hi2): Likewise.
1985         (sse4_1_extendv4qiv4si2): Likewise.
1986         (*sse4_1_extendv4qiv4si2): Likewise.
1987         (sse4_1_extendv2qiv2di2): Likewise.
1988         (*sse4_1_extendv2qiv2di2): Likewise.
1989         (sse4_1_extendv4hiv4si2): Likewise.
1990         (*sse4_1_extendv4hiv4si2): Likewise.
1991         (sse4_1_extendv2hiv2di2): Likewise.
1992         (*sse4_1_extendv2hiv2di2): Likewise.
1993         (sse4_1_extendv2siv2di2): Likewise.
1994         (*sse4_1_extendv2siv2di2): Likewise.
1995         (sse4_1_zero_extendv8qiv8hi2): Likewise.
1996         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
1997         (sse4_1_zero_extendv4qiv4si2): Likewise.
1998         (*sse4_1_zero_extendv4qiv4si2): Likewise.
1999         (sse4_1_zero_extendv2qiv2di2): Likewise.
2000         (*sse4_1_zero_extendv2qiv2di2): Likewise.
2001         (sse4_1_zero_extendv4hiv4si2): Likewise.
2002         (*sse4_1_zero_extendv4hiv4si2): Likewise.
2003         (sse4_1_zero_extendv2hiv2di2): Likewise.
2004         (*sse4_1_zero_extendv2hiv2di2): Likewise.
2005         (sse4_1_zero_extendv2siv2di2): Likewise.
2006         (*sse4_1_zero_extendv2siv2di2): Likewise.
2007         (sse4_1_ptest): Likewise.
2008         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
2009         (sse4_2_pcmpestri): Likewise.
2010         (sse4_2_pcmpestrm): Likewise.
2011         (sse4_2_pcmpistri): Likewise.
2012         (sse4_2_pcmpistrm): Likewise.
2013         (aesimc): Likewise.
2014         (aeskeygenassist): Likewise.
2015
2016 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
2017
2018         * config/i386/predicates.md (vzeroall_operation): New.
2019
2020         * config/i386/sse.md (avx_vzeroall): New.
2021         (*avx_vzeroall): Likewise.
2022
2023 2008-08-28  Paul Brook  <paul@codesourcery.com>
2024             Mark Shinwell  <shinwell@codesourcery.com>
2025             Richard Earnshaw  <richard.earnshaw@arm.com>
2026
2027         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
2028         (TARGET_MIN_ANCHOR_OFFSET): New.
2029         (arm_override_options): Set correct anchor ranges for Thumb-1
2030         and Thumb-2 if required.
2031         (legitimize_pic_address): Handle case involving a TLS symbol
2032         reference with an addend.
2033         (arm_optimization_options): Enable section anchors at -O1 and
2034         above.
2035         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
2036         * config/arm/arm-protos.h (arm_optimization_options): New.
2037
2038 2008-08-28  Nick Clifton  <nickc@redhat.com>
2039
2040         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
2041         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
2042         attribute.
2043
2044         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
2045         * config/v850/v850.md (return): Remove frame size restriction.  
2046
2047         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
2048
2049         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
2050
2051         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
2052
2053         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
2054
2055 2008-08-28  Paul Brook  <paul@codesourcery.com>
2056
2057         * config/arm/vfp11.md: Update license notice.
2058         * config/arm/cortex-r4.md: Ditto.
2059
2060 2008-08-28  Richard Guenther  <rguenther@suse.de>
2061
2062         PR tree-optimization/37207
2063         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
2064         tuplification bug.
2065
2066 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
2067
2068         PR c++/36741
2069         * tree.c (int_fits_type_p): Don't forget unsigned integers
2070           of type sizetype which higher end word equals -1.
2071
2072 2008-08-28  Ira Rosen  <irar@il.ibm.com>
2073
2074         * target.h (struct vectorize): Add new target builtin.
2075         * tree-vectorizer.c (destroy_loop_vec_info): Call 
2076         vect_free_slp_instance instead of vect_free_slp_node.
2077         * tree-vectorizer.h (enum slp_load_perm_type): New.
2078         (struct _slp_instance): Add new fields.
2079         (SLP_INSTANCE_LOAD_PERMUTATION): New.
2080         (SLP_INSTANCE_LOADS): New.
2081         (vect_free_slp_tree): Remove.
2082         (vect_free_slp_instance): Declare.        
2083         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
2084         (vectorizable_load): Add argument.
2085         (vect_transform_slp_perm_load): New.
2086         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to 
2087         vectorizable_load.
2088         (vect_get_place_in_interleaving_chain): New function.
2089         (vect_free_slp_tree): Make static.
2090         (vect_free_slp_instance): New function.
2091         (vect_build_slp_tree): Add new arguments. Allow load permutations and 
2092         collect the load location in the interleaving chain.
2093         (vect_supported_slp_permutation_p): New function.
2094         (vect_supported_load_permutation_p): Likewise.
2095         (vect_analyze_slp_instance): In case of loads permutation, call
2096         vect_supported_load_permutation_p to check that the permutation is 
2097         supported.
2098         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
2099         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
2100         (vect_create_mask_and_perm): New function.
2101         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
2102         (vectorizable_load): Add an argument. Don't keep the created vectors  
2103         statements in the node if permutation is required. Call 
2104         vect_transform_slp_perm_load to generate the permutation.
2105         (vect_transform_stmt): Add new argument. Call vectorizable_load with 
2106         additional argument.
2107         (vect_schedule_slp_instance): In case of loads permutation, allocate  
2108         vectorized statements structure for all the related SLP nodes. Call 
2109         vect_transform_stmt with addditional argument.
2110         (vect_transform_loop): Call vect_transform_stmt with correct arguments. 
2111         * config/spu/spu.c (spu_builtin_vec_perm): New. 
2112         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
2113         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
2114         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
2115         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
2116
2117 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
2118
2119         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
2120         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
2121         __gthread_cond_signal, __gthread_cond_timedwait,
2122         __gthread_cond_timedwait_recursive): New functions.
2123         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
2124         Likewise.
2125         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
2126         thread interfaces.
2127
2128 2008-08-28  Richard Guenther  <rguenther@suse.de>
2129
2130         PR middle-end/37005
2131         * fold-const.c (maybe_canonicalize_comparison_1): Require
2132         undefined overflow only for canonicalizing A +- CST cmp CST.
2133         Make sure to not generate new constants that are not inside
2134         their TYPE_MIN/MAX_VALUE range.
2135         (maybe_canonicalize_comparison): Remove undefined overflow
2136         checking from here.
2137         (fold_binary): Remove now duplicate folding.
2138
2139 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
2140
2141         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
2142         use not updated in the last change.
2143
2144 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
2145
2146         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
2147         (IRA_COVER_CLASSES): Add FPUL_REGS.
2148
2149 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2150
2151         PR 37217
2152         * c-common.c (conversion_warning): Check for null operands.
2153
2154 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2155
2156         PR c/31673
2157         * c-decl.c (check_for_loop_decls): Improve error message. Give
2158         hint.
2159
2160 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2161
2162         PR c/37186
2163         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
2164         (convert_for_assignment): Pass corrent OPT_W* parameter to
2165         WARN_FOR_ASSIGNMENT.
2166
2167 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
2168
2169         PR c++/35321
2170         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
2171
2172 2008-08-27  Paul Brook  <paul@codesourcery.com>
2173
2174         * config.gcc: Loosen checks for arm uclinux eabi targets.
2175
2176 2008-08-27  Paul Brook  <paul@codesourcery.com>
2177
2178         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
2179         _clzsi2.
2180         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
2181
2182 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
2183
2184         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
2185         the enumerators of an ENUMERAL_TYPE.
2186         * dbxout.c (dbxout_type): Ditto.
2187
2188 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2189
2190         PR rtl-opt/37219
2191         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
2192         (fwprop_addr): Check that the loop_father is not the outer loop.
2193
2194 2008-08-26  Paul Brook  <paul@codesourcery.com>
2195
2196         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
2197         Remove documentation entry for fmul type.
2198         Use fmuls to annotate single-precision multiplication patterns,
2199         fmuld to annotate double-precision multiplication patterns,
2200         fmacs to annotate single-precision multiply-accumulate patterns
2201         and fmacd to annotate double-precision multiply-accumulate patterns.
2202         * config/arm/vfp11.md: Update reservations accordingly.
2203         * config/arm/arm.md: Note that certain values of the "type"
2204         attribute are documented in vfp.md.
2205         * config/arm/arm1020e.md: Remove out of date duplicate comment.
2206         (v10_cvt): Use new fmul types.
2207
2208 2008-08-26  Paul Brook   <paul@codesourcery.com>
2209
2210         * config/arm/vfp.md: Move pipeline description for VFP11 to...
2211         * config/arm/vfp11.md: ...here.  New.
2212         * config/arm/arm.md: Include vfp11.md.
2213
2214 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
2215
2216         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
2217         parameter to inform call.
2218
2219 2008-08-26  Jeff Law  <law@redhat.com>
2220
2221         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
2222         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
2223         preferred class when copying a constant into a partial word register.
2224
2225 2008-08-26  Ben Elliston  <bje@au.ibm.com>
2226
2227         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
2228         * cp/typeck.c: Likewise.
2229         * cp/tree.c: Likewise.
2230         * gimple-low.c: Likewise.
2231         * jump.c: Likewise.
2232
2233 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
2234
2235         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
2236         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
2237
2238         * doc/passes.texi: Describe IRA.
2239
2240         * doc/tm.texi (IRA_COVER_CLASSES,
2241         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
2242
2243         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
2244         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
2245         -fira-propagate-cost, -fno-ira-share-save-slots,
2246         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
2247
2248         * flags.h (ira_algorithm): New enumeration.
2249         (flag_ira_algorithm, flag_ira_verbose): New external variable
2250         declarations.
2251
2252         * postreload.c (gate_handle_postreload): Don't do post reload
2253         optimizations unless the reload is completed.
2254
2255         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
2256         IRA.
2257
2258         * tree-pass.h (pass_ira): New external variable declaration.
2259
2260         * reload.h: Add 2008 to the Copyright.
2261     
2262         * cfgloopanal.c: Include params.h.
2263         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
2264         mode.
2265     
2266         * params.h (IRA_MAX_LOOPS_NUM): New macro.
2267
2268         * toplev.c (ira.h): New include.
2269         (flag_ira_algorithm, flag_ira_verbose): New external variables.
2270         (backend_init_target): Call ira_init.
2271         (backend_init): Call ira_init_once.
2272         (finalize): Call finish_ira_once.
2273
2274         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
2275         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
2276         external variables.
2277
2278         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
2279         may_move_out_cost): New external variable declarations.
2280         (move_table): New typedef.
2281     
2282         * caller-save.c: Include headers output.h and ira.h.
2283         (no_caller_save_reg_set): New global variable.
2284         (save_slots_num, save_slots): New variables.
2285         (reg_save_code, reg_restore_code, add_stored_regs): Add
2286         prototypes.
2287         (init_caller_save): Set up no_caller_save_reg_set.
2288         (init_save_areas): Reset save_slots_num.
2289         (saved_hard_reg): New structure.
2290         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
2291         (initiate_saved_hard_regs, new_saved_hard_reg,
2292         finish_saved_hard_regs, saved_hard_reg_compare_func): New
2293         functions.
2294         (setup_save_areas): Add code for sharing stack slots.
2295         (all_blocks): New variable.
2296         (save_call_clobbered_regs): Process pseudo-register too.
2297         (mark_set_regs): Process pseudo-register too.
2298         (insert_one_insn): Put the insn after bb note in a empty basic
2299         block.  Add insn check.
2300     
2301         * global.c (eliminable_regset): Make it external.
2302         (mark_elimination): Use DF_LR_IN for IRA.
2303         (pseudo_for_reload_consideration_p): New.
2304         (build_insn_chain): Make it external.  Don't ignore spilled
2305         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
2306         (gate_handle_global_alloc): New function.
2307         (pass_global_alloc): Add the gate function.
2308
2309         * opts.c (decode_options): Set up flag_ira.  Print the warning for
2310         -fira.
2311         (common_handle_option): Process -fira-algorithm and -fira-verbose.
2312
2313         * timevar.def (TV_IRA, TV_RELOAD): New passes.
2314
2315         * regmove.c (regmove_optimize): Don't do replacement of output for
2316         IRA.
2317
2318         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
2319         New external variable declarations.
2320
2321         * local-alloc.c (update_equiv_regs): Make it external.  Return
2322         true if jump label rebuilding should be done.  Rescan new_insn for
2323         notes.
2324         (gate_handle_local_alloc): New function.
2325         (pass_local_alloc): Add the gate function.
2326
2327         * alias.c (value_addr_p, stack_addr_p): New functions.
2328         (nonoverlapping_memrefs_p): Use them for IRA.
2329
2330         * common.opt (fira, fira-algorithm, fira-coalesce,
2331         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
2332         fira-verbose): New options.
2333
2334         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
2335         move_cost, may_move_in_cost, may_move_out_cost): Make the
2336         variables external.
2337         (move_table): Remove typedef.
2338         (init_move_cost): Make it external.
2339         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
2340         functions.
2341
2342         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
2343         setup_reg_classes): New function prototypes.
2344         (eliminable_regset): New external variable declaration.
2345         (build_insn_chain, update_equiv_regs): New function prototypes.
2346     
2347         * Makefile.in (IRA_INT_H): New definition.
2348         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
2349         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
2350         (reload1.o, toplev.o): Add dependence on ira.h.
2351         (cfgloopanal.o): Add PARAMS_H.
2352         (caller-save.o): Add dependence on output.h and ira.h.
2353         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
2354         ira-emit.o, ira-lives.o): New entries.
2355
2356         * passes.c (pass_ira): New pass.
2357
2358         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
2359
2360         * reload1.c (ira.h): Include the header.
2361         (changed_allocation_pseudos): New bitmap.
2362         (init_reload): Initiate the bitmap.
2363         (compute_use_by_pseudos): Permits spilled registers in FROM.
2364         (temp_pseudo_reg_arr): New variable.
2365         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
2366         IRA.  Call alter_reg with the additional parameter.  Don't clear
2367         spilled_pseudos for IRA.  Restore original insn chain for IRA.
2368         Clear changed_allocation_pseudos at the end of reload.
2369         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
2370         (hard_regno_to_pseudo_regno): New variable.
2371         (count_pseudo): Check spilled pseudos.  Set up
2372         hard_regno_to_pseudo_regno.
2373         (count_spilled_pseudo): Check spilled pseudos. Update
2374         hard_regno_to_pseudo_regno.
2375         (find_reg): Use better_spill_reload_regno_p.  Check
2376         hard_regno_to_pseudo_regno.
2377         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
2378         code for IRA.
2379         (eliminate_regs_1): Use additional parameter for alter_reg.
2380         (finish_spills): Set up pseudo_previous_regs only for spilled
2381         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
2382         more arguments.  Don't clear live_throughout and dead_or_set for
2383         spilled pseudos.  Use additional parameter for alter_reg.  Call
2384         mark_allocation_change.  Set up changed_allocation_pseudos.
2385         Remove sanity check.
2386         (emit_input_reload_insns, delete_output_reload): Use additional
2387         parameter for alter_reg.  Call mark_allocation_change.
2388         (substitute, gen_reload_chain_without_interm_reg_p): New
2389         functions.
2390         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
2391     
2392         * testsuite/gcc.dg/20080410-1.c: New file.
2393         
2394         * config/s390/s390.h (IRA_COVER_CLASSES,
2395         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
2396
2397         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
2398
2399         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
2400
2401         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
2402
2403         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
2404
2405         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
2406     
2407         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
2408     
2409         2008-08-24  Jeff Law  <law@redhat.com>
2410         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
2411         when ignoring unavailable registers.
2412
2413         2008-08-24  Jeff Law  <law@redhat.com>
2414         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
2415         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
2416         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
2417         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
2418
2419         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
2420         * ira-build.c (allocno_range_compare_func): Stabilize sort.
2421
2422         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
2423         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
2424         * reload1.c (find_reg): Process registers in register allocation order.
2425
2426         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
2427         * toplev.c (backend_init_target): Move ira_init call from
2428         here...
2429         (lang_dependent_init_target): ...to here.
2430
2431         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
2432         * ira.c (setup_class_subset_and_memory_move_costs): Don't
2433         calculate memory move costs for NO_REGS.
2434
2435         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
2436         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
2437         STACK_REGS is defined.
2438
2439         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
2440         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
2441
2442         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
2443         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
2444
2445         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
2446         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
2447         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
2448         barrier.
2449
2450 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
2451             Dorit Nuzman  <dorit@il.ibm.com>
2452
2453         * gcc/config/spu/spu.md (vec_extract_evenv4si,
2454         vec_extract_evenv4sf, vec_extract_evenv8hi,
2455         vec_extract_evenv16qi, vec_extract_oddv4si,
2456         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
2457         vec_interleave_highv4sf, vec_interleave_lowv4sf,
2458         vec_interleave_highv4si, vec_interleave_lowv4si,
2459         vec_interleave_highv8hi, vec_interleave_lowv8hi,
2460         vec_interleave_highv16qi, vec_interleave_lowv16qi,
2461         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
2462
2463 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
2464
2465         PR target/36756
2466         * config/rs6000/rs6000.c (optimization_options): Don't default to
2467         section anchors without toplevel reorder.
2468
2469 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2470
2471         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
2472         (mfc_end_critical_section): Likewise.
2473
2474 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2475
2476         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
2477         all type qualifiers from element type to vector type.
2478
2479 2008-08-25  David Daney  <ddaney@avtrex.com>
2480
2481         * config/mips/mips.md (immediate_insn): Move up in file, fix
2482         comment typo, reformat.
2483         (fetchop_bit, atomic_hiqi_op memory_barrier,
2484         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
2485         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
2486         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
2487         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
2488         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
2489         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
2490         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
2491         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
2492         sync_old_nand<mode>, sync_new_nand<mode>,
2493         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
2494         test_and_set_12): Moved to sync.md.
2495         (sync.md): Include.
2496         * config/mips/sync.md: New file.
2497
2498 2008-08-25  Richard Henderson  <rth@redhat.com>
2499
2500         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
2501         (regsave): Likewise.
2502         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
2503         (output_cfi_directive): Likewise.
2504         (div_data_align): New.
2505         (output_cfi): Use it.
2506
2507 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
2508
2509         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
2510         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
2511         (TARGET_OCTEON): New macro.
2512         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
2513         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
2514         (ISA_HAS_POP): New macro.
2515         * config/mips/driver-native.c (host_detect_local_cpu): Handle
2516         Octeon.
2517         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
2518         Handle Octeon.
2519         * config/mips/mips.md (cpu): Add octeon.
2520         (type): Add pop attribute value.
2521         (popcount<mode>2): New pattern.
2522         * doc/invoke.texi (-march=@var{arch}): Add octeon.
2523
2524 2008-08-24  Jan Hubicka  <jh@suse.cz>
2525
2526         * doc/invoke.texi (-fipa-cp-clone): New option.
2527         (-fipa-cp): Update docs.
2528         (--param ipcp-unit-growth):New.
2529         * ipa-cp.c: Include fibheap.h, params.h
2530         (ipcp_initialize_node_lattices): When not cloning, all externally
2531         visible functions are bottom.
2532         (ipcp_need_redirect_p): Accept clones.
2533         (ipcp_insert_stage): Use cost driven heuristics.
2534         (max_count, dead_nodes): New static vars.
2535         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
2536         ipcp_const_param_count): New functions.
2537         * common.opt (ipa-cp-clone): New command line option.
2538         * params.def (ipcp-unit-growth): New.
2539
2540 2008-08-24  Jan Hubicka  <jh@suse.cz>
2541
2542         * tree-inline.c (tree_function_versioning): Look harder
2543         for referenced vars.
2544
2545 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
2546
2547         PR tree-optimization/37185
2548         * matrix-reorg.c (transform_access_sites): Update changed stmt.
2549
2550 2008-08-23  Jan Hubicka  <jh@suse.cz>
2551
2552         * ipa-cp.c (ipcp_analyze_node): New function.
2553         (ipcp_update_cloned_node): Use it.
2554         (ipcp_init_stage): Likewise.
2555         * ipa-inline.c (function_insertion_hook_holder): New static var.
2556         (analyze_function): Break out from ....
2557         (inline_generate_summary): Here; register insertion hook.
2558         (cgraph_decide_inlining): Remove hook.
2559         (add_new_function): New function.
2560
2561 2008-08-23  Jan Hubicka  <jh@suse.cz>
2562
2563         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
2564
2565 2008-08-23  Jan Hubicka  <jh@suse.cz>
2566
2567         * ipa-cp.c (constant_val_insert): Remove.
2568         (ipcp_propagate_one_const): Remove.
2569         (ipcp_create_replace_map): Always insert replacements to the map.
2570         (ipcp_insert_stage): Do not try to insert statements by hand.
2571         * tree-inline.c (insert_init_stmt): Break out from ...
2572         (setup_one_parameter): ... here; allow NULL BB pointer.
2573         (tree_function_versioning): Use setup_one_parameter to process
2574         replacement map.
2575
2576 2008-08-23  Jan Hubicka  <jh@suse.cz>
2577
2578         * tree.c (decl_address_ip_invariant_p): New function.
2579         * tree.h (decl_address_ip_invariant_p): Declare.
2580         * gimple.c (strip_invariant_refs): Break out from ...
2581         (is_gimple_invariant_address): ... here
2582         (is_gimple_ip_invariant_address): New function.
2583         (is_gimple_ip_invariant): New function.
2584         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
2585         Declare.
2586
2587         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
2588         (ipcp_lat_is_insertable): All constants are insertable.
2589         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
2590         IPA_CONST_VALUE_REF.
2591         (ipcp_initialize_node_lattices): Propagate all types of operands.
2592         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
2593         (ipcp_create_replace_map): Reformat.
2594         (ipcp_need_redirect_p): Simplify.
2595         (ipcp_insert_stage): Check that argument is used before clonning.
2596         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle IPA_CONST_REF.
2597         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
2598         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
2599         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
2600         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
2601         (jump_func_type): Remove IPA_CONST_VALUE_REF.
2602         * tree-inline.c (tree_function_versioning): Add variables referenced by
2603         replacing trees.
2604
2605 2008-08-23  Jan Hubicka  <jh@suse.cz>
2606
2607         PR target/37094
2608         * i386.c (standard_80387_constant_p): Use optimize_size.
2609
2610 2008-08-23  Ira Rosen  <irar@il.ibm.com>
2611
2612         PR tree-optimization/37161
2613         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
2614         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
2615         (vect_determine_vectorization_factor): Move the scalar type
2616         retrieval to vect_get_smallest_scalar_type.
2617         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
2618         scalar type. Remove redundant computation.
2619         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
2620         (vect_get_slp_defs): Take the type of RHS into account if
2621         necessary by calling vect_get_smallest_scalar_type. Call
2622         vect_get_constant_vectors with additional argument.
2623
2624 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2625
2626         PR 35648
2627         * doc/invoke.texi (Wwrite-strings): Clarify description.
2628         
2629 2008-08-23  Ira Rosen  <irar@il.ibm.com>
2630
2631         PR tree-optimization/37174
2632         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
2633         def stmt is a part of the loop before accessing its stmt_vec_info.
2634
2635 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
2636
2637         PR target/11259
2638         * config/avr/avr.md (UNSPEC_SWAP): New constants.
2639         (*swap): New insn pattern.
2640         (*ashlqi3): Rename from ashlqi3 insn pattern.
2641         (ashlqi3): New expanders.
2642         (*lshrqi3): Rename from lshrqi3 insn pattern.
2643         (lshrqi3): New expanders.       
2644         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
2645         lshrqi3_const5, lshrqi3_const6): New splitters.
2646         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
2647         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
2648         peephole2 patterns.
2649
2650 2008-08-22  Richard Guenther  <rguenther@suse.de>
2651
2652         PR tree-optimization/37078
2653         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
2654         [+INF, +INF] ranges.
2655
2656 2008-08-22  Richard Guenther  <rguenther@suse.de>
2657
2658         PR tree-optimization/37143
2659         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
2660         a conversion statement instead of a copy.
2661
2662 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
2663
2664         PR target/37184
2665         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
2666         CCCmode, CCOmode and CCSmode destination modes.
2667
2668         PR target/37191
2669         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
2670         from different units in a single alternative.
2671         (*vec_extractv2sf_1): Ditto.
2672         (*vec_extractv2si_0): Ditto.
2673         (*vec_extractv2si_1): Ditto.
2674         * config/i386/sse.md (sse2_storehpd): Ditto.
2675         (sse2_storelpd): Ditto.
2676         (sse2_loadhpd): Ditto.
2677         (sse2_loadlpd): Ditto.
2678
2679         PR target/37197
2680         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
2681         (popcountsi2): Ditto.
2682         (clzdi2_abm): Ditto.
2683         (popcountdi2): Ditto.
2684         (clzhi2_abm): Ditto.
2685         (popcounthi2): Ditto.
2686
2687 2008-08-22  Richard Guenther  <rguenther@suse.de>
2688
2689         PR middle-end/36548
2690         PR middle-end/37125
2691         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
2692         if the multiplication does not overflow.
2693
2694 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
2695
2696         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
2697
2698 2008-08-21  Richard Henderson  <rth@redhat.com>
2699
2700         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
2701         spurrious comma from test.
2702         * configure: Rebuild.
2703
2704 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2705
2706         PR 30457
2707         * builtins.c (fold_builtin_next_arg): Add warning about undefined
2708         behaviour.
2709         
2710 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
2711
2712         * c-tree.h (grokfield): New argument.
2713         * c-decl.c (grokfield): Handle new location argument.
2714         * c-parser.c (c_parser_struct_declaration): Pass location to
2715         grokfield.
2716
2717 2008-08-21  Richard Guenther  <rguenther@suse.de>
2718
2719         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
2720
2721 2008-08-21  Jan Hubicka  <jh@suse.cz>
2722
2723         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
2724         (cgraph_add_function_insertion_hook,
2725         cgraph_remove_function_insertion_hook,
2726         cgraph_call_function_insertion_hooks): New functions.
2727         * cgraph.h (cgraph_add_function_insertion_hook,
2728         cgraph_remove_function_insertion_hook,
2729         cgraph_call_function_insertion_hooks): Declare.
2730         * ipa-reference.c (function_insertion_hook_holder): New variable.
2731         (check_operand, look_for_address_of): When checking late, do not care
2732         about module bitmaps.
2733         (add_new_function): New function.
2734         (generate_summary): Register hooks; zero module bitmaps.
2735         (propagate): Unregister hooks.
2736         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
2737         (add_new_function): New function.
2738         (generate_summary): Register hook.
2739         (propagate): Remove hook.
2740
2741         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
2742
2743         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
2744         * ipa-cp.c (ipcp_update_cloned_node): New function.
2745         (build_const_val): Handle functions correctly; bring type logic
2746         into sync with tree-inline.c
2747         (ipcp_init_stage):  Take care of computing stuff needed by
2748         indirect inlining; update clones.
2749         (ipcp_generate_summary): Break out of ipcp_driver.
2750         (ipcp_driver): Do only execution and transformation.
2751         (pass_ipa_cp): Make IPA_PASS.
2752         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
2753         offset to address.
2754         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
2755         ipcp, some info is already available.
2756         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
2757         * tree-inline.c (remap_ssa_name): Unshare expression.
2758
2759 2008-08-21  Richard Guenther  <rguenther@suse.de>
2760
2761         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
2762         a PHI ask VN if it is already available.
2763         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
2764         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
2765
2766 2008-08-21  Richard Guenther  <rguenther@suse.de>
2767
2768         PR middle-end/36817
2769         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
2770         makes sure to produce a result of the correct type.
2771
2772 2008-08-21  Jan Hubicka  <jh@suse.cz>
2773         Backport from LTO branch:
2774
2775         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
2776                     Jan Hubicka  <jh@suse.cz>
2777         
2778         * ipa-pure-const.c
2779         (init_state, finish_state, set_function_state, generate_summary):
2780         New functions.
2781         (scan_stmt): Renamed from scan_function.  Changed to keep state in
2782         local static vars rather than cgraph aux field.
2783         (propagate): Renamed from static_execute. Changed to keep state in
2784         local static vars rather than cgraph aux field.
2785         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
2786         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
2787
2788         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
2789
2790         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
2791         * ipa-reference.c (init_function_info, generate_summary, 
2792         propagate): New functions.
2793         (analyze_function):  Call init_function_info.
2794         (static_execute): Stripped into generate_summary and propagate.
2795         (pass_ipa_reference): Made into ipa_opt_pass.
2796
2797 2008-08-21  Richard Guenther  <rguenther@suse.de>
2798
2799         PR tree-optimization/37181
2800         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
2801         folding result.
2802         (extract_range_from_unary_expr): Likewise.
2803
2804 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2805
2806         * diagnostic.c (pedwarn_at): Rename as pedwarn.
2807         (pedwarn): Delete.
2808         * toplev.h (pedwarn_at): Likewise.
2809         * builtins.c: Update all calls to pedwarn.
2810         * c-lex.c: Likewise.
2811         * toplev.c: Likewise.
2812         * c-tree.h: Likewise.
2813         * c-decl.c: Likewise.
2814         * c-errors.c: Likewise.
2815         * c-typeck.c: Likewise.
2816         * c-common.c: Likewise.
2817         * c-parser.c: Likewise.
2818
2819 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
2820
2821         PR target/31070
2822         * config/sparc/sparc.c (function_arg_slotno): Handle structure
2823         with MODE_VECTOR_INT mode.
2824
2825 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2826
2827         PR middle-end/179
2828         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
2829         initialized outside the current module.
2830         (warn_uninitialized_var): Ignore left-hand side when walking the
2831         trees. Ignore address expressions. Examine VUSE operands in gimple
2832         statements with a variable declaration on the right-hand side.
2833
2834 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
2835
2836         PR bootstrap/37155
2837         * rtlanal.c (subreg_offset_representable_p): Revert last change.
2838
2839 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2840
2841         PR 35701
2842         * c-common.c (conversion_warning): Do not warn if applying bit-and
2843         operator to unsigned constant that fits in the target type.
2844
2845 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2846
2847         PR c++/35602
2848         * c-common.c (conversion_warning): Do not warn for artificial
2849         expressions.
2850
2851 2008-08-20  Richard Guenther  <rguenther@suse.de>
2852
2853         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
2854         (extract_range_from_binary_expr): Fall back to constant propagation.
2855         (extract_range_from_unary_expr): Likewise.
2856
2857 2008-08-20  Richard Guenther  <rguenther@suse.de>
2858
2859         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
2860         with TREE_THIS_VOLATILE on shared nodes.
2861         (fold_stmt_r): Likewise.
2862
2863 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
2864
2865         PR c/37171
2866         * c-parser.c (c_parser_attributes): For keywords use canonical
2867         spelling for attr_name.
2868
2869 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2870
2871         * value-prof.c (check_counter): Revert wrong call to error.
2872         
2873 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2874
2875         * profile.c: Update calls to inform.
2876         * value-prof.c: Update calls to inform.
2877         
2878 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2879
2880         * diagnostic.c (inform): Add an explicit location_t parameter.
2881         * toplev.h (inform): Update declaration.
2882         * builtins.c: Update all calls to inform.
2883         * c-common.c: Likewise.
2884         * c-decl.c: Likewise.
2885         * c-opts.c: Likewise.
2886         * c-pch.c: Likewise.
2887         * c-pragma.c: Likewise.
2888         * c-typeck.c: Likewise.
2889         * coverage.c: Likewise.
2890         * opts.c: Likewise.
2891         * toplev.c: Likewise.
2892         * tree-cfg.c: Likewise.
2893         * tree-ssa.c: Likewise.
2894
2895 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
2896
2897         PR target/37169
2898         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
2899         V2DI mode, for SSE4.1, use movq instead of vector set if the
2900         second element is zero and inter-unit moves are OK.
2901
2902 2008-08-20  Richard Guenther  <rguenther@suse.de>
2903
2904         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
2905         properly handle conversion/copy chains after tuplification.
2906
2907 2008-08-20  Richard Guenther  <rguenther@suse.de>
2908
2909         * passes.c (init_optimization_passes): Move the second
2910         forwprop pass before alias computation.  Remove the second
2911         DCE pass.  Remove the first dominator and phi copy/const
2912         prop passes.
2913
2914 2008-08-20  Nick Clifton  <nickc@redhat.com>
2915
2916         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
2917         support of this feature.  Do not assume that a sufficiently new
2918         assembler will support the feature regardless of the target type.
2919         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
2920         * configure: Regenerate.
2921
2922 2008-08-20  Richard Guenther  <rguenther@suse.de>
2923
2924         * tree-vrp.c (found_in_subgraph): Remove.
2925         (live): New global static.
2926         (live_on_edge): New function.
2927         (blocks_visited): Remove.
2928         (register_edge_assert_for_2): Use live_on_edge.
2929         (find_conditional_asserts): Remove code dealing with
2930         found_in_subgraph.  Do not walk the CFG.
2931         (find_switch_asserts): Likewise.
2932         (find_assert_locations_1): Renamed from find_assert_locations.
2933         Move finding assert locations for conditional and switch
2934         statements first.  Update live bitmap.  Do not walk the CFG.
2935         (find_assert_locations): New function.
2936         (insert_range_assertions): Remove entry of CFG walk.
2937         Adjust call to find_assert_locations.
2938         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
2939         that only can appear because of fake exit edges but assert we
2940         never try to insert on those.
2941         (fini_pre): Do not remove fake exit edges here...
2942         (execute_pre): ...but here, before committing edge inserts.
2943
2944 2008-08-19  Richard Guenther  <rguenther@suse.de>
2945
2946         * passes.c (init_optimization_passes): Exchange store-ccp
2947         with a ccp pass.
2948
2949 2008-08-19  Rafael Espindola  <espindola@google.com>
2950
2951         * varasm.c (weak_decls): Move earlier in the file.
2952         (assemble_external): Add weak decls to the weak_decls list.
2953         (declare_weak): Don't add decls to the weak_decls list.
2954
2955 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
2956
2957         PR target/37157
2958         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
2959         before (sse2_shufpd_<mode>).
2960
2961 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
2962
2963         PR debug/37156
2964         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
2965         * tree.c (block_nonartificial_location): Likewise.
2966
2967 2008-08-19  Richard Guenther  <rguenther@suse.de>
2968
2969         PR tree-optimization/35972
2970         PR tree-optimization/23094
2971         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
2972         parameter.
2973         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
2974         handle MISALIGNED_INDIRECT_REF.
2975         (get_ref_from_reference_ops): New helper.
2976         (vn_reference_lookup_pieces): Walk the use-def chain using the
2977         alias-oracle if requested.
2978         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
2979         walking the use-def chain.
2980         (compute_avail): But not here.
2981         (create_component_ref_by_pieces_1): Properly handle
2982         MISALIGNED_INDIRECT_REF.
2983         (do_regular_insertion): Handle fully redundant
2984         expressions after PHI-translation also for SSA_NAME values, not
2985         only constants.  Correctly use edoubleprime for that.
2986
2987 2008-08-19  Ira Rosen  <irar@il.ibm.com>
2988
2989         * tree-vectorizer.c (supportable_widening_operation): Support
2990         multi-step conversion, return the number of steps in such conversion
2991         and the required intermediate types.
2992         (supportable_narrowing_operation): Likewise.
2993         * tree-vectorizer.h (vect_pow2): New function.
2994         (supportable_widening_operation): Change argument types.
2995         (supportable_narrowing_operation): Likewise.
2996         (vectorizable_type_promotion): Add an argument.
2997         (vectorizable_type_demotion): Likewise.
2998         * tree-vect-analyze.c (vect_analyze_operations): Call 
2999         vectorizable_type_promotion and vectorizable_type_demotion with
3000         additional argument.
3001         (vect_get_and_check_slp_defs): Detect patterns.
3002         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
3003         types. 
3004         (vect_analyze_slp_instance): Don't fail in case of multiple types. Call
3005         vect_build_slp_tree with correct arguments. Calculate unrolling factor
3006         according to the smallest type in the loop.
3007         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
3008         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call 
3009         supportable_widening_operation with correct arguments. 
3010         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector 
3011         operands lists according to the number of vector statements in left
3012         or right node, if exists.
3013         (vect_gen_widened_results_half): Remove unused argument.
3014         (vectorizable_conversion): Call supportable_widening_operation, 
3015         supportable_narrowing_operation, and vect_gen_widened_results_half
3016         with correct arguments. 
3017         (vectorizable_assignment): Change documentation, support multiple
3018         types in SLP. 
3019         (vectorizable_operation): Likewise.
3020         (vect_get_loop_based_defs): New function.
3021         (vect_create_vectorized_demotion_stmts): Likewise.
3022         (vectorizable_type_demotion): Support loop-aware SLP and general
3023         multi-step conversion. Call vect_get_loop_based_defs and
3024         vect_create_vectorized_demotion_stmts for transformation.
3025         (vect_create_vectorized_promotion_stmts): New function.
3026         (vectorizable_type_promotion): Support loop-aware SLP and general
3027         multi-step conversion. Call vect_create_vectorized_promotion_stmts
3028         for transformation.     
3029         (vectorizable_store): Change documentation, support multiple
3030         types in SLP. 
3031         (vectorizable_load): Likewise.
3032         (vect_transform_stmt): Pass SLP_NODE to 
3033         vectorizable_type_promotion and vectorizable_type_demotion.
3034         (vect_schedule_slp_instance): Move here the calculation of number
3035         of vectorized statements for each node from...
3036         (vect_schedule_slp): ... here.
3037         (vect_transform_loop): Call vect_schedule_slp without the last
3038         argument.
3039
3040 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
3041
3042         PR bootstrap/37152
3043         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change = 
3044         to == in assert statement.
3045         (vectorizable_reduction): Fix typo.
3046
3047 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
3048
3049         PR bootstrap/37153
3050         * value-prof.c (check_counter): Dereference pointer to overall
3051         count when printing it.
3052
3053 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
3054
3055         * profile.h: Really add it.
3056
3057 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
3058
3059         * mcf.c: Really add it.
3060
3061 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
3062             Vinodha Ramasamy  <vinodha@google.com>
3063
3064         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
3065         count_scale.
3066         * value-prof.c (check_counter): Fix the counter if
3067         flag_profile_correction is true.
3068         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
3069         tree_mod_subtract_transform):
3070         Follow check_counter parameter change.
3071         * common.opt (fprofile-correction): New option.
3072         * mcf.c: New file.
3073         * profile.h: Likewise.
3074         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
3075         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
3076         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
3077         functions.
3078         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
3079         flag_profile_correction is set.
3080
3081 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
3082
3083         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
3084
3085 2008-08-18  Tomas Bily  <tbily@suse.cz>
3086
3087         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
3088         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
3089         CONVERT_EXPR_P.
3090         * tree-data-ref.c (split_constant_offset_1): Likewise.
3091         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
3092         * tree-sra.c (sra_walk_expr): Likewise.
3093         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
3094         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
3095         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
3096         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
3097         Likewise.
3098         * gimple.c (gimple_assign_unary_nop_p): Likewise.
3099         * tree-vect-transform.c (vectorizable_type_demotion)
3100         (vectorizable_type_promotion): Likewise.
3101         * tree-inline.c (expand_call_inline): 
3102         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
3103         (forward_propagate_addr_expr_1, forward_propagate_comparison)
3104         (tree_ssa_forward_propagate_single_use_vars): Likewise.
3105         * expr.c (expand_expr_real_1): Likewise.
3106         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
3107         (gimple_assign_unary_useless_conversion_p): Likewise.
3108         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
3109         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
3110         * fold-const.c (fold_unary): Likewise.
3111         * tree.h (CONVERT_EXPR_P): Likewise.
3112         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
3113         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
3114         * tree-vrp.c: 
3115         (register_edge_assert_for_2, extract_range_from_unary_expr)
3116         (register_edge_assert_for_1): Likewise.
3117         
3118 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3119
3120         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
3121         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
3122         (enum real_value_const): Delete.
3123         (get_real_const): Delete.
3124         * real.c (get_real_const): Delete.
3125         (dconst_e_ptr): Define.
3126         (dconst_third_ptr): Define.
3127         (dconst_sqrt2_ptr): Define.
3128         * builtins.c: Update all callers.
3129
3130 2008-08-18  Richard Guenther  <rguenther@suse.de>
3131
3132         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
3133         statement iterator after statement removal.
3134
3135 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
3136
3137         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
3138         (detect_processor_freebsd): Likewise.
3139         (host_detect_local_cpu): Call newly added functions for FreeBSD.
3140
3141 2008-08-18  Richard Guenther  <rguenther@suse.de>
3142
3143         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
3144         and loads have the correct types.
3145
3146 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3147
3148         PR cpp/7263
3149         * c-opts.c (cpp_opts): Remove static.
3150         * c-parser.c (cpp_opts): Declare it extern.
3151         (disable_extension_diagnostics): Handle cpp options.
3152         (enable_extension_diagnostics): Likewise.
3153
3154 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3155
3156         * diagnostics.c (permerror_at): Rename as permerror.
3157         (permerror): Delete.
3158         * toplev.h: Likewise.
3159
3160 2008-08-18  Richard Guenther  <rguenther@suse.de>
3161
3162         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
3163         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
3164         Move call_cdce before build_alias.  Move copyrename2,
3165         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
3166         right after final inlining.
3167         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
3168         (pass_build_cfg): But instead via TODO_dump_func.
3169
3170 2008-08-18  Richard Guenther  <rguenther@suse.de>
3171
3172         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
3173         element index.
3174         (scalarize_init): If we failed to generate some initializers
3175         do not generate zeros for not instantiated members.  Instead
3176         rely on the copy out.
3177         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
3178         about missing flow-sensitive alias info only if we have
3179         aliases computed.
3180
3181 2008-08-17  Nick Clifton  <nickc@redhat.com>
3182
3183         * doc/extend.texi (Function Attributes): Fix typo in description
3184         if hot function attribute.
3185
3186 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
3187             Richard Sandiford  <rdsandiford@googlemail.com>
3188
3189         * doc/install.texi (--with-mips-plt): Document.
3190         * doc/invoke.texi (-mplt, -mno-plt): Document.
3191         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
3192         and handle ${with_mips_plt}.
3193         * config/mips/mips.opt (mplt): New option.
3194         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
3195         (TARGET_ABICALLS_PIC2): Likewise.
3196         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
3197         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
3198         (ASM_SPEC): Use !mabi=* instead of !mabi*.
3199         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
3200         to decide whether to output ".option picX" directives.
3201         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
3202         Pass -call_nonpic rather than -KPIC for -mplt.
3203         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
3204         on the command line.  Also remove it when -mabi=64 is used without
3205         -msym32.
3206         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
3207         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
3208         TARGET_ABICALLS_PIC0.
3209         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
3210         TARGET_ABICALLS.
3211         (mips16_build_function_stub): Only output ".option pic" directives
3212         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
3213         (mips16_build_call_stub): Fix comment and remove redundant
3214         ".set at"/"set .noat" directives.
3215         (mips_function_rodata_section): Use the default behaviour for
3216         TARGET_ABSOLUTE_ABICALLS.
3217         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
3218         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
3219         (mips_restore_gp): Do nothing if the current function doesn't use
3220         a global pointer.
3221         (mips_expand_prologue): Only save $gp if the current function uses it.
3222         Use a normal move for TARGET_ABICALLS_PIC0.
3223         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
3224
3225 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
3226
3227         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
3228         of function when handling GLOBAL_POINTER_REGNUM.
3229
3230 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
3231
3232         PR ada/20548
3233         * common.opt (-fstack-check): Do not declare the variable here.
3234         (-fstack-check=): New option variant.
3235         * doc/invoke.texi (Code Gen Options): Document it.
3236         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
3237         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
3238         (STACK_CHECK_STATIC_BUILTIN): New macro.
3239         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
3240         * opts.c: Include expr.h.
3241         (common_handle_option) <OPT_fold_stack_check_>: New case.
3242         <OPT_fstack_check>: Likewise.
3243         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
3244         consistently in the test for variable-sized types.  Adjust for
3245         new behaviour of flag_stack_check.
3246         * explow.c: Include except.h.
3247         (allocate_dynamic_stack_space): Do not take into account
3248         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
3249         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
3250         for variable-sized parameters.  Treat all parameters whose size is
3251         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
3252         stack checking is enabled.
3253         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
3254         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
3255         if generic stack checking is enabled.
3256         (expand_function_end): Adjust for new behaviour of flag_stack_check.
3257         * reload1.c (reload): Likewise.
3258         * stmt.c (expand_decl): Assert that all automatic variables have
3259         fixed size at this point and remove dead code.
3260         * flags.h (stack_check_type): New enumeration type.
3261         (flag_stack_check): Declare.
3262         * toplev.c (flag_stack_check): New global variable.
3263         * Makefile.in (opts.o): Add dependency on EXPR_H.
3264         (explow.o): Add dependency on except.h.
3265
3266 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
3267
3268         * config/avr/avr.c (avr_override_options): Reduce value of 
3269         PARAM_INLINE_CALL_COST.
3270
3271 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
3272
3273         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
3274         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
3275         lieu of TYPE_MODE (type) throughout.
3276
3277 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
3278
3279         * config/arm/arm.c (add_minipool_backward_ref): Check for
3280         8-byte-aligned entries in second case of forcing insertion after a
3281         particular entry.  Change third case to avoid inserting
3282         non-8-byte-aligned entries before 8-byte-aligned ones.
3283
3284 2008-08-15  Richard Guenther  <rguenther@suse.de>
3285
3286         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
3287         strip components for unknown size accesses.
3288
3289 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
3290
3291         * config/s390/2097.md New file.
3292         * config/s390/s390.md ("z10prop" attribute): Define none,
3293         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
3294         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
3295         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
3296         possible values and apply them to insns as appropriate.
3297         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
3298         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
3299         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
3300         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible
3301         values.
3302         ("bfp" mode attribute): Removed.  Every occurence replaced
3303         with <mode>.
3304         * config/s390/s390.c (struct "z10_cost"): Updated entries.
3305         * config/s390/2084.md (insn_reservation "x_itof"): Updated
3306           type attribute.
3307
3308 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3309
3310         PR c/28152
3311         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
3312         for keywords.
3313         
3314 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
3315
3316         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
3317         additional argument. Support reduction when duplication is needed due
3318         to data-types of different sizes in the loop.
3319         (get_initial_def_for_induction): Fix printout.
3320         (vect_get_vec_def_for_stmt_copy): Support case where the
3321         vec_stmt_for_operand is a phi node.
3322         (vectorizable_reduction): Support reduction when duplication is needed 
3323         due to data-types of different sizes in the loop.
3324         (vectorizable_call): Remove restriction to not vectorize in case we 
3325         have data-types of different sizes in the loop.
3326         (vectorizable_conversion): Likewise.
3327         (vectorizable_operation): Likewise.
3328         (vectorizable_type_demotion): Likewise.
3329         (vectorizable_type_promotion): Likewise.
3330         (vectorizable_induction): Add restriction to not vectorize in case 
3331         we have data-types of different sizes in the loop.
3332
3333 2008-08-14  Christophe Saout  <christophe@saout.de>
3334             Uros Bizjak  <ubizjak@gmail.com>
3335
3336         PR target/37101
3337         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
3338         (*vec_concatv2di_rex64_sse4_1): Ditto.
3339         (*vec_concatv2di_rex64_sse): Ditto.
3340
3341 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
3342
3343         PR middle-end/37103
3344         * fold-const.c (fold_widened_comparison): Do not allow
3345         sign changes that change the result even if shorter type
3346         is wider than arg1_unw's type.
3347
3348 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
3349
3350         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
3351         Skip if the multilib testing specifies -march that does not
3352         agree with the one specified in the testcase.
3353
3354 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
3355
3356         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
3357         zero extend SImode values being converted to TFmode before passing
3358         to libcalls.
3359
3360 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3361
3362         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
3363         __PPU__ when targeting the Cell/B.E. PPU processor.
3364
3365 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
3366
3367         * gimple.h (gimple_call_set_chain): Accept SSA variables.
3368         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
3369         Rematerialize the static chain, if any.
3370         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
3371         static chain.
3372
3373 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
3374
3375         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
3376         (new_loc_descr): Likewise.
3377         (add_loc_descr): Likewise.
3378         (size_of_loc_descr): Likewise.
3379         (size_of_locs): Likewise.
3380         (output_loc_operands): Likewise.
3381         (output_loc_sequence): Likewise.
3382         (new_reg_loc_descr): New.
3383         (build_cfa_loc): Use it.
3384         (build_cfa_aligned_loc): Likewise.
3385         (one_reg_loc_descriptor): Likewise.
3386         (based_loc_descr): Likewise.
3387
3388 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3389
3390         PR 30551
3391         * doc/invoke.texi (Wmain): Update.
3392         * c-decl.c (start_decl): warn_main is only 0 or 1.
3393         (start_function): Likewise. Fix formatting.
3394         (finish_function): Delete redundant warning.
3395         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
3396         * c-opts (c_common_handle_option): -Wall only has effect if
3397         warn_main is uninitialized. OPT_Wmain is automatically
3398         handled. -pedantic also enables Wmain.
3399         (c_common_post_options): Handle all logic for Wmain here.
3400         * c-common.c (warn_main): Delete.
3401         (check_main_parameter_types): Make pedwarns conditional on
3402         OPT_Wmain.
3403         * c-common.h (warn_main): Delete.
3404
3405 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
3406
3407         PR middle-end/36701
3408         * expr.c (emit_group_store): Allocate stack temp with the
3409         largest alignment when copying from register to stack.
3410
3411 2008-08-13  Richard Guenther  <rguenther@suse.de>
3412
3413         * tree.h (maybe_fold_offset_to_address): Declare.
3414         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
3415         (ccp_fold): Handle pointer conversions the same as fold_stmt.
3416         Likewise for POINTER_PLUS_EXPR.
3417         (maybe_fold_offset_to_reference): Enable disabled code.
3418         (maybe_fold_offset_to_address): New function.
3419         (fold_stmt_r): Use it.
3420         (fold_gimple_assign): Likewise.
3421         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
3422         (gimplify_expr): Likewise.
3423
3424 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3425
3426         * toplev.h (pedwarn_at): Fix declaration.
3427         
3428 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
3429
3430         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
3431         LINK_SPEC): Use %R in -Y P argument.
3432
3433 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3434
3435         PR c/15236
3436         * diagnostic.c (pedwarn_at): New.
3437         * toplev.h (pedwarn_at): Declare.
3438         * c-tree.h (build_enumerator): Update declaration.
3439         * c-decl.c (finish_enum): Update comment.
3440         (build_enumerator): Take a location parameter. Give a pedwarn but do
3441         not perform any conversion.
3442         * c-parser.c (c_parser_enum_specifier): Set correct location for
3443         enumerator.
3444
3445 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3446
3447         PR 35635
3448         * c-common.c (conversion_warning): Use a switch. Ignore boolean
3449         expressions except for conversions to signed:1 bitfields. Handle
3450         COND_EXPR with constant operands.
3451         
3452 2008-08-13  Richard Guenther  <rguenther@suse.de>
3453
3454         PR tree-optimization/15255
3455         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
3456         (struct oecount_s): New struct and VEC types.
3457         (cvec): New global.
3458         (oecount_hash): New function.
3459         (oecount_eq): Likewise.
3460         (oecount_cmp): Likewise.
3461         (zero_one_operation): New function.
3462         (build_and_add_sum): Likewise.
3463         (undistribute_ops_list): Perform un-distribution of multiplication
3464         and division on the chain of summands.
3465         (should_break_up_subtract): Also break up subtracts for factors.
3466         (reassociate_bb): Delete dead visited statements.
3467         Call undistribute_ops_list.  Re-sort and optimize if it did something.
3468         * passes.c (init_optimization_passes): Move DSE before
3469         reassociation.
3470         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
3471         PHI nodes.
3472
3473 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
3474
3475         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
3476
3477         * doc/invoke.texi: Revert unintended checkin.
3478
3479 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
3480
3481         PR libgomp/26165
3482         * gcc.c (include_spec_function): Tweak call to find_a_file.
3483
3484 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
3485
3486         PR middle-end/37014
3487         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
3488         and TRUTH_ORIF_EXPR.
3489         * dojump.c (do_jump): Likewise.
3490
3491         PR tree-optimization/37084
3492         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
3493         if id->regimplify, don't assume stmt is a cast assignment.
3494
3495 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
3496
3497         * final.c (final_scan_insn): Use app_enable/app_disable functions.
3498
3499 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3500
3501         PR bootstrap/37097
3502         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
3503         by last change.
3504
3505 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3506
3507         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
3508         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
3509
3510         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
3511         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
3512         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
3513         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
3514         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
3515
3516         * doc/tm.texi (Storage Layout): Remove documentation for
3517         TARGET_FLOAT_FORMAT.
3518
3519         * simplify-rtx.c (simplify_binary_operation_1): Replace
3520         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
3521
3522 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3523
3524         * real.h (struct real_format): New member has_sign_dependent_rounding.
3525         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
3526         spu_single_format, ieee_double_format, mips_double_format,
3527         motorola_double_format, ieee_extended_motorola_format,
3528         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
3529         ieee_extended_intel_96_round_53_format, ibm_extended_format,
3530         mips_extended_format, ieee_quad_format, mips_quad_format,
3531         vax_f_format, vax_d_format, vax_g_format): Initialize it.
3532         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
3533
3534         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
3535         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
3536         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
3537         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
3538         (ROUND_TOWARDS_ZERO): Likewise.
3539
3540         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
3541         (FLOAT_MODE_FORMAT): New macro.
3542         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
3543         (MODE_COMPOSITE_P): ... this new macro.
3544         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
3545         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
3546         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
3547
3548         * flags.h: Include "real.h".
3549
3550         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
3551         REAL_MODE_FORMAT_COMPOSITE_P.
3552         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
3553
3554         * doc/tm.texi (Storage Layout): Remove documentation of
3555         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
3556         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
3557         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
3558         they only apply to libgcc2.a.
3559
3560 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3561
3562         * config/spu/float_disf.c: New file.
3563         * config/spu/float_unsdisf.c: New file.
3564         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
3565         (LIB2FUNCS_EXCLUDE): Define.
3566
3567 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3568             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
3569
3570         * real.h (struct real_format): New member round_towards_zero.
3571         * real.c (round_for_format): Respect fmt->round_towards_zero.
3572         (ieee_single_format, mips_single_format, motorola_single_format,
3573         spu_single_format, ieee_double_format, mips_double_format,
3574         motorola_double_format, ieee_extended_motorola_format,
3575         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
3576         ieee_extended_intel_96_round_53_format, ibm_extended_format,
3577         mips_extended_format, ieee_quad_format, mips_quad_format,
3578         vax_f_format, vax_d_format, vax_g_format): Initialize it.
3579         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
3580
3581         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
3582         real_format to choose rounding mode when calling MPFR functions.
3583         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
3584         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
3585
3586         * real.h (real_to_decimal_for_mode): Add prototype.
3587         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
3588         Respect target rounding mode when generating decimal representation.
3589         (real_to_decimal): New stub for backwards compatibility.
3590         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
3591         real_to_decimal_for_mode instead of real_to_decimal.
3592
3593         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
3594
3595 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3596             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
3597
3598         * real.c (spu_single_format): New variable.
3599         * real.h (spu_single_format): Declare.
3600
3601         * config/spu/spu.c (spu_override_options): Install SFmode format.
3602         (spu_split_immediate): Use integer mode to operate on pieces of
3603         floating-point values in all cases.
3604
3605         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
3606         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
3607         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
3608
3609 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3610
3611         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
3612
3613 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3614
3615         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
3616
3617 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
3618
3619         PR c++/36688
3620         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
3621         on the VAR_DECL instead of TYPE_READONLY on its type.
3622
3623 2008-08-12  Ira Rosen  <irar@il.ibm.com>
3624
3625         * tree-vectorizer.c: Depend on langhooks.h.
3626         (supportable_widening_operation): Add two arguments. Support double
3627         type conversions.
3628         (supportable_narrowing_operation): Likewise.
3629         * tree-vectorizer.h (supportable_widening_operation): Add two 
3630         arguments.
3631         (supportable_narrowing_operation): Likewise.
3632         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
3633         supportable_widening_operation with correct arguments.
3634         * tree-vect-transform.c (vectorizable_conversion): Likewise.
3635         (vectorizable_type_demotion): Support double type conversions.
3636         (vectorizable_type_promotion): Likewise.
3637         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
3638
3639 2008-08-11  Michael Matz  <matz@suse.de>
3640
3641         * i386/i386.c (override_options): Move initialisation from
3642         flag_schedule_insns_after_reload to here from ...
3643         (optimization_options): ... here.
3644
3645 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
3646
3647         PR rtl-optimization/36998
3648         * dwarf2out.c (compute_barrier_args_size_1,
3649         compute_barrier_args_size): Temporarily remove assertions.
3650
3651 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3652
3653         PR middle-end/20644
3654         * tree-ssa.c (struct walk_data): Add new flag
3655         warn_possibly_uninitialized.
3656         (warn_uninitialized_var): Use it.
3657         (warn_uninitialized_vars): New.
3658         (execute_early_warn_uninitialized): Call it.
3659         (execute_late_warn_uninitialized): Likewise.
3660
3661 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3662
3663         PR middle-end/36238
3664         * reload1.c (gen_reload): Guard calls to get_secondary_mem
3665         for memory subregs.
3666
3667 2008-08-09  Jan Hubicka  <jh@suse.cz>
3668
3669         PR target/37055
3670         * optabs.c (maybe_emit_unop_insn): Remove produced code if
3671         expansion failed.
3672         (expand_fix): Be prepared for expansion to fail.
3673         (expand_sfix_optab): Remove instructions if expansion failed.
3674
3675 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
3676
3677         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
3678         avr31 architecture.
3679         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
3680         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
3681
3682 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
3683
3684         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
3685         mips/t-libgcc-mips16 to tmake_file.
3686         * config/mips/mips-protos.h (mips_call_type): New enum.
3687         (mips_pic_base_register, mips_got_load): Declare.
3688         (mips_restore_gp): Take an rtx argument.
3689         (mips_use_pic_fn_addr_reg_p): Declare.
3690         (mips_expand_call): Replace the sibcall_p argument with
3691         a mips_call_type argument.  Add a lazy_p parameter.
3692         (mips_split_call): Declare.
3693         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
3694         (MIPS16_PIC_TEMP): Likewise.
3695         (reg_class): Delete M16_NA_REGS.
3696         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
3697         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
3698         (mips_split_hi_p): Declare.
3699         * config/mips/mips.c (mips_split_hi_p): New array.
3700         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
3701         (mips_got_symbol_type_p): New function.
3702         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
3703         (mips16_stub_function_p): New function.
3704         (mips16_local_function_p): Likewise.
3705         (mips_use_pic_fn_addr_reg_p): Likewise.
3706         (mips_cannot_force_const_mem): Return false for HIGHs.
3707         Extend CONST_INT and symbolic handling to MIPS16, using
3708         mips_symbol_insns to check that the base symbol type is a
3709         legitimate constant.  Reject GOT-based constants if
3710         TARGET_MIPS16_PCREL_LOADS.
3711         (mips_const_insns): Check targetm.cannot_force_const_mem when
3712         decomposing a symbolic base and a large offset.
3713         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
3714         When calling a function that needs $25 from MIPS16 code,
3715         move the target address into $25 separately and add a USE
3716         to the call insn.
3717         (mips16_gp_pseudo_reg): Insert the initializer immediately
3718         before the first real insn.
3719         (mips_pic_base_register, mips_got_load): New functions.
3720         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
3721         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
3722         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
3723         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
3724         (mips_call_tls_get_addr): Update the call to mips_expand_call,
3725         also passing NULL_RTX rather than const0_rtx as the aux argument.
3726         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
3727         instead of TARGET_EXPLICIT_RELOCS.
3728         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
3729         (mips_load_call_address): Replace the sibcall_p argument with
3730         a mips_call_type argument.  Use mips_got_load.
3731         (mips16_local_alias): New structure.
3732         (mips16_local_aliases): New variable.
3733         (mips16_local_aliases_hash): New function.
3734         (mips16_local_aliases_eq): Likewise.
3735         (mips16_local_alias): Likewise.
3736         (mips16_stub_function): Likewise.
3737         (mips16_build_function_stub): Create a local alias for the target
3738         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
3739         .cpload directive and an R_MIPS_NONE relocation for the target
3740         function, then load the alias rather than the function itself.
3741         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
3742         (mips16_copy_fpr_return_value): Use mips16_stub_function and
3743         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
3744         (mips16_build_call_stub): Replace the FN parameter with an
3745         FN_PTR parameter.  Force the address into a register if it
3746         isn't a call_insn_operand; don't rely on the caller to do this.
3747         If a call to a locally-defined and locally-binding MIPS16
3748         function must be made indirectly, redirect the call to the
3749         function's local alias.  Use mips16_stub_function_p,
3750         mips16_stub_function, mips_expand_call and use_reg.
3751         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
3752         Use explicit %hi and %lo accesses where possible.
3753         Use MIPS_CALL to generate the correct code form of a
3754         jal instruction.  Add clobbers of $18 instead of uses.
3755         Update the call to mips_emit_call_insn.
3756         (mips_expand_call): Replace the SIBCALL_P argument with a
3757         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
3758         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
3759         allowing it to modify the call address.  Update the calls to
3760         mips_load_call_address and mips_emit_call_insn.
3761         (mips_split_call): New function.
3762         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
3763         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
3764         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
3765         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
3766         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
3767         if TARGET_MIPS16.
3768         (mips_cprestore_slot): New function.
3769         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
3770         and use mips_cprestore_slot.
3771         (mips_output_function_prologue): Handle TARGET_MIPS16 for
3772         LOADGP_OLDABI.
3773         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
3774         then use a copygp_mips16 instruction to set up $28.
3775         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
3776         (mips16_lay_out_constants): Call split_all_insns_noflow.
3777         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
3778         false if TARGET_MIPS16.
3779         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
3780         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
3781         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
3782         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
3783         MIPS16 code.  Allow MIPS16 o32 PIC.
3784         (mips_override_options): Allow MIPS16 o32 PIC.
3785         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
3786         after reload if TARGET_USE_GOT.
3787         (UNSPEC_COPYGP): New constant.
3788         (length): Use a default length of 8 for MIPS16 GOT loads.
3789         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
3790         (*got_page<mode>): Check mips_split_hi_p.
3791         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
3792         (unspec_got<mode>, unspec_call<mode>): New expanders.
3793         (load_got<mode>, load_call<mode>): Remove the length attributes.
3794         Use a got attribute instead of a type attribute.
3795         (copygp_mips16): New insn.
3796         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
3797         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
3798         (sibcall, sibcall_value, call, call_value): Update the calls
3799         to mips_expand_call.
3800         (call_internal, call_value_internal): Use mips_split_call.
3801         (call_value_multiple_internal): Likewise.
3802         (call_split): Move after call_internal (the insn it is split from).
3803         (call_internal_direct, call_value_internal_direct): Turn into
3804         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
3805         (call_direct_split, call_value_direct_split): New patterns.
3806         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
3807         and use M16_REGS instead of M16_NA_REGS.
3808         * config/mips/predicates.md (const_call_insn_operand): Replace
3809         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
3810         mips_use_pic_fn_addr_reg_p check.
3811         (move_operand): Reject HIGHs if mips_split_hi_p.
3812         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
3813         (__mips16_floatunsisf): Inline __mips16_floatsisf.
3814         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
3815         * config/mips/libgcc-mips16.ver: New file.
3816         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
3817         $(srcdir)/config/mips/libgcc-mips16.ver.
3818
3819 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
3820
3821         * config/mips/mips.c (mips_unspec_address_offset): Move earlier in file.
3822         (mips_unspec_address, mips_unspec_offset_high): Likewise.
3823         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
3824         (mips16_cfun_returns_in_fpr_p): Likewise.
3825
3826 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
3827
3828         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
3829         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
3830         rather than 4 to PC.
3831
3832 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
3833
3834         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
3835         (FUNCTION_PROFILER): Save the static chain pointer into $2
3836         beforehand and restore it aftewards.
3837         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
3838         address directly into $25 and call the function through $25;
3839         do not clobber $3.  Pad the DImode version to cover the space
3840         left by the deleted $25 <- $3 move.
3841         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
3842         the removal of the $25 <- $3 move.
3843         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
3844         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
3845
3846 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
3847             Daniel Jacobowitz  <dan@codesourcery.com>
3848
3849         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
3850         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
3851         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
3852         * config/mips/mips.c (mips_start_function_definition): New function.
3853         (mips_end_function_definition): Likewise.
3854         (mips_output_function_prologue): Use mips_start_function_definition.
3855         (mips_output_function_epilogue): Use mips_end_function_definition.
3856         (build_mips16_function_stub): Use mips_start_function_definition
3857         and mips_end_function_definition.
3858         (build_mips16_call_stub): Likewise.
3859
3860 2008-08-09  Richard Guenther  <rguenther@suse.de>
3861
3862         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
3863         * gimple.h (gimple_call_fn): Adjust comment.
3864         (gimple_call_set_fndecl): New function.
3865         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
3866         longer having bare FUNCTION_DECL operand.
3867         (gimple_call_return_type): Likewise.
3868         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
3869
3870         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
3871         (gimple_mod_pow2): Likewise.
3872         (gimple_mod_subtract): Likewise.
3873         (gimple_ic): Likewise.
3874         (gimple_stringop_fixed_value): Likewise.
3875         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
3876         longer having bare FUNCTION_DECL operand.
3877         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
3878         * omp-low.c (optimize_omp_library_calls): Likewise.
3879         * cgraphunit.c (update_call_expr): Likewise.
3880         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
3881         (execute_convert_to_rsqrt): Likewise.
3882         * cfgexpand.c (gimple_to_tree): Simplify.
3883         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
3884         bare FUNCTION_DECL operand.
3885         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
3886         (convert_gimple_call): Use gimple_call_fndecl.
3887         * c-common.c (c_warn_unused_result): Likewise.
3888
3889 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3890
3891         PR c/17880
3892         * c-typeck.c (digest_init): Call verify_sequence_points from here.
3893         (c_finish_return): Likewise.
3894         (c_start_case): Likewise.
3895         * c-common.c (warn_for_collisions_1): Use explicit location in
3896         warning.
3897         * c-parser.c (c_parser_condition): New. Call
3898         verify_sequence_points.
3899         (c_parser_paren_condition): Call c_parser_condition.
3900         (c_parser_for_statement): Call c_parser_condition.
3901
3902 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3903
3904         PR 36901
3905         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.  
3906         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
3907         Moved from diagnostic.h
3908         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
3909         DK_PERMERROR.
3910         (emit_diagnostic): New.
3911         (warning0, pedwarn0): Delete.
3912         (warning, warning_at, pedwarn, permerror): Return bool.  
3913         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
3914         Moved to diagnostic.c.
3915         (struct diagnostic_context): Use correct type for
3916         classify_diagnostic.
3917         (diagnostic_report_diagnostic): Update declaration.
3918         (emit_diagnostic): Declare.
3919         * errors.c (warning): Return bool.  
3920         * errors.h (warning): Update declaration.
3921         * toplev.h (warning0, pedwarn0): Delete.
3922         (warning, warning_at, pedwarn, permerror): Return bool.
3923         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
3924         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
3925         inform. Update all calls.
3926         (diagnose_mismatched_decls): Check return value of warning/pedwarn
3927         before giving informative note.
3928         (implicit_decl_warning): Likewise.  
3929         * c-typeck.c (build_function_call): Likewise.  
3930         * tree-sssa.c (warn_uninit): Likewise.  
3931         * builtins.c (gimplify_va_arg_expr): Likewise.
3932
3933 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3934
3935         PR 7651
3936         * doc/invoke.texi (-Wextra): Move warning from here...
3937         (-Wuninitialized): ... to here.
3938         
3939 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3940
3941         PR 28875
3942         * flags.h (set_Wunused): Delete
3943         * toplev.c (process_options): Handle Wunused flags here.
3944         * opts.c (maybe_warn_unused_parameter): Delete.
3945         (common_handle_option): Replace set_Wunused by warn_unused.
3946         (set_Wextra): Do not handle Wunused-parameter here.
3947         (set_Wunused): Delete.
3948         * c-opts.c (c_common_handle_option): Replace set_Wunused by
3949         warn_unused.
3950         * common.opt (Wunused): Add Var and Init.
3951         (Wunused-function): Likewise.
3952         (Wunused-label): Likewise.
3953         (Wunused-parameter): Likewise.
3954         (Wunused-value): Likewise.
3955         (Wunused-variable): Likewise.
3956         
3957 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
3958
3959         * doc/invoke.texi: Add cpu_type power7.
3960         * config.in (HAVE_AS_VSX): New.
3961         * config.gcc: Add cpu_type power7.
3962         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
3963         VSX instructions.
3964         * configure: Regenerate.
3965         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
3966         power5.
3967         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
3968         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
3969         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
3970
3971 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
3972
3973         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
3974         type to vectorize.builtin_conversion.
3975         (vectorizable_conversion): Likewise.
3976         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
3977         integral type as input.
3978         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
3979         FIX_TRUNC_EXPR.
3980         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
3981         and ALTIVEC_BUILTIN_VCTSXS.
3982         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
3983         formatting. 
3984
3985 2008-08-08  Richard Guenther  <rguenther@suse.de>
3986
3987         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
3988         (surely_varying_stmt_p): Calls are varying only if they are
3989         non-builtin and not indirect or have no result.
3990         (ccp_fold): Re-instantiate code before the tuples merge.
3991
3992 2008-08-08  Richard Guenther  <rguenther@suse.de>
3993
3994         PR tree-optimization/37056
3995         * gimple.h (gimple_assign_rhs_class): New helper function.
3996         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
3997         unary operations properly.
3998
3999 2008-08-07  Jan Hubicka  <jh@suse.cz>
4000
4001         * i386.h (ix86_size_cost): Declare.
4002         (ix86_cur_cost): New function macro.
4003         * i386.md (peepholes expanding size and splitters): Predicate by
4004         optimize_insn_for_speed_p.
4005         (peepholes reduce size and splitters): Predicate by
4006         optimize_insn_for_size_p.
4007         * i386.c (ix86_size_cost): Rename from ...
4008         (size_cost): This one.
4009         (override_options): Update.
4010         (decide_alg): Likewise.
4011         (ix86_expand_clear): Use RTL profile.
4012         (ix86_pad_returns): Use RTL profile.
4013
4014 2008-08-07  Jan Hubicka  <jh@suse.cz>
4015
4016         * recog.c (split_all_insns): Set RTL profile
4017         (peephole2_optimize): Likewise.
4018         * function.c (thread_prologue_and_epilogue_insns): Likewise.
4019         * combine.c (combine_instructions): Likewise.
4020
4021 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4022
4023         * c-common.c (c_common_reswords): Also warn about keyword "bool".
4024
4025 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
4026         
4027         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
4028         value in a6 after the set_frame_ptr insn.
4029         
4030 2008-08-07  Richard Henderson  <rth@redhat.com>
4031
4032         PR debug/37033
4033         * gcc.c (cpp_options): Pass along -g*.
4034
4035 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
4036
4037         * config/arm/arm.c (output_move_neon): Update comment describing
4038         big-endian vector layout.
4039         (arm_assemble_integer): Do not handle big-endian NEON vectors
4040         specially.
4041         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
4042         neon_vget_lane<mode>_sext_internal,
4043         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
4044         element indices for big-endian.
4045
4046 2008-08-07  Richard Henderson  <rth@redhat.com>
4047
4048         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
4049         * configure, config.in: Rebuild.
4050         * debug.h (dwarf2out_do_cfi_asm): Declare.
4051         * c-cppbuiltin.c (c_cpp_builtins): Use it.
4052         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
4053         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
4054         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
4055
4056 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
4057
4058         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
4059         movv2si_internal): Combine into mov<mode>_internal.
4060         (movv2si_internal_2): Remove.
4061
4062 2008-08-07  Jan Hubicka  <jh@suse.cz>
4063
4064         PR target/37048
4065         * i386.md (single stringop patterns): Enable unconditionally. 
4066
4067 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
4068
4069         PR target/36992
4070         * config/i386/emmintrin.h (_mm_move_epi64): Use
4071         __builtin_ia32_movq128.
4072
4073         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
4074         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
4075
4076         * config/i386/sse.md (sse2_movq128): New.
4077
4078         * doc/extend.texi: Document __builtin_ia32_movq128.
4079
4080 2008-08-07  Richard Guenther  <rguenther@suse.de>
4081
4082         PR middle-end/37042
4083         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
4084         pointers can access anything.
4085
4086 2008-08-06  Jan Hubicka  <jh@suse.cz>
4087
4088         * optabs.c (emit_unop_insn): Break out to ...
4089         (maybe_emit_unop_insn): ... this one.
4090         (expand_sfix_optab): Use maybe variant.
4091         * optabs.h (maybe_emit_unop_insn): Declare.
4092
4093         * i386.md (mov0 patterns): Enable by default.
4094         (FP conversion expanders): Disable expansion of code expanding
4095         sequences when instruction should be optimized for size.
4096         (single strinop patterns): Enable when optimizing for size.
4097         (string expanders): Disable expanding of code expanding sequences
4098         when optimizning instruction for size.
4099         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
4100         per BB basis.
4101         (ix86_fp_comparison_sahf_cost): Likewise.
4102         (ix86_expand_branch): Likewise.
4103         (ix86_expand_ashl_const): Likewise.
4104         (ix86_split_ashl): Likewise.
4105         (ix86_expand_strlen): Likewise.
4106         (ix86_emit_fp_unordered_jump): Likewie.
4107
4108 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4109
4110         * c-common.c: Fix typo.
4111         (c_common_reswords): Activate more C++ keyword warnings.
4112
4113         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
4114
4115 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4116
4117         PR 26785
4118         * diagnostic.c (permerror_at): New.
4119         * toplev.h (permerror_at): Declare.
4120         
4121 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
4122             Ira Rosen  <irar@il.ibm.com>
4123
4124         * tree-vect-transform.c (vect_model_simple_cost): Return
4125         immediately if stmt is pure SLP.
4126         (vect_model_store_cost): Ditto.
4127         (vect_model_load_cost): Ditto.
4128         (vectorizable_store): Remove PURE_SLP check before call
4129         to vect_model_store_cost.
4130         (vect_model_store_cost): When checking whether stmt describe
4131         strided access, add a check that it is not slp_node.
4132
4133 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4134
4135         PR 8715
4136         * c-common.c (warn_for_sign_compare): New. Handle separately the
4137         case that 'constant' is zero.
4138         * c-typeck.c (build_binary_op): Move code to c-common.c
4139         
4140 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4141
4142         * config/alpha/alpha.c (alpha_preferred_reload_class,
4143         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
4144         alpha_output_mi_thunk_osf): Avoid C++ keywords.
4145         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
4146         * config/arm/arm.md: Likewise.
4147         * config/avr/avr-protos.h (preferred_reload_class,
4148         test_hard_reg_class, avr_simplify_comparison_p,
4149         out_shift_with_cnt, class_max_nregs): Likewise.
4150         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
4151         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
4152         preferred_reload_class, test_hard_reg_class): Likewise.
4153         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
4154         bfin_memory_move_cost, bfin_secondary_reload,
4155         bfin_output_mi_thunk): Likewise.
4156         * config/crx/crx.c (crx_secondary_reload_class,
4157         crx_memory_move_cost): Likewise.
4158         * config/frv/frv-protos.h (frv_secondary_reload_class,
4159         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
4160         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
4161         frv_secondary_reload_class, frv_class_likely_spilled_p,
4162         frv_class_max_nregs): Likewise.
4163         * config/h8300/h8300.c (h8300_classify_operand,
4164         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
4165         Likewise.
4166         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
4167         * config/ia64/ia64.c (ia64_preferred_reload_class,
4168         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
4169         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
4170         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
4171         Likewise.
4172         * config/m68hc11/m68hc11.c (preferred_reload_class,
4173         m68hc11_memory_move_cost): Likewise.
4174         * config/mcore/mcore.c (mcore_secondary_reload_class,
4175         mcore_reload_class): Likewise.
4176         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
4177         mips_class_max_nregs, mips_cannot_change_mode_class,
4178         mips_preferred_reload_class, mips_secondary_reload_class,
4179         mips_output_mi_thunk): Likewise.
4180         * config/mmix/mmix.c (mmix_preferred_reload_class,
4181         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
4182         Likewise.
4183         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
4184         Likewise.
4185         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
4186         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
4187         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
4188         * config/rs6000/rs6000.c (paired_expand_vector_init,
4189         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
4190         compare_section_name, rs6000_memory_move_cost): Likewise.
4191         * config/s390/s390.c (s390_emit_compare_and_swap,
4192         s390_preferred_reload_class, s390_secondary_reload,
4193         legitimize_pic_address, legitimize_tls_address,
4194         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
4195         s390_class_max_nregs): Likewise.
4196         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
4197         * config/s390/s390.md: Likewise.
4198         * config/score/score-protos.h (score_secondary_reload_class,
4199         score_preferred_reload_class): Likewise.
4200         * config/score/score.c (score_preferred_reload_class,
4201         score_secondary_reload_class): Likewise.
4202         * config/score/score3.c (score3_output_mi_thunk,
4203         score3_preferred_reload_class, score3_secondary_reload_class,
4204         score3_hard_regno_mode_ok): Likewise.
4205         * config/score/score3.h (score3_preferred_reload_class,
4206         score3_secondary_reload_class): Likewise.
4207         * config/score/score7.c (score7_output_mi_thunk,
4208         score7_preferred_reload_class, score7_secondary_reload_class,
4209         score7_hard_regno_mode_ok): Likewise.
4210         * config/score/score7.h (score7_preferred_reload_class,
4211         score7_secondary_reload_class): Likewise.
4212         * config/sh/sh.c (prepare_move_operands, output_far_jump,
4213         output_branchy_insn, add_constant, gen_block_redirect,
4214         sh_insn_length_adjustment, sh_cannot_change_mode_class,
4215         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload):
4216         Likewise.
4217         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
4218         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
4219         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
4220         xstormy16_preferred_reload_class): Likewise.
4221         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
4222         xtensa_expand_atomic, override_options,
4223         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
4224         Likewise.
4225         * reorg.c (try_merge_delay_insns): Likewise.
4226         * tree.c (merge_dllimport_decl_attributes): Likewise.
4227
4228         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
4229
4230 2008-08-06  Michael Matz  <matz@suse.de>
4231
4232         * Makefile.in (write_entries_to_file): Quote words.
4233         * gengtype.c: (read_input_line): Skip over leading white-space.
4234
4235 2008-08-06  Marc Gauthier  <marc@tensilica.com>
4236
4237         * config.gcc: Match more processor names for Xtensa.
4238         * configure.ac: Likewise.
4239         * doc/install.texi (Specific): Likewise.
4240         * configure: Regenerate.
4241
4242 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4243
4244         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
4245         * calls.c (avoid_likely_spilled_reg): Likewise.
4246         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
4247         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
4248         * config/i386/i386.c (ix86_expand_special_args_builtin,
4249         ix86_secondary_reload): Likewise.
4250         * except.c (struct eh_region, gen_eh_region_catch,
4251         remove_unreachable_regions, duplicate_eh_regions,
4252         assign_filter_values, build_post_landing_pads,
4253         sjlj_find_directly_reachable_regions, remove_eh_handler,
4254         reachable_next_level, foreach_reachable_handler,
4255         can_throw_internal_1, can_throw_external_1,
4256         collect_one_action_chain): Likewise.
4257         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
4258         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
4259         * function.c (update_temp_slot_address, instantiate_new_reg,
4260         instantiate_virtual_regs_in_rtx,
4261         instantiate_virtual_regs_in_insn): Likewise.
4262         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
4263         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
4264         gimplify_cleanup_point_expr): Likewise.
4265         * ipa-cp.c (ipcp_lattice_changed): Likewise.
4266         * passes.c (next_pass_1): Likewise.
4267         * print-tree.c (print_node_brief, print_node): Likewise.
4268         * profile.c (branch_prob): Likewise.
4269         * tree-dump.c (dump_register): Likewise.
4270         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
4271         Likewise.
4272         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
4273         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
4274         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
4275         copy_arguments_for_versioning, copy_static_chain): Likewise.
4276         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
4277         add_new_name_mapping, register_new_name_mapping): Likewise.
4278         * tree-mudflap.c (mf_xform_derefs): Likewise.
4279         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
4280         get_init_expr, combine_chains): Likewise.
4281         * tree-pretty-print.c (dump_generic_node): Likewise.
4282         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
4283         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
4284         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
4285         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
4286
4287 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
4288
4289         PR middle-end/37010
4290         * calls.c (expand_call): Use the biggest preferred stack
4291         boundary.
4292
4293 2008-08-06  Michael Matz  <matz@suse.de>
4294
4295         PR target/36613
4296         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
4297         for reused reload, instead of overwriting them.
4298
4299 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
4300
4301         PR middle-end/37009
4302         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
4303         for incoming stack boundary.
4304
4305         * function.c (assign_parm_find_entry_rtl): Update
4306         parm_stack_boundary.
4307
4308         * function.h (rtl_data): Add parm_stack_boundary.
4309
4310         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
4311         parm_stack_boundary for incoming stack boundary.
4312
4313 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
4314
4315         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
4316         for unrepresentable subregs or treat them as equal to other regs
4317         or subregs with the same register number.
4318
4319 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
4320
4321         PR middle-end/35432
4322         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
4323         if want_value.
4324
4325 2008-08-06  Jan Hubicka  <jh@suse.cz>
4326
4327         * predict.c (maybe_hot_frequency_p): When profile is absent, all
4328         frequencies might be hot.
4329
4330 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
4331
4332         * reload.c (find_reloads): Force constants into literal pool
4333         also if they are wrapped in a SUBREG.
4334
4335 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
4336
4337         PR target/35659
4338         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
4339         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
4340         Don't allow predicated instructions for data speculation.
4341         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
4342         declaration.
4343
4344 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
4345
4346         * haifa-sched.c (extend_global): Split to extend_global_data and
4347         extend_region_data.  Update all uses.
4348         (extend_all): Rename to extend_block_data.
4349
4350 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
4351
4352         * sched-rgn.c (new_ready): Check if instruction can be
4353         speculatively scheduled before attempting speculation.
4354         (debug_rgn_dependencies): Remove wrongful assert.
4355
4356 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
4357
4358         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
4359         
4360 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
4361         
4362         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
4363         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
4364         va_size, and type_size.
4365         
4366 2008-08-04  Jason Merrill  <jason@redhat.com>
4367
4368         PR c++/37016
4369         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
4370         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
4371
4372 2008-08-05  Richard Henderson  <rth@redhat.com>
4373
4374         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
4375         * configure: Rebuild.
4376
4377 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4378
4379         PR tree-opt/37024
4380         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
4381         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
4382         is a conversion.
4383
4384 2008-08-05  Richard Henderson  <rth@redhat.com>
4385
4386         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
4387         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
4388         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
4389         * common.opt (fdwarf2-cfi-asm): New.
4390         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
4391         * config.in, configure: Rebuild.
4392         * dwarf2asm.c (dw2_asm_output_data_raw): New.
4393         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw): New.
4394         (dw2_force_const_mem): Externalize.
4395         * dwarf2asm.h: Update.
4396         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
4397         generate a real label.
4398         (output_cfi_directive): New.
4399         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
4400         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
4401         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
4402         and .cfi_lsda.
4403         (dwarf2out_end_epilogue): Emit .cfi_endproc.
4404         (output_loc_operands_raw, output_loc_sequence_raw): New.
4405         (output_cfa_loc_raw): New.
4406         
4407 2008-08-05  Paul Brook  <paul@codesourcery.com>
4408
4409         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
4410         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
4411         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
4412         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
4413         * config/arm/arm.h (TARGET_VFPD32): Define.
4414         (TARGET_VFP3): Use TARGET_VFPD32.
4415         (fputype): Add FPUTYPE_VFP3D16.
4416         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
4417         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
4418         * config/arm/arm-cores.def: Add cortex-r4f.
4419         * config/arm/arm-tune.md: Regenerate.
4420
4421 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4422
4423         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
4424         Reword some comments throughout the file.
4425
4426         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
4427         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
4428         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of MFC_MIN_DMA_LIST_ELEMENTS.
4429         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of MFC_MAX_DMA_LIST_ELEMENTS.
4430
4431         (MFC_START_ENABLE): Remove PPU-only define.
4432         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
4433         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
4434
4435         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
4436         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
4437         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
4438         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
4439         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
4440         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
4441         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
4442
4443         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
4444         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
4445         (mfc_sdcrt, mfc_sdcrtst): Likewise.
4446         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
4447
4448         (spu_read_machine_status): Fix typo.
4449
4450 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4451
4452         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
4453         SUBREG of multi-word hard register.
4454         * config/spu/spu.c (valid_subreg): Likewise.
4455         (adjust_operand): Handle SUBREGs of multi-word hard registers.
4456
4457 2008-08-04  Richard Guenther  <rguenther@suse.de>
4458
4459         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
4460         the candidate with the stripped base if that base is different
4461         from the original base even for offset zero.
4462
4463 2008-08-04  Richard Guenther  <rguenther@suse.de>
4464
4465         PR middle-end/36691
4466         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
4467         check for no_overflow.
4468
4469 2008-08-04  Richard Guenther  <rguenther@suse.de>
4470
4471         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
4472
4473 2008-08-04  Paul Brook  <paul@codesourcery.com>
4474
4475         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
4476         (arm_order_regs_for_local_alloc): New function.
4477         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
4478         prototype.
4479         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
4480
4481 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
4482
4483         PR target/37012
4484         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
4485         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
4486         (ix86_expand_epilogue): Likewise.
4487
4488 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
4489
4490         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
4491         in comments.
4492
4493 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
4494
4495         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
4496         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
4497         (*movv2sf_internal_rex64): Ditto.
4498
4499 2008-08-03  Jan Hubicka  <jh@suse.cz>
4500
4501         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
4502         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
4503         * expmed.c (expand_smod_pow2): Likewise.
4504
4505 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
4506
4507         PR target/36992
4508         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
4509         alternative 0 of operand 1.
4510         (*vec_concatv2di_rex64_sse): Ditto.
4511         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
4512         of operand 1.
4513         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
4514         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
4515         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
4516         (*movv2sf_internal_rex64): Ditto.
4517
4518 2008-08-02  Richard Guenther  <rguenther@suse.de>
4519
4520         PR target/35252
4521         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
4522         (ssedoublesizemode): New mode attribute.
4523         (sse_shufps): Call gen_sse_shufps_v4sf.
4524         (sse_shufps_1): Macroize.
4525         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
4526         (sse2_shufpd_1): Macroize.
4527         (vec_extract_odd, vec_extract_even): New expanders.
4528         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
4529         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
4530         * i386.c (ix86_expand_vector_init_one_nonzero): Call
4531         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
4532         (ix86_expand_vector_set): Likewise.
4533         (ix86_expand_reduc_v4sf): Likewise.
4534
4535 2008-08-01  Doug Kwan  <dougkwan@google.com>
4536
4537         * matrix-reorg.c: Re-enable all code.
4538         (struct malloc_call_data): Change CALL_STMT to gimple type.
4539         (collect_data_for_malloc_call): Tuplify.
4540         (struct access_site_info): Change STMT to gimple type.
4541         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
4542         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
4543         (struct free_info): Change STMT to gimple type.
4544         (struct matrix_access_phi_node):  Change PHI to gimple type.
4545         (get_inner_of_cast_expr): Remove.
4546         (may_flatten_matrices_1): Tuplify.
4547         (may_flatten_matrices): Ditto.
4548         (mark_min_matrix_escape_level): Ditto.
4549         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
4550         (ssa_accessed_in_call_rhs): New
4551         (ssa_accessed_in_assign_rhs): New
4552         (record_access_alloc_site_info): Tuplify.
4553         (add_allocation_site): Ditto.
4554         (analyze_matrix_allocation_site): Ditto.
4555         (analyze_transpose): Ditto.
4556         (get_index_from_offset): Ditto.
4557         (update_type_size): Ditto.
4558         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
4559         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
4560         (analyze_accesses_for_phi_node): Tuplify.
4561         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
4562         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
4563         (analyze_matrix_accesses): Tuplify.
4564         (check_var_data): New call-back type for check_var_notmodified_p.
4565         (check_var_notmodified_p): Tuplify and use call-back struct to
4566         return statement found.
4567         (can_calculate_expr_before_stmt): Factor out statement related code
4568         into ...
4569         (can_calculate_stmt_before_stmt): New.
4570         (check_allocation_function): Tuplify.
4571         (find_sites_in_func): Ditto.
4572         (record_all_accesses_in_func): Ditto.
4573         (transform_access_sites): Ditto.
4574         (transform_allocation_sites): Ditto.
4575         (matrix_reorg): Re-enable.
4576         (gate_matrix_reorg): Re-enable.
4577
4578 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
4579
4580         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
4581         for labels for which it hasn't been set yet.  If it has been set,
4582         stop walking insns and continue with next worklist item.
4583         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
4584         if the only BARRIER is at the very end of a function.
4585
4586 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
4587
4588         * cfgexpand.c (expand_stack_alignment): Assert that
4589         stack_realign_drap and drap_rtx must match.
4590
4591         * function.c (instantiate_new_reg): If DRAP is used to realign
4592         stack, replace virtual_incoming_args_rtx with internal arg
4593         pointer.
4594
4595 2008-08-01  Richard Guenther  <rguenther@suse.de>
4596
4597         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
4598         loop information only if we initialized it.
4599         (execute_pre): Call fini_pre with in_fre.
4600         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
4601         if we do not unroll because we hit max-completely-peeled-insns.
4602         Use our estimation for consistency, do allow shrinking.
4603
4604 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
4605
4606         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
4607         with MIN_STACK_BOUNDARY.
4608         (ix86_update_stack_boundary): Likewise.
4609         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
4610         STACK_BOUNDARY.
4611
4612         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
4613         (MIN_STACK_BOUNDARY): This.
4614
4615 2008-08-01  Richard Guenther  <rguenther@suse.de>
4616
4617         PR middle-end/36997
4618         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
4619
4620 2008-08-01  Richard Guenther  <rguenther@suse.de>
4621
4622         PR tree-optimization/36988
4623         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
4624         do not matter if that doesn't change volatile qualification.
4625
4626 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
4627
4628         * configure.ac: Do not generate libada-mk.  Do not subst
4629         host_cc_for_libada.
4630         * libada-mk.in: Remove.
4631         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
4632         * configure: Regenerate.
4633
4634 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
4635
4636         * tree-pass.h: Added comment about not dumping passes with name
4637         starting with star in struct opt_pass.
4638         * passes.c (register_dump_files_1): Don't do dump for a pass with
4639         name starting with star.
4640         * doc/passes.texi (Pass manager): Mention pass names and special
4641         meaning of star prefix to avoid dump.
4642
4643 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
4644
4645         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
4646         to MIPS64r2.
4647         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
4648         (ISA_MIPS64R2): New macro.
4649         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
4650         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
4651         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
4652         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
4653         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
4654         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
4655         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
4656         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
4657         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
4658         Move up to keep list alphabetically sorted.
4659         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
4660         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
4661         processor.
4662         * doc/invoke.texi (MIPS Options): Add -mips64r2.
4663         (-march=@var{arch}): Add mips64r2.
4664
4665 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
4666
4667         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
4668
4669 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
4670
4671         * expr.c (expand_assignment): Check for complete type.
4672
4673 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
4674
4675         PR debug/36977
4676         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
4677
4678         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
4679         for stack alignment.
4680
4681         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
4682
4683 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
4684
4685         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
4686         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
4687
4688 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
4689
4690         PR rtl-optimization/36419
4691         * dwarf2out.c (barrier_args_size): New variable.
4692         (compute_barrier_args_size, compute_barrier_args_size_1): New
4693         functions.
4694         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
4695         if not called yet in the current function, use barrier_args_size
4696         array to find the new args_size value.
4697         (dwarf2out_frame_debug): Free and clear barrier_args_size.
4698
4699 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
4700
4701         PR debug/36980
4702         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
4703         rule 19.
4704
4705 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
4706
4707         PR debug/36976
4708         * dwarf2out.c (dwarf2out_args_size_adjust): New.
4709         (dwarf2out_stack_adjust): Use it.
4710         (dwarf2out_frame_debug_expr): Likewise.
4711
4712 2008-07-31  Richard Guenther  <rguenther@suse.de>
4713
4714         PR tree-optimization/36978
4715         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
4716         the generated condition.
4717
4718 2008-07-31  Richard Guenther  <rguenther@suse.de>
4719
4720         * passes.c (init_optimization_passes): Always call
4721         pass_early_warn_uninitialized.
4722         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
4723         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
4724         * doc/passes.texi (Warn for uninitialized variables): Adjust.
4725
4726 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
4727
4728         PR c/36970
4729         * builtins.c (maybe_emit_free_warning): New function.
4730         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
4731         maybe_emit_free_warning for BUILT_IN_FREE.
4732
4733         PR debug/36278
4734         * dwarf2out.c (get_context_die): New function.
4735         (force_decl_die, force_type_die): Use it.
4736         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
4737         returns NULL, force generation of DW_TAG_typedef and put that into
4738         DW_AT_import.
4739
4740         PR preprocessor/36649
4741         * c-pch.c (c_common_read_pch): Save and restore
4742         line_table->trace_includes across PCH restore.
4743
4744 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
4745
4746         PR ada/36554
4747         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
4748
4749 2008-07-30  Rafael Avila de Espindola  <espindola@google.com>
4750
4751         PR 36974
4752         * final.c (call_from_call_insn): Handle COND_EXEC.
4753
4754 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
4755
4756         * builtins.c (std_gimplify_va_arg_expr): Replace
4757         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
4758         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
4759
4760 2008-07-30  Joey Ye  <joey.ye@intel.com>
4761             H.J. Lu  <hongjiu.lu@intel.com>
4762
4763         * builtins.c (expand_builtin_setjmp_receiver): Replace
4764         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
4765         (expand_builtin_apply_args_1): Likewise.
4766         (expand_builtin_longjmp): Need DRAP for stack alignment.
4767         (expand_builtin_apply): Likewise.
4768
4769         * caller-save.c (setup_save_areas): Call assign_stack_local_1
4770         instead of assign_stack_local to allow alignment reduction.
4771
4772         * calls.c (emit_call_1): Need DRAP for stack alignment if
4773         return pops.
4774         (expand_call): Replace virtual_incoming_args_rtx with
4775         crtl->args.internal_arg_pointer.
4776         * stmt.c (expand_nl_goto_receiver): Likewise.
4777
4778         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
4779         alignment and store to stack_alignment_estimated and
4780         max_used_stack_slot_alignment.
4781         (expand_one_var): Likewise.
4782         (expand_stack_alignment): New function.
4783         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
4784         and stack_alignment_estimated fields in rtl_data.  Call
4785         expand_stack_alignment at end.
4786
4787         * defaults.h (INCOMING_STACK_BOUNDARY): New.
4788         (MAX_STACK_ALIGNMENT): Likewise.
4789         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
4790         (SUPPORTS_STACK_ALIGNMENT): Likewise.
4791
4792         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
4793         stack alignment when generating virtual registers.
4794
4795         * function.c (assign_stack_local): Renamed to ...
4796         (assign_stack_local_1): This.  Add a parameter to indicate
4797         if it is OK to reduce alignment.
4798         (assign_stack_local): Use it.
4799         (instantiate_new_reg): Instantiate virtual incoming args rtx
4800         to vDRAP if stack realignment and DRAP is needed.
4801         (assign_parms): Collect parameter/return type alignment and
4802         contribute to stack_alignment_estimated.
4803         (locate_and_pad_parm): Likewise.
4804         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
4805         with crtl->args.internal_arg_pointer.
4806
4807         * function.h (rtl_data): Add new field drap_reg,
4808         max_used_stack_slot_alignment, stack_alignment_estimated,
4809         stack_realign_needed, need_drap, stack_realign_processed and
4810         stack_realign_finalized.
4811         (stack_realign_fp): New macro.
4812         (stack_realign_drap): Likewise.
4813
4814         * global.c (compute_regsets): Frame pointer is needed when
4815         stack is realigned.  Can eliminate frame pointer when stack is
4816         realigned and dynamic realigned argument pointer isn't used.
4817
4818         * reload1.c (update_eliminables):  Frame pointer is needed
4819         when stack is realigned.
4820         (init_elim_table): Can eliminate frame pointer when stack is
4821         realigned and dynamic realigned argument pointer isn't used.
4822
4823         * rtl.h (assign_stack_local_1): Declare new funtion.
4824
4825         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
4826         (TARGET_GET_DRAP_RTX): Likewise.
4827         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
4828         TARGET_GET_DRAP_RTX.
4829
4830         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
4831
4832         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
4833         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
4834
4835 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
4836             H.J. Lu  <hongjiu.lu@intel.com>
4837
4838         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
4839         vdrap_reg, stack_realign and drap_reg_saved.
4840         (add_cfi): Don't allow redefining CFA when DRAP is used.
4841         (reg_save): Handle stack alignment.
4842         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
4843         alignment.  Don't generate DWARF information for (set fp sp)
4844         when DRAP is used.
4845         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
4846         to INVALID_REGNUM.
4847         (int_loc_descriptor): Move prototype forward.  Also define if
4848         DWARF2_UNWIND_INFO is true.
4849         (output_cfa_loc): Handle DW_CFA_expression.
4850         (build_cfa_aligned_loc): New.
4851         (based_loc_descr): Update assert for stack realign.  For local
4852         variables, use sp+offset when stack is aligned without drap and
4853         fp+offset when stack is aligned with drap.  For arguments, use
4854         cfa+offset when drap is used to align stack.
4855
4856 2008-07-30  Joey Ye  <joey.ye@intel.com>
4857             H.J. Lu  <hongjiu.lu@intel.com>
4858
4859         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
4860         Break long line.
4861         (ix86_gen_andsp): New.
4862         (ix86_user_incoming_stack_boundary): Likewise.
4863         (ix86_default_incoming_stack_boundary): Likewise.
4864         (ix86_incoming_stack_boundary): Likewise.
4865         (ix86_can_eliminate): Likewise.
4866         (find_drap_reg): Likewise.
4867         (ix86_update_stack_boundary): Likewise.
4868         (ix86_get_drap_rtx): Likewise.
4869         (ix86_finalize_stack_realign_flags): Likewise.
4870         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
4871         (TARGET_GET_DRAP_RTX): Likewise.
4872         (override_options): Overide option value for new options.
4873         (ix86_function_ok_for_sibcall): Remove check for
4874         force_align_arg_pointer.
4875         (ix86_handle_cconv_attribute): Likewise.
4876         (ix86_function_regparm): Likewise.
4877         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
4878         (ix86_va_start): Replace virtual_incoming_args_rtx with
4879         crtl->args.internal_arg_pointer.
4880         (ix86_select_alt_pic_regnum): Check DRAP register.
4881         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
4882         (ix86_compute_frame_layout): Compute frame layout wrt stack
4883         realignment.
4884         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
4885         (ix86_expand_prologue): Decide if stack realignment is needed
4886         and generate prologue code accordingly.
4887         (ix86_expand_epilogue): Generate epilogue code wrt stack
4888         realignment is really needed or not.
4889         
4890         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
4891         (ABI_STACK_BOUNDARY): Likewise.
4892         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
4893         (STACK_REALIGN_DEFAULT): Likewise.
4894         (INCOMING_STACK_BOUNDARY): Likewise.
4895         (MAX_STACK_ALIGNMENT): Likewise.
4896         (ix86_incoming_stack_boundary): Likewise.
4897         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
4898         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
4899         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
4900         (machine_function): Remove force_align_arg_pointer.
4901
4902         * config/i386/i386.md (BX_REG): New.
4903         (R13_REG): Likewise.
4904
4905         * config/i386/i386.opt (mforce_drap): New.
4906         (mincoming-stack-boundary): Likewise.
4907         (mstackrealign): Add Init(-1).
4908
4909         * config/i386/i386-protos.h (ix86_can_eliminate): New
4910
4911 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
4912
4913         * doc/extend.texi: Update force_align_arg_pointer.
4914
4915         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
4916         -mstackrealign.
4917
4918         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
4919         (INCOMING_STACK_BOUNDARY): Likewise.
4920         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
4921         (TARGET_GET_DRAP_RTX): Likewise.
4922
4923 2008-07-30  Andreas Schwab  <schwab@suse.de>
4924
4925         PR rtl-optimization/36929
4926         * dse.c (replace_inc_dec): Use emit_insn_before instead of
4927         add_insn_before and fix argument order.
4928         (replace_inc_dec_mem): Handle NULL rtx.
4929
4930 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
4931
4932         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
4933         function.
4934         (arm_compute_initial_elimination_offset): Use it.
4935         (arm_compute_save_reg_mask): Include static chain save slot when
4936         calculating alignment.
4937         (arm_get_frame_offsets): Ditto.
4938         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
4939         that we can use to decrement the stack when the stack decrement
4940         could be too big for an immediate value in a single insn.
4941         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
4942
4943 2008-07-30  Richard Guenther  <rguenther@suse.de>
4944
4945         PR tree-optimization/36967
4946         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
4947         Release defs of statements we remove.
4948
4949 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
4950
4951         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
4952         instead of NULL_RTVEC.
4953
4954 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
4955
4956         PR target/35866
4957
4958         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
4959         vector modes.
4960
4961 2008-07-30  Rafael Avila de Espindola  <espindola@google.com>
4962
4963         * final.c (call_from_call_insn): New.
4964         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
4965
4966 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
4967
4968         * configure.ac: Substitute ADA_CFLAGS.
4969         * configure: Regenerate.
4970         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
4971         * Makefile.in: Remove mention of X_* variables.
4972         * config/pa/x-ada-hpux10: Remove.
4973         * config/pa/x-ada: Remove.
4974
4975         * doc/fragments.texi: Update.
4976
4977 2008-07-30  Olivier Hainque  <hainque@adacore.com>
4978
4979         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
4980         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
4981         __dso_handle explicitly here.
4982
4983 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4984
4985         PR 34389
4986         * c-typeck.c (build_binary_op): Encapsulate code into...
4987         * c-common.c (shorten_binary_op): ...this new function.
4988         (conversion_warning): Use the new function. Handle non-negative
4989         constant in bitwise-and.
4990         * c-common.h (shorten_binary_op): Declare.
4991
4992 2008-07-30  Olivier Hainque  <hainque@adacore.com>
4993
4994         * scan.c (make_sstring_space): Add explicit conversions of
4995         allocator's return value.
4996         * fix-header.c (recognized_function): Likewise.
4997
4998 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4999
5000         * doc/cpp.texi: Update to GFDL 1.2.
5001         * doc/gcc.texi: Do not list GPL as Invariant Section.
5002         * doc/gccint.texi: Likewise.  Update copyright years.
5003         * doc/install.texi: Update copyright years.
5004
5005 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
5006
5007         PR target/36955
5008         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
5009         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
5010
5011 2008-07-29  Jan Hubicka  <jh@suse.cz>
5012
5013         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
5014         (grokdeclarator): Likewise.
5015         * langhooks.c (lhd_warn_unused_global_decl): Use
5016         DECL_DECLARED_INLINE_P.
5017         * print-tree.c (print_node): Remove DECL_INLINE check.
5018
5019 2008-07-29  Richard Guenther  <rguenther@suse.de>
5020
5021         PR tree-optimization/36945
5022         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
5023         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
5024         Record invariant addresses un-decomposed.
5025         (copy_reference_ops_from_call): Record reference call
5026         arguments properly.  Simplify.
5027         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
5028         helper split out from ...
5029         (create_component_ref_by_pieces): ... here.  Simplify.
5030         Prepare for recursive invocation for call arguments.
5031         (create_expression_by_pieces): Adjust call to
5032         create_component_ref_by_pieces.
5033         (compute_avail): Process operand 2 of reference ops.
5034
5035 2008-07-29  Richard Guenther  <rguenther@suse.de>
5036
5037         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
5038
5039 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
5040
5041         * c-format.c (check_format_types): Revert unwanted checkin.
5042
5043 2008-07-29  Jan Hubicka  <jh@suse.cz>
5044
5045         * flags.h (flag_really_no_inline): Remove.
5046         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
5047         * toplev.c (flag_really_no_inline): Remove.
5048         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
5049         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
5050         (cgraph_decide_inlining_incrementally): Likewise.
5051         (compute_inline_parameters): Likewise.
5052         * opts.c (decode_options): Simplify.
5053         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
5054         * common.opt (finline): Initialize to 1.
5055         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
5056
5057 2008-07-29  Jan Hubicka  <jh@suse.cz>
5058
5059         * predict.c (always_optimize_for_size_p): New function.
5060         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
5061         optimize_edge_for_size_p, optimize_edge_for_speed_p,
5062         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
5063         functions.
5064         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
5065         * function.c (prepare_function_start): Set default profile.
5066         * function.h (rtl_data): Add maybe_hot_insn_p.
5067         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
5068         (construct_exit_block): Likewise.
5069         (tree_expand_cfg): Likewise.
5070         * basic-block.h
5071         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
5072         optimize_edge_for_size_p, optimize_edge_for_speed_p,
5073         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
5074         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
5075         Declare.
5076
5077 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5078
5079         PR 34985
5080         * c-decl.c (merge_decls): Merge USED flags.
5081
5082 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
5083
5084         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
5085         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
5086         next_stack, lab_false and lab_over trees.
5087
5088 2008-07-28  Richard Guenther  <rguenther@suse.de>
5089
5090         PR tree-optimization/36957
5091         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
5092         (useless_type_conversion_p): Remove.
5093         (types_compatible_p): Remove.
5094         * gimple.h (tree_ssa_useless_type_conversion): Declare.
5095         (useless_type_conversion_p): Declare.
5096         (types_compatible_p): Declare.
5097         (gimple_expr_type): Return the base type only if it is
5098         trivially convertible to the subtype.
5099
5100 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
5101
5102         * configure.ac: Use the m4_do macro to concatenate the warnings into
5103         one string in ACX_PROG_CC_WARNING_OPTS,
5104         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and ACX_PROG_CC_WARNINGS_ARE_ERRORS.
5105         * configure: Regenerate.
5106
5107 2008-07-28  Richard Guenther  <rguenther@suse.de>
5108
5109         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
5110         (insert_fake_stores): Remove.
5111         (realify_fake_stores): Likewise.
5112         (execute_pre): Remove dead code.
5113         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
5114         (find_func_aliases): Deal with it here instead.
5115         Re-enable gcc_unreachable call.
5116
5117 2008-07-28  Richard Guenther  <rguenther@suse.de>
5118
5119         Merge from gimple-tuples-branch.
5120
5121         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
5122         * gimple.def: New file.
5123         * gsstruct.def: Likewise.
5124         * gimple-iterator.c: Likewise.
5125         * gimple-pretty-print.c: Likewise.
5126         * tree-gimple.c: Removed.  Merged into ...
5127         * gimple.c: ... here.  New file.
5128         * tree-gimple.h: Removed.  Merged into ...
5129         * gimple.h: ... here.  New file.
5130
5131         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
5132         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
5133         --enable-checking=gimple flag.
5134         * config.in: Likewise.
5135         * configure: Regenerated.
5136
5137         * tree-ssa-operands.h: Tuplified.
5138         * tree-vrp.c: Likewise.
5139         * tree-loop-linear.c: Likewise.
5140         * tree-into-ssa.c: Likewise.
5141         * tree-ssa-loop-im.c: Likewise.
5142         * tree-dump.c: Likewise.
5143         * tree-complex.c: Likewise.
5144         * cgraphbuild.c: Likewise.
5145         * tree-ssa-threadupdate.c: Likewise.
5146         * tree-ssa-loop-niter.c: Likewise.
5147         * tree-pretty-print.c: Likewise.
5148         * tracer.c: Likewise.
5149         * gengtype.c: Likewise.
5150         * tree-loop-distribution.c: Likewise.
5151         * tree-ssa-loop-unswitch.c: Likewise.
5152         * cgraph.c: Likewise.
5153         * cgraph.h: Likewise.
5154         * tree-ssa-loop-manip.c: Likewise.
5155         * value-prof.c: Likewise.
5156         * tree-ssa-loop-ch.c: Likewise.
5157         * tree-tailcall.c: Likewise.
5158         * value-prof.h: Likewise.
5159         * tree.c: Likewise.
5160         * tree.h: Likewise.
5161         * tree-pass.h: Likewise.
5162         * ipa-cp.c: Likewise.
5163         * tree-scalar-evolution.c: Likewise.
5164         * tree-scalar-evolution.h: Likewise.
5165         * target.h: Likewise.
5166         * lambda-mat.c: Likewise.
5167         * tree-phinodes.c: Likewise.
5168         * diagnostic.h: Likewise.
5169         * builtins.c: Likewise.
5170         * tree-ssa-alias-warnings.c: Likewise.
5171         * cfghooks.c: Likewise.
5172         * fold-const.c: Likewise.
5173         * cfghooks.h: Likewise.
5174         * omp-low.c: Likewise.
5175         * tree-ssa-dse.c: Likewise.
5176         * ipa-reference.c: Likewise.
5177         * tree-ssa-uncprop.c: Likewise.
5178         * toplev.c: Likewise.
5179         * tree-gimple.c: Likewise.
5180         * tree-gimple.h: Likewise.
5181         * tree-chrec.c: Likewise.
5182         * tree-chrec.h: Likewise.
5183         * tree-ssa-sccvn.c: Likewise.
5184         * tree-ssa-sccvn.h: Likewise.
5185         * cgraphunit.c: Likewise.
5186         * tree-ssa-copyrename.c: Likewise.
5187         * tree-ssa-ccp.c: Likewise.
5188         * tree-ssa-loop-ivopts.c: Likewise.
5189         * tree-nomudflap.c: Likewise.
5190         * tree-call-cdce.c: Likewise.
5191         * ipa-pure-const.c: Likewise.
5192         * c-format.c: Likewise.
5193         * tree-stdarg.c: Likewise.
5194         * tree-ssa-math-opts.c: Likewise.
5195         * tree-ssa-dom.c: Likewise.
5196         * tree-nrv.c: Likewise.
5197         * tree-ssa-propagate.c: Likewise.
5198         * ipa-utils.c: Likewise.
5199         * tree-ssa-propagate.h: Likewise.
5200         * tree-ssa-alias.c: Likewise.
5201         * gimple-low.c: Likewise.
5202         * tree-ssa-sink.c: Likewise.
5203         * ipa-inline.c: Likewise.
5204         * c-semantics.c: Likewise.
5205         * dwarf2out.c: Likewise.
5206         * expr.c: Likewise.
5207         * tree-ssa-loop-ivcanon.c: Likewise.
5208         * predict.c: Likewise.
5209         * tree-ssa-loop.c: Likewise.
5210         * tree-parloops.c: Likewise.
5211         * tree-ssa-address.c: Likewise.
5212         * tree-ssa-ifcombine.c: Likewise.
5213         * matrix-reorg.c: Likewise.
5214         * c-decl.c: Likewise.
5215         * tree-eh.c: Likewise.
5216         * c-pretty-print.c: Likewise.
5217         * lambda-trans.c: Likewise.
5218         * function.c: Likewise.
5219         * langhooks.c: Likewise.
5220         * ebitmap.h: Likewise.
5221         * tree-vectorizer.c: Likewise.
5222         * function.h: Likewise.
5223         * langhooks.h: Likewise.
5224         * tree-vectorizer.h: Likewise.
5225         * ipa-type-escape.c: Likewise.
5226         * ipa-type-escape.h: Likewise.
5227         * domwalk.c: Likewise.
5228         * tree-if-conv.c: Likewise.
5229         * profile.c: Likewise.
5230         * domwalk.h: Likewise.
5231         * tree-data-ref.c: Likewise.
5232         * tree-data-ref.h: Likewise.
5233         * tree-flow-inline.h: Likewise.
5234         * tree-affine.c: Likewise.
5235         * tree-vect-analyze.c: Likewise.
5236         * c-typeck.c: Likewise.
5237         * gimplify.c: Likewise.
5238         * coretypes.h: Likewise.
5239         * tree-ssa-phiopt.c: Likewise.
5240         * calls.c: Likewise.
5241         * tree-ssa-coalesce.c: Likewise.
5242         * tree.def: Likewise.
5243         * tree-dfa.c: Likewise.
5244         * except.c: Likewise.
5245         * except.h: Likewise.
5246         * cfgexpand.c: Likewise.
5247         * tree-cfgcleanup.c: Likewise.
5248         * tree-ssa-pre.c: Likewise.
5249         * tree-ssa-live.c: Likewise.
5250         * tree-sra.c: Likewise.
5251         * tree-ssa-live.h: Likewise.
5252         * tree-predcom.c: Likewise.
5253         * lambda.h: Likewise.
5254         * tree-mudflap.c: Likewise.
5255         * ipa-prop.c: Likewise.
5256         * print-tree.c: Likewise.
5257         * tree-ssa-copy.c: Likewise.
5258         * ipa-prop.h: Likewise.
5259         * tree-ssa-forwprop.c: Likewise.
5260         * ggc-page.c: Likewise.
5261         * c-omp.c: Likewise.
5262         * tree-ssa-dce.c: Likewise.
5263         * tree-vect-patterns.c: Likewise.
5264         * tree-ssa-ter.c: Likewise.
5265         * tree-nested.c: Likewise.
5266         * tree-ssa.c: Likewise.
5267         * lambda-code.c: Likewise.
5268         * tree-ssa-loop-prefetch.c: Likewise.
5269         * tree-inline.c: Likewise.
5270         * tree-inline.h: Likewise.
5271         * tree-iterator.c: Likewise.
5272         * tree-optimize.c: Likewise.
5273         * tree-ssa-phiprop.c: Likewise.
5274         * tree-vect-transform.c: Likewise.
5275         * tree-object-size.c: Likewise.
5276         * tree-outof-ssa.c: Likewise.
5277         * cfgloop.c: Likewise.
5278         * system.h: Likewise.
5279         * tree-profile.c: Likewise.
5280         * cfgloop.h: Likewise.
5281         * c-gimplify.c: Likewise.
5282         * c-common.c: Likewise.
5283         * tree-vect-generic.c: Likewise.
5284         * tree-flow.h: Likewise.
5285         * c-common.h: Likewise.
5286         * basic-block.h: Likewise.
5287         * tree-ssa-structalias.c: Likewise.
5288         * tree-switch-conversion.c: Likewise.
5289         * tree-ssa-structalias.h: Likewise.
5290         * tree-cfg.c: Likewise.
5291         * passes.c: Likewise.
5292         * ipa-struct-reorg.c: Likewise.
5293         * ipa-struct-reorg.h: Likewise.
5294         * tree-ssa-reassoc.c: Likewise.
5295         * cfgrtl.c: Likewise.
5296         * varpool.c: Likewise.
5297         * stmt.c: Likewise.
5298         * tree-ssanames.c: Likewise.
5299         * tree-ssa-threadedge.c: Likewise.
5300         * langhooks-def.h: Likewise.
5301         * tree-ssa-operands.c: Likewise.
5302         * config/alpha/alpha.c: Likewise.
5303         * config/frv/frv.c: Likewise.
5304         * config/s390/s390.c: Likewise.
5305         * config/m32c/m32c.c: Likewise.
5306         * config/m32c/m32c-protos.h: Likewise.
5307         * config/spu/spu.c: Likewise.
5308         * config/sparc/sparc.c: Likewise.
5309         * config/i386/i386.c: Likewise.
5310         * config/sh/sh.c: Likewise.
5311         * config/xtensa/xtensa.c: Likewise.
5312         * config/stormy16/stormy16.c: Likewise.
5313         * config/ia64/ia64.c: Likewise.
5314         * config/rs6000/rs6000.c: Likewise.
5315         * config/pa/pa.c: Likewise.
5316         * config/mips/mips.c: Likewise.
5317
5318 2008-07-28  Simon Baldwin  <simonb@google.com>
5319
5320         * c-pragma.c (handle_pragma_message): New function.
5321         (init_pragma): Register handle_pragma_message.
5322         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
5323         documentation.
5324
5325 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
5326
5327         PR tree-optimization/35252
5328         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
5329         REALPART_EXPR to be considered as same load operation.
5330
5331 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
5332
5333         PR tree-optimization/36830
5334         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
5335         (expressions_equal_p): Return false if only one operand is null.
5336
5337 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
5338
5339         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
5340         version requirements.
5341
5342 2008-07-26  Olivier Hainque  <hainque@adacore.com>
5343
5344         * collect2.c (symkind): New enum.  Symbol kinds we care about.
5345         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
5346         code and head comment accordingly.
5347         (scan_prog_file): Use symkind names instead of bare integers.
5348
5349 2008-07-25  Jan Hubicka  <jh@suse.cz>
5350
5351         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
5352         DECL_INLINE.
5353         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
5354         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
5355         * dojump.c (clear_pending_stack_adjust): Likewise.
5356         * print-tree.c (print_node): Ignore DECL_INLINE.
5357         * tree-inline.c (inlinable_function_p): Likewise.
5358
5359 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
5360
5361         * doc/extend.texi (hot attribute): Document that the hot attribute
5362         turns on -O3 for some ports.
5363         (cold attribute): Document that the cold attribute turns on -Os
5364         for some ports
5365
5366         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
5367         reflect function specific option support.
5368
5369         * target.h (struct target_option_hooks): Add fields to say whether
5370         the cold attribute implies -Os and the hot attribute implies -O3.
5371
5372         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
5373         By default, do not turn on -Os for cold functions.
5374         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
5375         not turn on -O3 for hot functions.
5376
5377         * c-common.c (handle_hot_attribute): Use target hook to determine
5378         if hot functions should enable -O3.
5379         (handle_cold_attribute): Use target hook to determine if cold
5380         functions should enable -Os.
5381
5382         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
5383         (override_options): Move disable scheduling to
5384         optimization_options.
5385         (optimization_options): Disable scheduling here, not
5386         override_options.
5387         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
5388         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
5389
5390         * config/ia64/ia64.c (ia64_override_options): Move setting
5391         scheduling flags to ia64_optimization_options.
5392         (ia64_optimization_options): Disable scheduling options here, and
5393         not in ia64_override_options.
5394         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
5395         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
5396
5397 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
5398
5399         PR target/36936
5400         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
5401
5402 2008-07-25  Martin Jambor  <mjambor@suse.cz>
5403
5404         PR tree-optimization/36926
5405         * ipa-prop.c (ipa_analyze_call_uses): Call
5406         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
5407
5408 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
5409
5410         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
5411         movv2si_internal): Add mem = reg alternative.
5412
5413 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
5414
5415         PR bootstrap/36918
5416         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
5417         DEFAULT_PCC_STRUCT_RETURN to 127.
5418
5419 2008-07-24  Jan Hubicka  <jh@suse.cz>
5420
5421         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
5422         (build_cgraph_edges): Likewise.
5423         * cgraph.c (cgraph_node): Do not update assembler hash.
5424         (cgraph_remove_node): Drop non-unit-at-a-time code.
5425         * tree-pass.h (pass_O0_always_inline): Remove.
5426         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
5427         * toplev.c (process_options): Flag unit-at-a-time does not imply
5428         no section anchors.
5429         * cgraphunit.c: Update comments.
5430         (decide_is_function_needed): Drop non-unit-at-a-time mode.
5431         (cgraph_assemble_pending_functions): Remove.
5432         (cgraph_reset_node): Drop non-unit-at-a-time code.
5433         (cgraph_finalize_function): Likewise.
5434         (cgraph_analyze_function): Likewise.
5435         (cgraph_finalize_compilation_unit): Likewise.
5436         (cgraph_expand_function): Likewise.
5437         (cgraph_optimize): Likesise.
5438         (save_inline_function_body): Likewise.
5439         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
5440         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
5441         * ipa-inline.c: Update comments.
5442         (enum inlining_mode): remove INLINE_SPEED.
5443         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
5444         (cgraph_mark_inline_edge): Likewise.
5445         (try_inline): Likewise.
5446         (cgraph_decide_inlining_incrementally): Likewise.
5447         (cgraph_gate_inlining): Remove.
5448         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
5449         (cgraph_gate_early_inlining): Likewise.
5450         (gate_inline_passes): Remove.
5451         (pass_inline_parameters, pass_ipa_inline): Remove gates.
5452         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
5453         pass_O0_always_inline): Remove.
5454         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
5455         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
5456         * opts.c (no_unit_at_a_time_default): Remove.
5457         (decode_options): Remove flag_unit_at_a_time reset and warning.
5458         * opts.h (no_unit_at_a_time_default): Remove.
5459         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
5460         early in GNU dialect.
5461         (merge_decls): Update comment; drop unit-at-a-time check.
5462         (finish_decl): Likewise.
5463         (grok_declaration): Remove flag_inline_trees code.
5464         (finish_functions): Return on function returning non-void on all
5465         statics.
5466         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
5467         * cfgexpand.c (expand_one_static_var): Remove.
5468         (expand_one_var): Remove expand_one_static_var call.
5469         (expand_used_vars_for_block): Remove flag_unit_a_time check.
5470         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
5471         and flag_unit_at_a-time compatibility checks.
5472         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
5473         * tree-inline.c (flag_inline_trees): Remove.
5474         (inlinable_function_p): Don't check it.
5475         (expand_call_inline): Remove non-unit-at-a-time code.
5476         * tree-inline.h (flag_inline_trees): Remove.
5477         * tree-optimize.c (execute_early_local_optimizations): Remove
5478         unit-at-a-time checks.
5479         (tree_rest_of_compilation): Likewise.
5480         * combine.c (setup_incoming_promotions): Likewise.
5481         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
5482         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
5483         * passes.c (pass_inline_parameters): Update comments; remove
5484         O0_alwaysinline pass.
5485         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
5486         (execute_one_pass): Likewise.
5487         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
5488         (ix86_function_sseregparm): Likewise.
5489         * arm.c (arm_function_in_section_p): Likewise.
5490         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
5491         * varpool.c: Update comments.
5492         (decide_is_variable_needed): Remove unit-at-a-time checks.
5493         (varpool_finalize_decl): Likewise.
5494
5495 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
5496
5497         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
5498         to 2 instead of -1.
5499         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
5500
5501 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
5502
5503         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
5504         imp symbol extension.
5505
5506         2008-07-23  Ian Lance Taylor  <iant@google.com>
5507
5508         * tree-vrp.c (infer_value_range): Ignore asm statements when
5509         looking for memory accesses for -fdelete-null-pointer-checks.
5510
5511 2008-07-24  Ben Elliston  <bje@au.ibm.com>
5512
5513         * config/spu/spu-c.c (__vector_keyword): New variable.
5514         (vector_keyword): Likewise.
5515         (spu_categorize_keyword): New function.
5516         (spu_macro_to_expand): Likewise.
5517         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
5518         compiling an ISO C dialect.
5519
5520 2008-07-24  Ben Elliston  <bje@au.ibm.com>
5521
5522         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
5523         conventional usage.
5524
5525 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
5526
5527         * configure: Regenerate.
5528         * configure.ac: Require texinfo 4.7.
5529         * doc/install.texi: Document texinfo 4.7 requirement.
5530
5531 2008-07-23  Martin Jambor  <mjambor@suse.cz>
5532
5533         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
5534         rather than for DECL_SAVED_TREE.
5535         * ipa-prop.c: Include diagnostic.h.
5536         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
5537         thoroughly.
5538         (ipa_detect_param_modifications): Function rewritten from scratch.
5539         (ipa_compute_jump_functions): Changed accesses to modification flags.
5540         (ipa_free_node_params_substructures): Update flags destruction.
5541         (ipa_node_duplication_hook): Update flags duplication.
5542         (ipa_print_all_params_modified): Updated flag access.
5543         * ipa-prop.h (struct ipa_param_flags): New structure.
5544         (struct ipa_node_params): New field modification_analysis_done,
5545         modified_flags changed into param_flags.
5546         (ipa_is_ith_param_modified): Changed to use new flags.
5547         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
5548
5549         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
5550         ipa-cp.c and split into two functions.
5551         (ipa_print_node_jump_functions): New function.
5552         (compute_scalar_jump_functions): New function.
5553         (type_like_member_ptr_p): New function.
5554         (compute_pass_through_member_ptrs): New function.
5555         (fill_member_ptr_cst_jump_function): New function.
5556         (determine_cst_member_ptr): New function.
5557         (compute_cst_member_ptr_arguments): New function.
5558         (ipa_compute_jump_functions): Complete rewrite.
5559         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
5560         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
5561         (struct ipa_member_ptr_cst): New structure.
5562         (union jump_func_value): New field member_cst.
5563         * ipa-cp.c (ipcp_lat_is_insertable): New function.
5564         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
5565         jump function types.
5566         (ipcp_print_all_lattices): Slight fprintf rearrangement.
5567         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
5568         instead of ipcp_print_all_jump_functions.
5569         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
5570         only for replacable scalars.
5571
5572         * doc/invoke.texi (Optimize options): Add description of
5573         -findirect-inlining.
5574         * common.opt (flag_indirect_inlining): New flag.
5575         * opts.c (decode_options): Set flag_indirect_inlining when
5576         optimize >= 3.
5577
5578         * ipa-inline.c: Include ipa-prop.h.
5579         (inline_indirect_intraprocedural_analysis): New function.
5580         (inline_generate_summary): Allocate parameter and argument info
5581         structures, call inline_indirect_intraprocedural_analysis on each
5582         node when doing indirect inlining and deallocate indirect inlining
5583         data structures in the end.
5584         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
5585         (free_all_ipa_structures_after_iinln): New function.
5586         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
5587         done.
5588         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
5589
5590         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
5591         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
5592         of computing the frequency separately.
5593         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
5594         of computing the frequency separately.
5595         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
5596         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
5597         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
5598         (ipa_get_stmt_member_ptr_load_param): New function.
5599         (ipa_is_ssa_with_stmt_def): New function.
5600         (ipa_note_param_call): New function.
5601         (ipa_analyze_call_uses): New function.
5602         (ipa_analyze_stmt_uses): New function.
5603         (ipa_analyze_params_uses): New function.
5604         (ipa_free_node_params_substructures): Also free the param_calls linked
5605         list.
5606         (ipa_node_duplication_hook): Also duplicate the param_calls linked list.
5607         (ipa_print_node_param_flags): New function.
5608         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
5609         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
5610         * ipa-prop.h (struct ipa_param_flags): New field called.
5611         (struct ipa_param_call_note): New structure.
5612         (struct ipa_node_params): New fields param_calls and
5613         uses_analysis_done.
5614         (ipa_is_ith_param_called): New function.
5615         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
5616         ipa_analyze_params_uses and dump parameter flags.
5617
5618         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
5619         ipa_propagate_indirect_call_infos if performing indirect inlining,
5620         pass a new parameter new_edges to it.
5621         (add_new_edges_to_heap): New fucntion.
5622         (cgraph_decide_inlining_of_small_functions): New vector
5623         new_indirect_edges for newly found indirect edges , call
5624         ipa_propagate_indirect_call_infos after inlining.
5625         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
5626         inlining if performing indirect inlining.  Call
5627         free_all_ipa_structures_after_iinln when doing so too.
5628         (inline_generate_summary): Do not call
5629         free_all_ipa_structures_after_iinln here.
5630         * ipa-prop.c (update_jump_functions_after_inlining): New function.
5631         (print_edge_addition_message): New function.
5632         (update_call_notes_after_inlining): New function.
5633         (propagate_info_to_inlined_callees): New function.
5634         (ipa_propagate_indirect_call_infos): New function.
5635         * ipa-prop.h: Include cgraph.h
5636         (struct ipa_param_call_note): Fields reordered, new field processed.
5637         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
5638         flag indirect_call.
5639         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
5640         rediscovered call statements.
5641         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
5642         (dump_cgraph_node): Dump also the indirect_call flag.
5643         (cgraph_clone_edge): Copy also the indirect_call flag.
5644         * tree-inline.c (copy_bb): Do not check for fndecls from call
5645         expressions, check for edge availability when moving clones.
5646         (get_indirect_callee_fndecl): New function.
5647         (expand_call_inline): If callee declaration is not apprent from
5648         the statement, try calling get_indirect_callee_fndecl.  Do not
5649         issue warnings or call sorry when not inlinings an indirect edge.
5650         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
5651
5652         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
5653         bit more frandly to matching.
5654         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
5655         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
5656         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
5657
5658 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
5659
5660         PR 36907
5661         * opth-gen.awk: Suppress function specific features when building
5662         target libraries.
5663         * optc-gen.awk: Ditto.
5664
5665 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5666
5667         PR 35058
5668         * diagnostic.c (pedwarn): Add opt parameter.
5669         (pedwarn0): New.
5670         * c-tree.h (pedwarn_init): Add opt parameter.
5671         (pedwarn_c90): Likewise.
5672         (pedwarn_c99): Likewise.
5673         * c-errors.c (pedwarn_c99): Likewise.
5674         (pedwarn_c90): Likewise.
5675         * toplev.h (pedwarn): Update declaration.
5676         (pedwarn0): Declare.
5677         * c-lex.c: All calls to pedwarn changed.
5678         * builtins.c: All calls to pedwarn changed.
5679         * toplev.c: All calls to pedwarn changed.
5680         * c-decl.c: All calls to pedwarn changed.
5681         * c-typeck.c: All calls to pedwarn changed.
5682         * c-common.c: All calls to pedwarn changed.
5683         * c-parser.c: All calls to pedwarn changed.
5684
5685 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
5686             Karthik Kumar  <karthikkumar@gmail.com>
5687
5688         * attribs.c (file scope): Include c-common.h.
5689         (decl_attributes): Add support for #pragma GCC optimize and
5690         #pragma GCC option.
5691
5692         * targhooks.c (default_can_inline_p): New function that is the
5693         default for the TARGET_CAN_INLINE_P target hook.
5694
5695         * targhooks.h (default_can_inline_p): Add declaration.
5696
5697         * tree.c (cl_optimization_node): New static tree for building
5698         OPTIMIZATION_NODE tree.
5699         (cl_target_option_node): New static tree for building
5700         TARGET_OPTION_NODE tree.
5701         (cl_option_hash_table): New hash table for hashing
5702         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
5703         (cl_option_hash_hash): New function to provide the hash value for
5704         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
5705         (cl_option_hash_eq): New function to provide an equality test for
5706         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
5707         (tree_code_size): Add support for OPTIMIZATION_NODE and
5708         TARGET_OPTION_NODE trees.
5709         (tree_code_structure): Add support for OPTIMIZATION_NODE and
5710         TARGET_OPTION_NODE trees.
5711         (build_optimization_node): Build a tree that has all of the
5712         current optimization options.
5713         (build_target_option_node): Build a tree that has the target
5714         options that might be changed on a per function basis.
5715
5716         * tree.h (file scope): Include options.h.
5717         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
5718         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
5719         (TREE_OPTIMIZATION): Ditto.
5720         (TREE_TARGET_SPECIFIC): Ditto.
5721         (struct tree_function_decl): Add fields for remembering the
5722         current optimization options and target specific options.
5723         (struct tree_optimization_option): New tree variant that remembers
5724         the optimization options.
5725         (struct tree_target_option): New tree variant that remembers the
5726         target specific flags that might change for compiling a particular
5727         function.
5728         (union tree_node): Include tree_optimization_option and
5729         tree_target_option fields.
5730         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
5731         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
5732         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
5733         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
5734         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
5735         optimization and target options.
5736         (optimization_default_node): New macro to refer to global_trees
5737         field.
5738         (optimization_current_node): Ditto.
5739         (optimization_cold_node): Ditto.
5740         (optimization_hot_node): Ditto.
5741         (target_option_default_node): Ditto.
5742         (target_option_current_node): Ditto.
5743         (current_option_pragma): Ditto.
5744         (current_optimize_pragma): Ditto.
5745
5746         * target.h (struct gcc_target): Add valid_option_attribute_p,
5747         target_option_save, target_option_restore, target_option_print,
5748         target_option_pragma_parse, and can_inline_p hooks.
5749
5750         * toplev.h (parse_optimize_options): Add declaration.
5751         (fast_math_flags_struct_set_p): Ditto.
5752
5753         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
5754         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
5755         optimize is used.
5756
5757         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
5758         tree_can_inline_p hook to see if one function can inline another.
5759         (cgraph_decide_inlining): Ditto.
5760         (cgraph_decide_inlining_incrementally): Ditto.
5761
5762         * opts.c (decode_options): Add support for running multiple times
5763         to allow functions with different target or optimization options
5764         than was specified on the command line.
5765         (fast_math_flags_struct_set_p): New function that is similar to
5766         fast_math_flags_set_p, except it uses the values in the
5767         cl_optimization structure instead of global variables.
5768
5769         * optc-gen.awk: Add support for TargetSave to allow a back end to
5770         declare new fields that need to be saved when using function
5771         specific options.  Include flags.h and target.h in the options.c
5772         source.  Add support for Save to indicate which options can be set
5773         for individual functions.  Generate cl_optimize_save,
5774         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
5775         cl_target_option_restore, cl_target_option_print functions to
5776         allow functions to use different optimization or target options.
5777
5778         * opt-functions.awk (var_type_struct): Return the type used for
5779         storing the field in a structure.
5780
5781         * opth-gen.awk: Add support for TargetSave to allow a back end to
5782         declare new fields that need to be saved when using function
5783         specific options.  Add support for Save to indicate which options
5784         can be set for individual functions.  Only generate one extern for
5785         Mask fields.  Generate cl_optimization and cl_target_option
5786         structures to remember optimization and target options.
5787
5788         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
5789         collecting new tree nodes.
5790         (TS_TARGET_OPTION): Ditto.
5791
5792         * c-decl.c (merge_decls): Merge function specific target and
5793         optimization options.
5794
5795         * function.c (invoke_set_current_function_hook): If the function
5796         uses different optimization options, change the global variables
5797         to reflect this.
5798
5799         * coretypes.h (struct cl_optimization): Add forward reference.
5800         (struct cl_target_option): Ditto.
5801
5802         * c-pragma.c (option_stack): New static vector to remember the
5803         current #pragma GCC option stack.
5804         (handle_pragma_option): New function to support #pragma GCC option
5805         to change target options.
5806         (optimize_stack): New static vector to remember the current
5807         #pragma GCC optimize stack.
5808         (handle_pragma_optimize): New function to support #pragma GCC
5809         optimize to change optimization options.
5810         (init_pragma): Add support for #pragma GCC optimize and #pragma
5811         GCC option.
5812
5813         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
5814         optimization options.
5815         (TARGET_OPTION_NODE): New tree code for remembering certain target
5816         options.
5817
5818         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
5819         TARGET_OPTION_NODE trees.
5820
5821         * common.opt (-O): Add Optimization flag.
5822         (-Os): Ditto.
5823         (-fmath-errno): Ditto.
5824         (-falign-functions): Add UInteger flag to make sure flag gets full
5825         int in cl_optimization structure.
5826         (-falign-jumps): Ditto.
5827         (-falign-labels): Ditto.
5828         (-falign-loops): Ditto.
5829         (-fsched-stalled-insns): Ditto.
5830         (-fsched-stalled-insns-dep): Ditto.
5831
5832         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
5833         definition.
5834         (TARGET_OPTION_SAVE): Ditto.
5835         (TARGET_OPTION_RESTORE): Ditto.
5836         (TARGET_OPTION_PRINT): Ditto.
5837         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
5838         (TARGET_CAN_INLINE_P): Ditto.
5839         (TARGET_INITIALIZER): Add new hooks.
5840
5841         * tree-inline.c (tree_can_inline_p): New function to determine
5842         whether one function can inline another.  Check if the functions
5843         use compatible optimization options, and also call the backend
5844         can_inline_p hook.
5845
5846         * tree-inline.h (tree_can_inline_p): Add declaration.
5847
5848         * c-common.c (c_common_attribute): Add support for option and
5849         optimize attributes.
5850         (handle_option_attribute): Add support for the option attribute to
5851         allow the user to specify different target options for compiling a
5852         specific function.
5853         (handle_optimize_attribute): Add support for the optimize
5854         attribute to allow the user to specify different optimization
5855         options for compiling a specific function.
5856         (handle_hot_attribute): Turn on -O3 optimization for this one
5857         function if it isn't the default optimization level.
5858         (handle_cold_attribute): Turn on -Os optimization for this one
5859         function if it insn't the default optimization.
5860         (const_char_p): New const char * typedef.
5861         (optimize_args): New static vector to remember the optimization
5862         arguments.
5863         (parse_optimize_options): New function to set up the optimization
5864         arguments from either the optimize attribute or #pragma GCC optimize.
5865
5866         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
5867         (builtin_define_std): Ditto.
5868
5869         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
5870         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
5871         (x86_64-*-*): Ditto.
5872
5873         * Makefile.in (TREE_H): Add options.h.
5874         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
5875
5876         * doc/extend.texi (option attribute): Document new attribute.
5877         (optimize attribute): Ditto.
5878         (hot attribute): Document hot attribute sets -O3.
5879         (cold attribute): Document cold attribute sets -Os.
5880         (#pragma GCC option): Document new pragma.
5881         (#pragma GCC optimize): Ditto.
5882
5883         * doc/options.texi (TargetSave): Document TargetSave syntax.
5884         (UInteger): Document UInteger must be used for certain flags.
5885         (Save): Document Save option to create target specific options
5886         that can be saved/restored on a function specific context.
5887
5888         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
5889         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
5890
5891         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
5892         (TARGET_OPTION_SAVE): Ditto.
5893         (TARGET_OPTION_RESTORE): Ditto.
5894         (TARGET_OPTION_PRINT): Ditto.
5895         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
5896         (TARGET_CAN_INLINE_P): Ditto.
5897
5898         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
5899         -mfpmath=sse,387.
5900         (-mfpmath=both): Ditto.
5901
5902 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
5903             Karthik Kumar  <karthikkumar@gmail.com>
5904
5905         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
5906         (TARGET_POPCNT): Ditto.
5907         (TARGET_SAHF): Ditto.
5908         (TARGET_AES): Ditto.
5909         (TARGET_PCLMUL): Ditto.
5910         (TARGET_CMPXCHG16B): Ditto.
5911         (TARGET_RECIP): Move switch into target_flags.
5912         (TARGET_FUSED_MADD): Ditto.
5913         (ix86_arch_features): Make an unsigned char type.
5914         (ix86_tune_features): Ditto.
5915         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
5916         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
5917         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
5918
5919         * config/i386/i386.opt (arch): New TargetSave field to define
5920         fields that need to be saved for function specific option support.
5921         (tune): Ditto.
5922         (fpmath): Ditto.
5923         (branch_cost): Ditto.
5924         (ix86_isa_flags_explicit): Ditto.
5925         (tune_defaulted): Ditto.
5926         (arch_specified): Ditto.
5927         (-m128-long-double): Add Save flag to save option for target
5928         specific option support.
5929         (-m80387): Ditto.
5930         (-maccumulate-outgoing-args): Ditto.
5931         (-malign-double): Ditto.
5932         (-malign-stringops): Ditto.
5933         (-mfancy-math-387): Ditto.
5934         (-mhard-float): Ditto.
5935         (-mieee-fp): Ditto.
5936         (-minline-all-stringops): Ditto.
5937         (-minline-stringops-dynamically): Ditto.
5938         (-mms-bitfields): Ditto.
5939         (-mno-align-stringops): Ditto.
5940         (-mno-fancy-math-387): Ditto.
5941         (-mno-push-args): Ditto.
5942         (-mno-red-zone): Ditto.
5943         (-mpush-args): Ditto.
5944         (-mred-zone): Ditto.
5945         (-mrtd): Ditto.
5946         (-msseregparm): Ditto.
5947         (-mstack-arg-probe): Ditto.
5948         (-m32): Ditto.
5949         (-m64): Ditto.
5950         (-mmmx): Ditto.
5951         (-m3dnow): Ditto.
5952         (-m3dnowa): Ditto.
5953         (-msse): Ditto.
5954         (-msse2): Ditto.
5955         (-msse3): Ditto.
5956         (-msse4.1): Ditto.
5957         (-msse4.2): Ditto.
5958         (-msse4): Ditto.
5959         (-mno-sse4): Ditto.
5960         (-msse4a): Ditto.
5961         (-msse5): Ditto.
5962         (-mrecip): Move flag into target_flags.
5963         (-mcld): Ditto.
5964         (-mno-fused-madd): Ditto.
5965         (-mfused-madd): Ditto.
5966         (-mabm): Move flag into ix86_isa_flags.
5967         (-mcx16): Ditto.
5968         (-mpopcnt): Ditto.
5969         (-msahf): Ditto.
5970         (-maes): Ditto.
5971         (-mpclmul): Ditto.
5972
5973         * config/i386/i386-c.c: New file for #pragma support.
5974         (ix86_target_macros_internal): New function to #define or #undef
5975         target macros based when the user uses the #pragma GCC option to
5976         change target options.
5977         (ix86_pragma_option_parse): New function to add #pragma GCC option
5978         support.
5979         (ix86_target_macros): Move defining the target macros here from
5980         TARGET_CPU_CPP_BUILTINS in i386.h.
5981         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
5982         defined, initialize any subtarget #pragmas.
5983
5984         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
5985         REGISTER_TARGET_PRAGMAS.
5986
5987         * config/i386/t-i386: New file for x86 dependencies.
5988         (i386.o): Make dependencies mirror the include files used.
5989         (i386-c.o): New file, add dependencies.
5990
5991         * config/i386/i386-protos.h (override_options): Add bool argument.
5992         (ix86_valid_option_attribute_tree): Add declaration.
5993         (ix86_target_macros): Ditto.
5994         (ix86_register_macros): Ditto.
5995
5996         * config/i386/i386.c (ix86_tune_features): Move initialization of
5997         the target masks to initial_ix86_tune_features to allow functions
5998         to have different target options.  Make type unsigned char,
5999         instead of unsigned int.
6000         (initial_ix86_tune_features): New static vector to hold processor
6001         masks for the tune variables.
6002         (ix86_arch_features): Move initialization of the target masks to
6003         initial_ix86_arch_features to allow functions to have different
6004         target options.  Make type unsigned char, instead of unsigned int.
6005         (initial_ix86_arch_features): New static vector to hold processor
6006         masks for the arch variables.
6007         (enum ix86_function_specific_strings): New enum to describe the
6008         string options used for attribute((option(...))).
6009         (ix86_target_string): New function to return a string that
6010         describes the target options.
6011         (ix86_debug_options): New function to print the current options in
6012         the debugger.
6013         (ix86_function_specific_save): New function hook to save the
6014         function specific global variables in the cl_target_option structure.
6015         (ix86_function_specific_restore): New function hook to restore the
6016         function specific variables from the cl_target_option structure to
6017         the global variables.
6018         (ix86_function_specific_print): New function hook to print the
6019         target specific options in the cl_target_option structure.
6020         (ix86_valid_option_attribute_p): New function hook to validate
6021         attribute((option(...))) arguments.
6022         (ix86_valid_option_attribute_tree): New function that is common
6023         code between attribute((option(...))) and #pragma GCC option
6024         support that parses the options and returns a tree holding the options.
6025         (ix86_valid_option_attribute_inner_p): New helper function for
6026         ix86_valid_option_attribute_tree.
6027         (ix86_can_inline_p): New function hook to decide if one function
6028         can inline another on a target specific basis.
6029         (ix86_set_current_function); New function hook to switch target
6030         options if the user used attribute((option(...))) or #pragma GCC
6031         option.
6032         (ix86_tune_defaulted): Move to static file scope from
6033         override_options.
6034         (ix86_arch_specified): Ditto.
6035         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
6036         ix86_isa_flags.
6037         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
6038         (OPTION_MASK_ISA_ABM_SET): Ditto.
6039         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
6040         (OPTION_MASK_ISA_CX16_SET): Ditto.
6041         (OPTION_MASK_ISA_SAHF_SET): Ditto.
6042         (OPTION_MASK_ISA_AES_UNSET): Ditto.
6043         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
6044         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
6045         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
6046         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
6047         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
6048         (struct ptt): Move to static file scope from override_options.
6049         (processor_target_table): Ditto.
6050         (cpu_names): Ditto.
6051         (ix86_handle_option): Add support for options that are now isa options.
6052         (override_options): Add support for declaring functions that
6053         support different target options than were specified on the
6054         command line.  Move struct ptt, processor_target_table, cpu_names,
6055         ix86_tune_defaulted, ix86_arch_specified to static file scope.
6056         Add bool argument.  Fix up error messages so the appropriate error
6057         is given for either command line or attribute.
6058         (ix86_previous_fndecl): New static to remember previous function
6059         declaration to see if we need to change target options.
6060         (ix86_builtins_isa): New array to record the ISA of each builtin
6061         function.
6062         (def_builtin): Always create the builtin function, even if the
6063         current ISA doesn't support it.
6064         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
6065         tests for those builtins.
6066         (ix86_init_builtins): Remove TARGET_MMX test for calling
6067         ix86_init_mmx_sse_builtins.
6068         (ix86_expand_builtin): If the current ISA doesn't support a given
6069         builtin, signal an error.
6070         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
6071         (TARGET_SET_CURRENT_FUNCTION): Ditto.
6072         (TARGET_OPTION_SAVE): Ditto.
6073         (TARGET_OPTION_RESTORE): Ditto.
6074         (TARGET_OPTION_PRINT): Ditto.
6075         (TARGET_CAN_INLINE_P): Ditto.
6076
6077 2008-07-22  Rafael Avila de Espindola  <espindola@google.com>
6078
6079         * c-typeck.c (build_external_ref): Don't call assemble_external.
6080         * final.c (output_operand): Call assemble_external.
6081
6082 2008-07-21  DJ Delorie  <dj@redhat.com>
6083
6084         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
6085         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
6086
6087 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6088
6089         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
6090         original insn and splitter contents into ...
6091         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
6092         flag_unsafe_math_optimizations.  Add dummy scratch register.
6093         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
6094         !flag_unsafe_math_optimizations.  Returns number with next
6095         highest magnitude if this is still less or equal to the true
6096         quotient in magnitude.
6097
6098 2008-07-21  Rafael Avila de Espindola  <espindola@google.com>
6099
6100         * Makefile.in: Replace toplev.h with TOPLEV_H.
6101         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
6102         * c-lex.c (fe_file_change): Don't set in_system_header.
6103         * c-parser.c (c_token): Remove in_system_header.
6104         (c_lex_one_token): Don't set in_system_header.
6105         (c_parser_set_source_position_from_token): Don't set in_system_header.
6106         * diagnostic.c (diagnostic_report_diagnostic): Use location from
6107         diagnostic_info.
6108         (warning_at): New.
6109         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
6110         * flags.h (in_system_header): Remove.
6111         * function.c (saved_in_system_header): Remove.
6112         (push_cfun): Don't set in_system_header.
6113         (pop_cfun): Don't set in_system_header.
6114         (push_struct_function): Don't set in_system_header.
6115         * input.h (expanded_location): Add sysp.
6116         (in_system_header_at): New.
6117         (in_system_header): New.
6118         * toplev.c (in_system_header): Remove.
6119         * toplev.h: Include input.h
6120         (warning_at): New.
6121         * tree-cfg.c (execute_warn_function_return): Call warning_at.
6122         * tree-ssa.c (warn_uninit): Call warning_at.
6123         (warn_uninitialized_var): Update calls to warn_uninit.
6124         (warn_uninitialized_phi): Update calls to warn_uninit.
6125         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
6126         (expand_location): Initialize xloc.sysp.
6127         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
6128         (tree_decl_with_vis): Remove in_system_header_flag.
6129
6130 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
6131
6132         PR target/36822
6133         * recog.c (asm_operand_ok): Change the order of the extra
6134         memory constraint checks.
6135
6136 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6137
6138         PR tree-opt/36879
6139         * tree-switch-conversion.c (build_one_array): Call
6140         varpool_mark_needed_node and varpool_finalize_decl
6141         instead of assemble_variable.
6142
6143 2008-07-19  Jan Hubicka  <jh@suse.cz>
6144
6145         * cgraph.c (cgraph_add_new_function): Do early local passes.
6146         * tree-nrv.c (gate_pass_return_slot): New gate.
6147         (pass_nrv): Add the gate.
6148         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
6149         functions.
6150         (coalesce_ssa_name): Coalesce SSA names.
6151         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
6152         not optimizing so unused user vars remains visible.
6153         * common.opt (flag_tree_ter): Always enable by default.
6154         * tree-ssa-ter.c: Include flags.h
6155         (is_replaceable_p): Check that locations match; when aliasing is missing
6156         be conservative about loads.
6157         * tree-optimize.c (gate_init_datastructures): Remove.
6158         (pass_init_datastructures): New.
6159         * passes.c: Reorder passes so we always go into SSA.
6160
6161 2008-07-19  Jan Hubicka  <jh@suse.cz>
6162
6163         * doc/extend.texi (flatten attribute): Remove note about unit-at-a-time
6164         * doc/invoke.texi (--combine): Likewise.
6165         (-finline-functions-called-once): Update levels when enabled.
6166         (-funit-at-a-time): Document new behaviour.
6167         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
6168         -fno-section-anchors when disabled explicitly.
6169         (inline params): They are not ignored now.
6170         (precompiled headers): Remove unit-at-a-time as being incompatible.
6171         * opts.c (decode_options): Handle unit-at-a-time as alias;
6172         imply -fno-section-anchors when toplevel reorder is disabled
6173         explicitly.
6174         * common.opt (ftoplevel-reorder): Set default value to 2.
6175         (funit-at-a-time): Set default value to 1.
6176         * config/rs6000/rs6000.c (optimization_options): Set section anchors
6177         to 2.
6178
6179 2008-07-19  Jan Hubicka  <jh@suse.cz>
6180
6181         * builtins.c (expand_builtin_int_roundingfn,
6182         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
6183         it is not useful.
6184
6185 2008-07-19  Richard Guenther  <rguenther@suse.de>
6186
6187         PR bootstrap/36864
6188         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
6189         * tree-ssa-sccvn.c (get_constant_value_id): New function.
6190         * tree-ssa-pre.c (get_expr_value_id): For newly created
6191         constant value-ids make sure to add the expression to its
6192         expression-set.
6193
6194 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
6195
6196         PR middle-end/36877
6197         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
6198         return value of the builtin is ignored.
6199
6200 2008-07-19  Olivier Hainque  <hainque@adacore.com>
6201
6202         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
6203         bits, a C conformant malloc implementation has to provide.
6204         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
6205
6206 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
6207
6208         PR target/36780
6209         PR target/36827
6210         * reload.c (find_reloads_subreg_address): Only reload address if
6211         reloaded == 0, not for reloaded != 1.
6212
6213         Revert:
6214         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
6215         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
6216         (m32c_legitimate_address_p): Handle "++rii" addresses created by
6217         m32c_legitimize_reload_address.
6218
6219         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
6220         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
6221         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
6222
6223 2008-07-19  Olivier Hainque  <hainque@adacore.com>
6224
6225         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
6226         argument, saying whether nested array are to be collapsed
6227         into a single array type DIE with multiple subscripts.
6228         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
6229         issues, centralize the nested array types collapsing control and
6230         disable the transformation for Ada.
6231
6232 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
6233
6234         PR target/36786
6235         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
6236         x86_64_shift_adj.
6237         (x86_64_shift_adj_2): New expander.
6238         (x86_64_shift_adj_3): Ditto.
6239         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
6240         to split TImode operands.
6241         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
6242         (ix86_split_lshr): Ditto.
6243
6244 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
6245
6246         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
6247         and __CHAR32_TYPE__.
6248         * c-typeck.c (digest_init): Support char16_t and char32_t.
6249         (set_nonincremental_init_from_string): Idem.
6250
6251 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
6252
6253         PR middle-end/36859
6254         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
6255         PREFERRED_STACK_BOUNDARY.
6256         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
6257
6258 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
6259
6260         PR middle-end/36858
6261         * function.c (locate_and_pad_parm): Cap boundary earlier.
6262
6263 2008-07-17  Julian Brown  <julian@codesourcery.com>
6264
6265         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
6266         no-op for targets which don't use DLLs.
6267
6268 2008-07-17  Martin Jambor  <mjambor@suse.cz>
6269
6270         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
6271         that nodes are relevant by examining the node->analyzed flag.
6272         (ipcp_init_stage): Check which nodes are relevant, assert that the
6273         relevant ones are also required.
6274         (ipcp_propagate_stage): Check on the side arrays are properly
6275         allocated.
6276         (ipcp_print_all_jump_functions): Make sure not to touch any node
6277         that is not analyzed or an edge that does not have a corresponding
6278         entry in the on-the-side vectors.
6279         (ipcp_function_scale_print): Likewise.
6280         (ipcp_update_callgraph): Check that the node is relevant.
6281         (ipcp_insert_stage): Check that the node is relevant.  Check there is
6282         an info for every node and edge.
6283         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
6284         (ipa_print_all_tree_maps): Likewise and a new variable info.
6285         (ipa_print_all_params_modified): Likewise.
6286         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
6287
6288 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
6289
6290         PR target/25343
6291         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
6292
6293 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
6294
6295         PR rtl-optimization/36753
6296         * fwprop.c (use_killed_between): Don't shortcut
6297         single-definition global registers.
6298
6299 2008-07-16  Jan Hubicka  <jh@suse.cz>
6300
6301         * cgraph.h (varpool_empty_needed_queue): Declare.
6302         * cgraphunit.c (output_in_order): Mark all variables as needed;
6303         empty the queue.
6304         * varpool.c (varpool_assemble_node): Update debug queue.
6305         (varpool_assemble_pending_decls): Don't do it here.
6306         (varpool_empty_needed_queue):  New function.
6307
6308 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6309
6310         * recog.c (peephole2_optimize): Fix formatting.
6311
6312 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6313
6314         * c-pch.c (get_ident): Avoid C++ keywords.
6315         * combine-stack-adj.c (single_set_for_csa): Likewise.
6316         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
6317         output_asm_insn): Likewise.
6318         * reload.c (push_secondary_reload, find_reusable_reload,
6319         push_reload, combine_reloads, find_reloads,
6320         debug_reload_to_stream): Likewise.
6321         * reload.h (struct reload): Likewise.
6322         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
6323         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
6324         emit_output_reload_insns): Likewise.
6325         * targhooks.c (default_secondary_reload): Likewise.
6326         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
6327
6328 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6329
6330         * recog.c (validate_change_1, validate_change,
6331         validate_unshare_change, validate_replace_rtx_1, struct
6332         funny_match, constrain_operands, peephole2_optimize): Avoid C++
6333         keywords.
6334         * reload.c (push_secondary_reload, secondary_reload_class,
6335         scratch_reload_class, find_valid_class, find_reusable_reload,
6336         push_reload, find_dummy_reload, find_reloads_address_1,
6337         find_reloads_address_part, find_equiv_reg): Likewise.
6338         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
6339         choose_reload_regs): Likewise.
6340         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
6341         Likewise.
6342         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
6343         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
6344         * sched-rgn.c (concat_INSN_LIST): Likewise.
6345         * stor-layout.c (mode_for_size, mode_for_size_tree,
6346         smallest_mode_for_size): Likewise.
6347
6348 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6349
6350         * cfg.c (dump_reg_info): Avoid C++ keywords.
6351         * dwarf2asm.c (dw2_force_const_mem,
6352         dw2_asm_output_encoded_addr_rtx): Likewise.
6353         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
6354         * expmed.c (expand_shift): Likewise.
6355         * global.c (find_reg): Likewise.
6356         * graph.c (draw_edge): Likewise.
6357         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
6358         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
6359         widen_clz, widen_bswap, expand_parity, expand_unop,
6360         emit_cmp_and_jump_insn_1): Likewise.
6361         * postreload.c (reload_cse_simplify_operands): Likewise.
6362         * ra.h (add_neighbor): Likewise.
6363         * reg-stack.c (remove_regno_note, change_stack): Likewise.
6364         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
6365         record_reg_classes, copy_cost, record_address_regs,
6366         invalid_mode_change_p): Likewise.
6367         * regrename.c (regrename_optimize, scan_rtx_reg,
6368         dump_def_use_chain, find_oldest_value_reg,
6369         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
6370
6371 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
6372
6373         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
6374         MASK_POWERPC64 for power4 in previous commit.
6375
6376 2008-07-16  Olivier Hainque  <hainque@adacore.com>
6377
6378         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
6379         instead of bare conversion to cast const-ness away.
6380
6381 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
6382
6383         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
6384         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
6385         * config/xtensa/xtensa.c (xtensa_function_value): New function.
6386         (TARGET_FUNCTION_VALUE): Define.
6387
6388 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
6389
6390         * config/rs6000/rs6000.c (processor_target_table): Add
6391         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
6392
6393 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
6394
6395         PR target/36827
6396         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
6397         (m32c_legitimate_address_p): Handle "++rii" addresses created by
6398         m32c_legitimize_reload_address.
6399
6400 2007-07-16  Rafael Avila de Espindola  <espindola@google.com>
6401
6402         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
6403         DECL_IN_SYSTEM_HEADER in sync.
6404
6405 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
6406
6407         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
6408         * tree-ssa-pre.c (pre_expr_eq): Ditto
6409         (get_constant_for_value_id): Take a type as an argument.
6410         (fully_constant_expression): Pass in type.
6411         (find_or_generate_expression): Short circuit constant case.
6412         (create_expression_by_pieces): Remove special casing of
6413         pointer_plus.
6414         (do_regular_insertion): Short circuit constant case.
6415         (do_partial_partial_insertion): Ditto.
6416
6417 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
6418
6419         PR target/36782
6420         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
6421
6422 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
6423
6424         * config/xtensa/libgcc-xtensa.ver: New file.
6425         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
6426
6427 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6428
6429         * df-problems.c (df_set_note): Avoid C++ keywords.
6430         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
6431         * dse.c (record_store, remove_useless_values): Likewise.
6432         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
6433         gen_reg_rtx_offset, operand_subword, change_address_1,
6434         change_address, adjust_address_1, offset_address,
6435         widen_memory_access, emit_copy_of_insn_after): Likewise.
6436         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
6437         * fwprop.c (should_replace_address, propagate_rtx_1,
6438         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
6439         Likewise.
6440         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
6441         gcse_emit_move_after, update_ld_motion_stores): Likewise.
6442         * lcm.c (compute_insert_delete, pre_edge_lcm,
6443         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
6444         * lower-subreg.c (resolve_reg_notes): Likewise.
6445         * mode-switching.c (optimize_mode_switching): Likewise.
6446
6447 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6448
6449         * bt-load.c (add_btr_def, migrate_btr_def,
6450         branch_target_load_optimize): Avoid C++ keywords.
6451         * caller-save.c (insert_restore, insert_save, insert_one_insn):
6452         Likewise.
6453         * combine.c (subst, simplify_set, make_extraction,
6454         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
6455         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
6456         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
6457
6458 2008-07-15  Richard Guenther  <rguenther@suse.de>
6459
6460         PR middle-end/36369
6461         * c-common.c (strict_aliasing_warning): Do not warn for
6462         TYPE_REF_CAN_ALIAS_ALL pointers.
6463         (c_common_get_alias_set): may_alias types are not special.
6464         * tree.c (build_pointer_type_for_mode): Look up the may_alias
6465         attribute and set can_ref_all accordingly.
6466         (build_reference_type_for_mode): Likewise.
6467         * doc/extend.texi (may_alias): Clarify.
6468
6469 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
6470
6471         PR target/36780
6472         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
6473         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
6474
6475 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6476
6477         PR target/31568
6478         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
6479         gcc_assert, instead call output_operand_lossage.
6480
6481 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
6482
6483         * builtins.c (std_canonical_va_list): Treat structure based
6484         va_list types.
6485
6486 2008-07-15  Ben Elliston  <bje@au.ibm.com>
6487
6488         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
6489
6490 2007-07-14  Rafael Avila de Espindola  <espindola@google.com>
6491
6492         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
6493         is set.
6494
6495 2008-07-14  Jan Hubicka  <jh@suse.cz>
6496
6497         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
6498         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
6499         fix predicates and constraints.
6500         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
6501         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
6502
6503 2008-07-14  Doug Kwan  <dougkwan@google.com>
6504
6505         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
6506         additional option file arm/eabi.opt.
6507         * config/arm/eabi.h (File): New configuration file for EABI targets.
6508         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
6509         SUBSUBTARGET_EXTRA_SPECS.
6510         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
6511         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
6512         from STARTFILE_SPEC so that it can be referenced in an override.
6513         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
6514         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
6515         can be referenced in an override.
6516         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
6517         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
6518         so that it can be referenced in an override.
6519         (LINK_SPEC): Use BPABI_LINK_SPEC.
6520         * config/arm/eabi.opt (File): New.
6521
6522 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6523
6524         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
6525         (FIXED_VALUE_H): New variable.
6526         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
6527         input.h, fixed-value.h.
6528         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
6529         (BASIC_BLOCK_H): Use $(BITMAP_H).
6530         (FUNCTION_H): Add varray.h.
6531         (IPA_REFERENCE_H): Use $(BITMAP_H).
6532         (CGRAPH_H): Add $(BASIC_BLOCK_H).
6533         (DF_H): Use $(BITMAP_H).
6534         (GGC_H): Add statistics.h.
6535         (INSN_ADDR_H): New.
6536         (INSN_ATTR_H): Use it.
6537         (SYSTEM_H): Add safe-ctype.h, filenames.h.
6538         (INPUT_H): New.
6539         (SYMTAB_H): Add $(OBSTACK_H).
6540         (CPP_INTERNAL_H): New.
6541         (TREE_DUMP_H): Add tree-pass.h.
6542         (TREE_FLOW_H): Use $(BITMAP_H)
6543         (PRETTY_PRINT_H): Use $(INPUT_H).
6544         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
6545         (GSTAB_H): New.
6546         (BITMAP_H): New.
6547         (many object files): Fix lots of header dependencies throughout.
6548
6549 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6550
6551         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
6552         New macros.
6553         (s-gtyp-input): Use them to write tmp-gi.list.
6554         (echo_to_gi.list): Remove.
6555
6556 2008-07-14  Richard Guenther  <rguenther@suse.de>
6557
6558         * tree-ssa-sccvn.c (pre_info): Remove.
6559         (switch_to_PRE_table): Likewise.
6560         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
6561         (set_hashtable_value_ids): Do not create value-ids for the
6562         optimistic tables.
6563         (run_scc_vn): Remove double test.  Remove bogus special-case
6564         in value-number printing.
6565         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
6566         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
6567         SSA_NAME_VALUE.
6568         * tree-flow-inline.h (get_value_handle): Remove.
6569         * tree-flow.h (get_value_handle): Remove.
6570
6571 2008-07-14  Martin Jambor  <mjambor@suse.cz>
6572
6573         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
6574         in which we generate arithmetics is not a subrange.
6575
6576 2008-07-14  Martin Jambor  <mjambor@suse.cz>
6577
6578         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
6579
6580 2008-07-14  Richard Guenther  <rguenther@suse.de>
6581
6582         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
6583
6584 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
6585
6586         PR target/36745
6587         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
6588         reload for symbol refs moved to r0 with -fPIC.
6589         (legitimize_pic_address): Use the target register as temporary
6590         reg if possible.
6591         (emit_symbolic_move): Adjust comment.
6592         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
6593         New expanders.
6594
6595 2008-07-14  Ben Elliston  <bje@au.ibm.com>
6596
6597         * c-common.h (C_CPP_HASHNODE): New macro.
6598         * coretypes.h (struct cpp_token): Forward declare.
6599         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
6600         the context-sensitive keyword method.
6601         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
6602         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
6603         expand_bool_pixel): New.
6604         (altivec_categorize_keyword): New function.
6605         (init_vector_keywords): New function.
6606         (rs6000_macro_to_expand): Likewise.
6607         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
6608         compiling an ISO C dialect.
6609
6610 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
6611
6612         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
6613         (create_expression_by_pieces): Fix typo.
6614         (do_regular_insertion): Use debug counter here too.
6615
6616 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
6617
6618         PR target/35492.
6619         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
6620         CONST_OK_FOR_LETTER_P.  All port-local users changed.
6621         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
6622         implement Kp matching power-of-two.
6623         (CONSTRAINT_LEN): Define to match.
6624         * config/cris/cris.md: Replace all use of constraint K with Kc.
6625         ("*btst*): Use Kp for operand 0 of last alternative.
6626
6627 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6628
6629         PR testsuite/36440
6630         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
6631         and quad formats.
6632
6633 2008-07-13  Jan Hubicka  <jh@suse.cz>
6634
6635         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
6636         to be mangled too.
6637
6638 2008-07-13  Richard Guenther  <rguenther@suse.de>
6639
6640         PR middle-end/36811
6641         * langhooks.c (lhd_print_error_function): Deal with recursive
6642         BLOCK trees.
6643
6644 2008-07-12  Jan Hubicka  <jh@suse.cz>
6645
6646         * cgraph.c (assembler_name_hash): New static var.
6647         (hash_node_by_assembler_name, eq_assembler_name): New.
6648         (cgraph_node_for_asm): Use hashtable.
6649         (cgraph_remove_node): Maintain hashtable.
6650         (change_decl_assembler_name): Sanity check that names are not changing
6651         after aliasing was processed.
6652         * cgraph.h (varpoon_node): Add next GGC marker.
6653         * tree.c (decl_assembler_name_equal): Constify.
6654         (decl_assembler_name_hash): New.
6655         * tree.h (decl_assembler_name_equal): Constify.
6656         (decl_assembler_name_hash): Update.
6657
6658 2008-07-12  David Daney  <ddaney@avtrex.com>
6659
6660         * config/mips/driver-native.c (host_detect_local_cpu): Handle
6661         sb1 and r5000 cpus.
6662
6663 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
6664
6665         * doc/md.texi: Document the MIPS "v" constraint.
6666         * config/mips/mips.h (reg_class): Revert last change.
6667         (REG_CLASS_NAMES): Likewise.
6668         (REG_CLASS_CONTENTS): Likewise.
6669         * config/mips/mips.c (mips_regno_to_class): Likewise.
6670         * config/mips/constraints.md (v): Likewise, but add documentation.
6671         Add a comment to say that this constraint should not be used in
6672         gcc code.
6673
6674 2008-07-11  DJ Delorie  <dj@redhat.com>
6675
6676         * config/h8300/h8300.md (length): Fix branch offset limit.
6677
6678 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
6679
6680         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
6681         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
6682         (avr_hard_regno_scratch_ok): New function.
6683         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
6684         * config/avr/avr.md (all peepholes that request a scratch register):
6685         Remove avr_peep2_scratch_safe use.
6686
6687 2008-07-11  Tom Tromey  <tromey@redhat.com>
6688             Ian Lance Taylor  <iant@google.com>
6689
6690         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
6691         (struct c_common_resword): Define.
6692         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
6693         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
6694         (c_common_reswords, num_c_common_reswords): Declare.
6695         * c-common.c (c_common_reswords): New global const array.
6696         (num_c_common_reswords): New const int.
6697         * c-parser.c (struct resword, reswords): Don't define.
6698         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
6699         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
6700         than reswords.  If warning about C++ keywords, give them a special
6701         RID code.
6702         (c_lex_one_token): Warn about C++ keywords.  Call
6703         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
6704         (c_parser_external_declaration): Look for RID_xxx rather than
6705         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
6706         (c_parser_statement_after_labels): Likewise.
6707         (c_parser_objc_class_instance_variables): Likewise.
6708         (c_parser_objc_class_declaration): Likewise.
6709         (c_parser_objc_try_catch_statement): Likewise.
6710         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
6711         (declspecs_add_type): Likewise.
6712
6713 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
6714
6715         * ggc-page.c (alloc_page):
6716         Substituting xmalloc, xcalloc with
6717         XNEWVEC and XCNEWVAR macros which add the
6718         needed casts.
6719
6720 2008-07-11  Richard Guenther  <rguenther@suse.de>
6721
6722         PR tree-optimization/36765
6723         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
6724         aliases from HEAP vars to SMTs.
6725
6726 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6727
6728         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
6729         * configure.ac (loose_warn): Move -Wc++-compat from here...
6730         (strict_warn): ...to here.
6731         * configure: Regenerate.
6732
6733 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
6734
6735         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
6736         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
6737         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
6738         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
6739         excluding more specific h8300-*-* and sh-*-* targets.
6740
6741 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
6742
6743         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
6744         (eliminate): Ditto.
6745         (execute_pre): Call loop_optimizer_finalize in early exit.
6746
6747 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
6748
6749         PR middle-end/36790
6750         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
6751         uids in the bitmap, not just VAR_DECL uids.
6752
6753         PR rtl-optimization/36419
6754         * combine-stack-adj.c (adjust_frame_related_expr): New function.
6755         (combine_stack_adjustments_for_block): Call it if needed.  Delete
6756         correct insn.
6757         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
6758         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
6759         prologue sp adjustment.
6760
6761 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
6762
6763         PR other/28322
6764         * opts.c (print_ignored_options): Report postponed diagnostics for
6765         unknown -Wno-* options as warnings, not errors.
6766         (postpone_unknown_option_error): Renamed to...
6767         (postpone_unknown_option_warning): ... this.
6768
6769 2008-07-09  Doug Kwan  <dougkwan@google.com>
6770
6771         Revert:
6772         2008-07-08  Doug Kwan  <dougkwan@google.com>
6773
6774         * config/arm/arm.opt (mandroid): New option.
6775         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
6776         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
6777         (CC1_SPEC): Same.
6778         (CC1PLUS_SPEC): Same.
6779         (LIB_SPEC): Same.
6780         (STARTFILE_SPEC): Same.
6781         (ENDFILE_SPEC): Same.
6782         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
6783         used.
6784
6785 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
6786
6787         PR target/35802
6788         * config/mips/mips.h (reg_class): Remove V1_REG.
6789         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
6790         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
6791         instead of V1_REGS.
6792         (mips_get_tp): New function.
6793         (mips_legitimize_tls_address): Use it.
6794         * config/mips/constraints.md (v): Delete.
6795         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
6796         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
6797         After reload, split into a move and ...
6798         (*tls_get_tp_<mode>_split): ...this new instruction.
6799
6800 2008-07-09  David Daney  <ddaney@avtrex.com>
6801
6802         * config/mips/driver-native.c: Include coretypes.h and tm.h.
6803
6804 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
6805
6806         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
6807         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
6808         Add c argument.
6809         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
6810         htab_delete should be called.  Don't free c.
6811         (lookup_tmp_var): Create temp_htab lazily.
6812         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
6813         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
6814         callers.
6815         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
6816         lower_omp_ordered, lower_omp_critical, lower_omp_for,
6817         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
6818         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
6819         * tree-sra.c (generate_element_init): Likewise.
6820         * tree-mudflap.c (execute_mudflap_function_ops,
6821         execute_mudflap_function_decls): Likewise.
6822         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
6823         * tree-gimple.h (struct gimplify_ctx): New type.
6824         (push_gimplify_context): Adjust prototype.
6825
6826 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
6827
6828         * tree-ssa-pre.c (phi_translate_1): Update placement of
6829         add_to_value calls.
6830
6831 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
6832
6833         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
6834         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
6835         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
6836         * targhooks.c (default_hard_regno_scratch_ok): New function.
6837         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
6838         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
6839         * recog.c:  Include "target.h".
6840         (peep2_find_free_register): Add check for global regs. Add target
6841         specific check.
6842         * Makefile.in (recog.o): Depend on target.h.
6843
6844 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
6845
6846         * config/sh/sh.c (sh_canonical_va_list_type): New.
6847         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
6848
6849 2008-07-09  Raksit Ashok <raksit@google.com>
6850
6851         * doc/invoke.texi (Option Summary): Mention new option
6852         -Wdisallowed-function-list=...
6853         (Warning Options): Document -Wdisallowed-function-list=...
6854         * common.opt (Wdisallowed-function-list=): New flag.
6855         * flags.h (warn_disallowed_functions): External definition of new
6856         boolean warning flag.
6857         (warn_if_disallowed_function_p): Declare new function.
6858         * opts.c (warning_disallowed_functions): New static variable.
6859         (warn_disallowed_functions): New boolean warning flag.
6860         (warn_if_disallowed_function_p): New function.
6861         (add_comma_separated_to_vector): Rename
6862         add_instrument_functions_exclude_list to this.
6863         (common_handle_option): Handle new option. Rename calls to
6864         add_instrument_functions_exclude_list into calls to
6865         add_comma_separated_to_vector.
6866         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
6867         based on flag warn_disallowed_functions.
6868
6869 2008-07-09  Christian Bruel  <christian.bruel@st.com>
6870
6871         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
6872          instead of get_attr_length.
6873
6874 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6875
6876         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
6877         keywords.
6878         * genemit.c (gen_insn): Likewise.
6879         * gengtype.c (note_def_vec): Likewise.
6880         * gengtype.h (note_def_vec): Likewise.
6881         * genoutput.c (struct data, output_insn_data, process_template,
6882         gen_expand, gen_split, note_constraint): Likewise.
6883         * genrecog.c (new_decision, add_to_sequence, factor_tests,
6884         make_insn_sequence): Likewise.
6885         * gensupport.c (record_insn_name): Likewise.
6886
6887 2008-07-08  Doug Kwan  <dougkwan@google.com>
6888
6889         * config/arm/arm.opt (mandroid): New option.
6890         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
6891         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
6892         (CC1_SPEC): Same.
6893         (CC1PLUS_SPEC): Same.
6894         (LIB_SPEC): Same.
6895         (STARTFILE_SPEC): Same.
6896         (ENDFILE_SPEC): Same.
6897         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
6898         used.
6899
6900 2008-07-08  Raksit Ashok  <raksit@google.com>
6901
6902         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
6903         (set_storage_via_setmem): Fix expected_align parameter.
6904         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
6905         missing from the list.
6906         * doc/md.texi (movmem): Explicitly state that expected alignment is
6907         to be expressed in bytes.
6908         (setmem): Explicitly state that expected alignment is to be expressed
6909         in bytes.
6910
6911 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
6912
6913         * reload.c (find_reloads_subreg_address): Do not require validity
6914         of address in original mode before reloading address.
6915
6916 2008-07-07  Tianwei Sheng  <tianweis@google.com>
6917
6918         * df-core.c (df_remove_problem): Adjust the access to avoid out of
6919         bounds array access.
6920
6921 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
6922
6923         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
6924
6925 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
6926
6927         Fix PR tree-optimization/23455
6928         Fix PR tree-optimization/35286
6929         Fix PR tree-optimization/35287
6930         * Makefile.in (OBJS-common): Remove tree-vn.o.
6931         (tree-vn.o): Remove.
6932         * dbgcnt.def: Add treepre_insert debug counter.
6933         * gcc/tree-flow.h (add_to_value): Updated for other changes.
6934         (debug_value_expressions): Ditto.
6935         (print_value_expressions): Ditto.
6936         * tree-pretty-print.c (dump_generic_node): Updated for
6937         VALUE_HANDLE removal.
6938         * tree-ssa-dom.c (record_equality): Ditto.
6939         (cprop_operand): Ditto.
6940         (lookup_avail_expr): Ditto.
6941         * tree-ssa-threadedge.c
6942         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
6943         (simplify_control_stmt_condition): Ditto.
6944         * tree.c (tree_code_size): Ditto.
6945         (tree_node_structure): Ditto.
6946         (iterative_hash_expr): Ditto.
6947         * tree.def: Ditto.
6948         * tree.h (VALUE_HANDLE_ID): Ditto.
6949         (VALUE_HANDLE_EXPR_SET): Ditto.
6950         (struct tree_value_handle): Ditto.
6951         (union tree_node): Ditto.
6952         * treestruct.def: Ditto.
6953         * tree-vn.c: Removed.
6954         * tree-ssa-pre.c: Rewritten entirely.
6955         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
6956         (constant_value_ids): Ditto.
6957         (vn_nary_op_t): Moved to header.
6958         (vn_phi_t): Ditto.
6959         (vn_reference_op_t): Ditto
6960         (vn_reference_t): Ditto.
6961         (next_value_id): New variable.
6962         (VN_INFO): Add an assert.
6963         (vn_constant_eq): New function.
6964         (vn_constant_hash): Ditto.
6965         (get_or_alloc_constant_value_id): Ditto.
6966         (value_id_constant_p): Ditto.
6967         (vn_reference_compute_hash): De-staticify.
6968         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
6969         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
6970         (valueize_refs): Update opcode if it changes from ssa name to constant.
6971         (vn_reference_lookup_1): Add new argument.
6972         (vn_reference_lookup):  Ditto.
6973         (vn_reference_lookup_pieces): New function.
6974         (vn_reference_insert): Add return type. Modify to deal with value ids.
6975         (vn_reference_insert_pieces):  New function.
6976         (vn_nary_op_compute_hash): De-staticify.
6977         (vn_nary_op_eq): Ditto.
6978         (vn_nary_op_lookup_pieces): New function.
6979         (vn_nary_op_lookup): Add new argument.
6980         (vn_nary_op_insert_pieces): New function.
6981         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
6982         (vn_phi_insert): Ditto.
6983         (visit_unary_op): Update for callee changes.
6984         (visit_binary_op): Ditto.
6985         (visit_reference_op_load): Ditto.
6986         (visit_reference_op_store): Ditto.
6987         (init_scc_vn): Init next_value_id, constant_to_value_id and
6988         constant_value_ids.
6989         (free_scc_vn): Free them.
6990         (set_hashtable_value_ids): New function.
6991         (run_scc_vn): Use it.
6992         (get_max_value_id): New function.
6993         (get_next_value_id): Ditto.
6994         (expressions_equal_p): Moved from tree-vn.c
6995         (sort_vuses): Ditto.
6996         (sort_vuses_heap): Ditto.
6997         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
6998         above).
6999         * tree.c (iterative_hash_hashval_t): Made non-static
7000         * tree.h (iterative_hash_hashval_t): Declare it.
7001
7002 2008-07-08  Martin Jambor  <mjambor@suse.cz>
7003
7004         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
7005         instead of ipa_create_node_params.
7006         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
7007         ipa_check_create_edge_args, free them with
7008         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
7009
7010         * ipa-prop.c: Include flags.h and tree-inline.h.
7011         (ipa_node_params_vector): New variable.
7012         (ipa_edge_args_vector): New variable.
7013         (edge_removal_hook_holder): New variable.
7014         (node_removal_hook_holder): New variable.
7015         (edge_duplication_hook_holder): New variable.
7016         (node_duplication_hook_holder): New variable.
7017         (ipa_detect_param_modifications): Check for presence of modified flags.
7018         (ipa_compute_jump_functions): Check for presence of jump functions.
7019         (ipa_free_edge_args_substructures): New function.
7020         (ipa_create_node_params): Removed.
7021         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
7022         (ipa_free_node_params_substructures): New function.
7023         (ipa_free_all_node_params): Changed to deallocate the on-the-side
7024         vector.
7025         (ipa_edge_removal_hook): New function.
7026         (ipa_node_removal_hook): New function.
7027         (duplicate_array): New function.
7028         (ipa_edge_duplication_hook): New function.
7029         (ipa_node_duplication_hook): New function.
7030         (ipa_register_cgraph_hooks): New function.
7031         (ipa_unregister_cgraph_hooks): New function.
7032         (free_all_ipa_structures_after_ipa_cp): New function.
7033
7034         * ipa-prop.h: Include vec.h.
7035         (ipa_node_params_t): New typedef with vector types for it.
7036         (ipa_edge_args_t):  New typedef with vector types for it.
7037         (IPA_NODE_REF): Changed to access an on-the-side vector.
7038         (IPA_EDGE_REF): Changed to access an on-the-side vector.
7039         (ipa_check_create_node_params): New function.
7040         (ipa_check_create_edge_args): New function.
7041
7042         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
7043         all users.
7044
7045 2008-07-07  Tom Tromey  <tromey@redhat.com>
7046
7047         * configure, config.in: Rebuilt.
7048         * configure.ac: Don't check for scandir or alphasort.
7049
7050 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
7051
7052         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
7053         types immediately after creating them.
7054
7055 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
7056
7057         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
7058
7059 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
7060
7061         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
7062         dump_constraint_graph.
7063         (dump_constraint_edge): New function.
7064         (dump_constraint_graph): New function.
7065         (debug_constraint_graph): New function.
7066         (dump_constraint): Removed useless comparison.
7067         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
7068         (dump_constraint_graph): Declare.
7069         (debug_constraint_graph): Declare.
7070         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
7071
7072 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
7073
7074         * config/i386/i386.c (is_va_list_char_pointer): New.
7075         (ix86_va_start): Replace compare with ms_va_list_type_node
7076         by is_va_list_char_pointer.
7077         (ix86_gimplify_va_arg): Likewise.
7078
7079 2008-07-07  Martin Jambor  <mjambor@suse.cz>
7080
7081         * cgraph.c (cgraph_edge_max_uid): New variable.
7082         (struct cgraph_edge_hook_list): New type.
7083         (struct cgraph_node_hook_list): New type.
7084         (struct cgraph_2edge_hook_list): New type.
7085         (struct cgraph_2node_hook_list): New type.
7086         (first_cgraph_edge_removal_hook): New variable.
7087         (first_cgraph_node_removal_hook): New variable.
7088         (first_cgraph_edge_duplicated_hook): New variable.
7089         (first_cgraph_node_duplicated_hook): New variable.
7090         (cgraph_add_edge_removal_hook): New function.
7091         (cgraph_remove_edge_removal_hook): New function.
7092         (cgraph_call_edge_removal_hooks):  New function.
7093         (cgraph_add_node_removal_hook):  New function.
7094         (cgraph_remove_node_removal_hook):  New function.
7095         (cgraph_call_node_removal_hooks):  New function.
7096         (cgraph_add_edge_duplication_hook):  New function.
7097         (cgraph_remove_edge_duplication_hook):  New function.
7098         (cgraph_call_edge_duplication_hooks):  New function.
7099         (cgraph_add_node_duplication_hook):  New function.
7100         (cgraph_remove_node_duplication_hook):  New function.
7101         (cgraph_call_node_duplication_hooks):  New function.
7102         (cgraph_create_edge): Assign to edge uid.
7103         (cgraph_remove_edge): Call edge removal hooks.
7104         (cgraph_node_remove_callees): Call edge removal hooks.
7105         (cgraph_node_remove_callers): Call edge removal hooks.
7106         (cgraph_remove_node): Call node removal hooks.
7107         (cgraph_clone_edge): Call edge duplication hooks.
7108         (cgraph_clone_node): Call node duplication hooks.
7109
7110         * cgraph.h (cgraph_edge): New field uid.
7111         (cgraph_edge_hook): New type.
7112         (cgraph_node_hook): New type.
7113         (cgraph_2edge_hook): New type.
7114         (cgraph_2node_hook): New type.
7115
7116 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
7117
7118         * config.in: Regenerate.
7119
7120 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
7121
7122         * gcc.c (print_sysroot): New.
7123         (option_map, display_help, process_command): Handle the
7124         -print-sysroot option.
7125         (main): Print the sysroot if requested.
7126         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
7127
7128 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7129
7130         PR target/34780
7131         * unwind-pe.h (size_of_encoded_value): add attribute unused.
7132
7133 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
7134
7135         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
7136         (assign_parm_setup_block_p): Also check mode of entry_parm.
7137
7138 2008-07-07  Richard Guenther  <rguenther@suse.de>
7139
7140         * tree-ssa-structalias.h (set_used_smts): Remove.
7141         * tree-ssa-structalias.c (used_smts): Likewise.
7142         (set_used_smts): Likewise.
7143         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
7144         call to set_used_smts.
7145
7146 2008-07-07  Richard Guenther  <rguenther@suse.de>
7147
7148         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
7149         (new_var_info): Set it to false.
7150         (solution_set_add): Correctly handle pointers outside a var and
7151         inside a field.
7152         (type_safe): Treat variables with is_full_var properly.
7153         (do_sd_constraint): Likewise.
7154         (do_ds_constraint): Likewise.
7155         (process_constraint): Remove zeroing offset for !use_field_sensitive.
7156         (get_constraint_for_ptr_offset): New function.
7157         (get_constraint_for_component_ref): For addresses at least include
7158         the last field of the variable.  Handle is_full_vars properly.
7159         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
7160         (handle_ptr_arith): Remove.
7161         (find_func_aliases): Simplify assignment handling.
7162         (create_function_info_for): For parameter and result varinfos set
7163         is_full_var flag.
7164         (create_variable_info_for): Set is_full_var flag whenever we
7165         just created a single varinfo for a decl.
7166         (init_alias_vars): Initialize use_field_sensitive from
7167         max-fields-for-field-sensitive parameter.
7168
7169 2008-07-07  Richard Guenther  <rguenther@suse.de>
7170
7171         PR tree-optimization/36713
7172         * tree-flow-inline.h (is_call_used): New function.
7173         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
7174         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
7175         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
7176
7177 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
7178
7179         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
7180
7181 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
7182
7183         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
7184
7185 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
7186             Nathan Sidwell  <nathan@codesourcery.com>
7187
7188         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
7189         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
7190         tmake_file.
7191         * config/m68k/t-linux: New.
7192         * doc/install.texi: Document m68k-*-linux is now multilibbed by
7193         default.
7194
7195 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
7196
7197         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
7198         * config/m68k/m68k-devices.def: Remove multilibs that only differ
7199         by MAC/EMAC.
7200
7201 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7202
7203         * gcc.c (execute): Fix -Wc++-compat warning.
7204
7205 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
7206
7207         PR target/36720
7208         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
7209         constant for little endian.
7210
7211 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
7212
7213         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
7214         mips_base_mips16 instead of TARGET_MIPS16.
7215         (mips_base_mips16): Declare.
7216         * config/mips/mips.c (mips_base_mips16): Make global.
7217         (was_mips16_p): Remove GTY marker.
7218         (was_mips16_pch_p): New variable.
7219         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
7220         (mips_override_options): Force to non-MIPS16 mode initially.
7221         Do not complain about MIPS16 PIC incompatibilities here.
7222         Only allow -mgpopt if -mexplicit-relocs is in force for
7223         non-MIPS16 code.
7224
7225 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
7226
7227         * configure.ac: Check for caddr_t, define to char * if not defined.
7228         * configure: Regenerate.
7229         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
7230         (mmap_gt_pch_use_address): Likewise.
7231         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
7232
7233 2008-07-06  Richard Guenther  <rguenther@suse.de>
7234
7235         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
7236         (new_var_info): Deal with it.
7237         (solution_set_add): Likewise.
7238         (bitpos_of_field): Make signed, fix.
7239         (struct fieldoff): Remove type and decl fields.  Make size field
7240         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
7241         flags.
7242         (fieldoff_compare): Deal with it.
7243         (push_fields_onto_fieldstack): Remove has_union argument, glob
7244         adjacent non-pointer fields together.
7245         (create_function_info_for): Do not set has_union.
7246         (create_variable_info_for): Simplify.
7247
7248 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
7249
7250         * config.gcc (extra_headers): Add cross-stdarg.h for target
7251         x86_64-*-* and i?86-*-*.
7252         * config/i386/cross-stdarg.h: New.
7253         * builtins.c (std_fn_abi_va_list): New.
7254         (std_canonical_va_list_type): New.
7255         (stabilize_va_list): Replace va_list_type_node use by
7256         mtarget.canonical_va_list_type.
7257         (gimplify_va_arg_expr): Likewise.
7258         (expand_builtin_va_copy): Replace va_list_type_node use by
7259         mtarget.fn_abi_va_list.
7260         * tree-sra.c (is_va_list_type): New helper.
7261         (decl_can_be_decomposed_p): Replace
7262         va_list_type_node use by is_va_list_type.
7263         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
7264         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
7265         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
7266         * config/i386/i386-protos.h (ix86_get_valist_type): New.
7267         (ix86_enum_va_list): New.
7268         * config/i386/i386.c (sysv_va_list_type_node): New.
7269         (ms_va_list_type_node): New.
7270         (ix86_function_type_abi): Remove sorry.
7271         (ix86_build_builtin_va_list_abi): New.
7272         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
7273         for 64-bit targets.
7274         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
7275         (ix86_init_builtins_va_builtins_abi): New.
7276         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
7277         for 64-bit targets.
7278         (ix86_handle_abi_attribute): New.
7279         (attribute_spec): Add sysv_abi and ms_abi.
7280         (ix86_fn_abi_va_list): New.
7281         (ix86_canonical_va_list_type): New.
7282         (ix86_enum_va_list): New.
7283         (TARGET_FN_ABI_VA_LIST): New.
7284         (TARGET_CANONICAL_VA_LIST_TYPE): New.
7285         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
7286         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
7287         (TARGET_CANONICAL_VA_LIST_TYPE): New.
7288         (TARGET_ENUM_VA_LIST): New.
7289         * expr.h (std_fn_abi_va_list): New.
7290         (std_canonical_va_list_type): New.
7291         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
7292         (TARGET_CANONICAL_VA_LIST_TYPE): New.
7293         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
7294         TARGET_CANONICAL_VA_LIST_TYPE.
7295         * target.h (struct gcc_target): Add fn_abi_va_list hook
7296         and canonical_va_list_type hook.
7297
7298 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7299
7300         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
7301         integral and pointer types.
7302
7303 2008-07-04  Roger Sayle  <roger@eyesopen.com>
7304
7305         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
7306         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
7307
7308 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
7309
7310         PR target/36684
7311         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
7312
7313 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
7314
7315         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
7316         build_gimple_modify_stmt.
7317         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
7318         gimple operand.  Use fold_build* instead of build*.
7319
7320 2008-07-04  Richard Guenther  <rguenther@suse.de>
7321
7322         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
7323         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
7324         properly to compute the reachability set if we do field-sensitive PTA.
7325         * invoke.texi (max-fields-for-field-sensitive): Document default.
7326         * opts.c (decode_options): Set max-fields-for-field-sensitive to
7327         100 for optimize >= 2.
7328
7329 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7330
7331         * ggc-zone.c (lookup_page_table_if_allocated,
7332         set_page_table_entry, zone_find_object_size, alloc_small_page,
7333         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
7334         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
7335         -Wc++-compat and/or -Wcast-qual warnings.
7336
7337 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
7338
7339         PR target/36634
7340         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
7341         pic_offset_table_rtx to be marked as used here.
7342         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
7343         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
7344         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
7345         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
7346         !TARGET_SECURE_PLT.
7347
7348 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7349
7350         * alloc-pool.c (hash_descriptor, eq_descriptor,
7351         alloc_pool_descriptor): Fix -Wc++-compat warnings.
7352         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
7353         Likewise.
7354         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
7355         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
7356         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
7357         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
7358         Likewise.
7359
7360 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
7361
7362         * tree-flow.h (loop_only_exit_p): Declare.
7363         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
7364         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
7365         the number of iterations if it is constant.  Otherwise, if this is the
7366         only possible exit of the loop, use the conservative estimate on the
7367         number of iterations of the entire loop if available.
7368
7369 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
7370
7371         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
7372         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
7373         Add synchronization functions.
7374         * config/sync.c: New file.
7375         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
7376         (LIBGCC_SYNC_CFLAGS): Likewise.
7377
7378 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
7379
7380         PR target/36710
7381         * config/i386/i386.md (mode): Add TF to "mode" attribute.
7382         (*pushtf_sse): New insn pattern.
7383         (pushtf splitters): New splitters.
7384
7385 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
7386
7387         PR middle-end/35736
7388         * predict.c (build_predict_expr): Use void_type_node for the tree
7389         type, instead of NULL_TREE.
7390
7391 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
7392
7393         * config/i386/i386.c (contains_aligned_value_p): Return true
7394         for TCmode.
7395         (ix86_data_alignment): Align TCmode to 128bits.
7396         (ix86_local_alignment): Likewise.
7397
7398 2008-07-03  Andrew Haley  <aph@redhat.com>
7399
7400         PR bootstrap/33304
7401         * vec.h (VEC_TA): New.
7402         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
7403         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
7404         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
7405         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
7406         (C_COMMON_FIXED_TYPES): Remove first arg.
7407         (C_COMMON_FIXED_MODE_TYPES): Likewise.
7408         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
7409         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
7410         not to use empty macro arguments.
7411
7412 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
7413
7414         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
7415         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
7416         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
7417         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
7418         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
7419         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
7420         config/ia64/crtn.asm, config/m68hc11/larith.asm,
7421         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
7422         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
7423         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
7424         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
7425         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
7426         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
7427         config/rs6000/e500crtres64gpr.asm,
7428         config/rs6000/e500crtres64gprctr.asm,
7429         config/rs6000/e500crtrest32gpr.asm,
7430         config/rs6000/e500crtrest64gpr.asm,
7431         config/rs6000/e500crtresx32gpr.asm,
7432         config/rs6000/e500crtresx64gpr.asm,
7433         config/rs6000/e500crtsav32gpr.asm,
7434         config/rs6000/e500crtsav64gpr.asm,
7435         config/rs6000/e500crtsav64gprctr.asm,
7436         config/rs6000/e500crtsavg32gpr.asm,
7437         config/rs6000/e500crtsavg64gpr.asm,
7438         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
7439         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
7440         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
7441         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
7442         config/sparc/sol2-cn.asm: Remove .file directives.
7443
7444 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
7445
7446         * resource.c (mark_referenced_resources): Look inside
7447         UNSPEC_VOLATILEs and ASM_INPUTs.
7448
7449 2008-07-02  Ian Lance Taylor  <iant@google.com>
7450
7451         * rtlanal.c (add_reg_note): New function.
7452         * rtl.h (add_reg_note): Declare.
7453         * auto-inc-dec.c (attempt_change): Use add_reg_note.
7454         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
7455         * builtins.c (expand_builtin_longjmp): Likewise.
7456         (expand_builtin_nonlocal_goto): Likewise.
7457         * calls.c (emit_call_1, expand_call): Likewise.
7458         * cfgexpand.c (add_reg_br_prob_note): Likewise.
7459         * cfglayout.c (fixup_reorder_chain): Likewise.
7460         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
7461         (commit_one_edge_insertion): Likewise.
7462         * combine.c (move_deaths, distribute_notes): Likewise.
7463         * df-problems.c (df_set_note): Likewise.
7464         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
7465         (set_unique_reg_note): Likewise.
7466         (emit_copy_of_insn_after): Likewise.
7467         * expr.c (expand_expr_real): Likewise.
7468         * gcse.c (add_label_notes): Likewise.
7469         * haifa-sched.c (create_check_block_twin): Likewise.
7470         * jump.c (mark_jump_label_1): Likewise.
7471         * loop-doloop.c (add_test, doloop_modify): Likewise.
7472         * loop-unswitch.c (compare_and_jump_seq): Likewise.
7473         * lower-subreg.c (move_eh_region_note): Likewise.
7474         * optabs.c (emit_libcall_block): Likewise.
7475         * predict.c (predict_insn): Likewise.
7476         (combine_predictions_for_insn): Likewise.
7477         * recog.c (peephole2_optimize): Likewise.
7478         * regmove.c (try_auto_increment): Likewise.
7479         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
7480         * reload.c (find_reloads): Likewise.
7481         * reload1.c (fixup_eh_region_note): Likewise.
7482         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
7483         * reorg.c (delete_prior_computation): Likewise.
7484         (delete_computation, dbr_schedule): Likewise.
7485         * config/pa/pa.c (legitimize_pic_address): Likewise.
7486         * config/sh/sh.c (sh_reorg): Likewise.
7487
7488 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
7489
7490         PR target/36669
7491         * config/libgcc-glibc.ver: Add %exclude.
7492         * config/m32r/libgcc-glibc.ver: Likwise.
7493         * config/s390/libgcc-glibc.ver: Likwise.
7494         * config/sh/libgcc-glibc.ver: Likwise.
7495         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
7496
7497         * config/i386/libgcc-glibc.ver: New.
7498
7499         * config/i386/libgcc-x86_64-glibc.ver: Removed.
7500
7501 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
7502
7503         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
7504         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
7505         i[34567]86-*-linux*, x86_64-*-linux*.  Add
7506         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
7507         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
7508         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
7509         i[34567]86-*-linux*, x86_64-*-linux*.
7510
7511         * libgcc-std.ver: Add empty GCC_4.4.0.
7512
7513         * mkmap-symver.awk: Support multiple versions per symbol.
7514
7515         * config/i386/i386.c (ix86_init_builtins): Always define
7516         __builtin_fabsq and __builtin_copysignq with fallbacks.
7517         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
7518         and __builtin_copysignq if SSE2 isn't available.
7519
7520         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
7521         (LIBGCC2_TF_CEXT): Likwise.
7522         (TF_SIZE): Likwise.
7523
7524         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
7525
7526         * config/i386/sfp-machine.h: Moved to libgcc.
7527
7528         * config/i386/sfp-machine.h: New.
7529         * config/i386/t-linux: Likwise.
7530
7531         * config/i386/t-darwin: Remove softfp_wrap_start and
7532         softfp_wrap_end.
7533         * config/i386/t-darwin64: Likewise.
7534
7535         * config/i386/t-fprules-softfp64: Renamed to ...
7536         * config/i386/t-fprules-softfp: This.
7537
7538         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
7539         and softfp_wrap_end.
7540
7541 2008-07-02  Jason Merrill  <jason@redhat.com>
7542
7543         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
7544
7545         * tree.c (ctor_to_list): New fn.
7546         * tree.h: Declare it.
7547         (CONSTRUCTOR_ELT): New macro.
7548         (CONSTRUCTOR_NELTS): New macro.
7549
7550 2008-07-02  Richard Guenther  <rguenther@suse.de>
7551
7552         * tree-ssa-structalias.c (struct variable_info): Reorder
7553         to fill padding on 64bit hosts.  Make collapsed_to an int.
7554         (get_varinfo_fc): Deal with that.
7555         (new_var_info): Likewise.
7556         (collapse_rest_of_var): Likewise.
7557
7558 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
7559
7560         * doc/install.texi (--enable-java-home): Document.
7561         (--enable-aot-compile-rpm): Likewise.
7562         (--with-arch-directory): Likewise.
7563         (--with-os-directory): Likewise.
7564         (--with-origin-name): Likewise.
7565         (--with-arch-suffix): Likewise.
7566         (--with-jvm-root-dir): Likewise.
7567         (--with-jvm-jar-dir): Likewise.
7568         (--with-python-dir): Likewise.
7569
7570 2008-07-02  Richard Guenther  <rguenther@suse.de>
7571
7572         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
7573         from decls explicitly.  Merge operand checking from tuples.
7574
7575 2008-07-02  Martin Jambor  <mjambor@suse.cz>
7576
7577         * tree-switch-conversion.c: Included timevar.h which I forgot before.
7578
7579 2008-07-02  Martin Jambor  <mjambor@suse.cz>
7580
7581         * tree-switch-conversion.c: Included timevar.h
7582         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
7583
7584         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
7585
7586 2008-07-02  Martin Jambor  <mjambor@suse.cz>
7587
7588         * tree-switch-conversion.c: Corrected various comments and
7589         whitespace issues
7590         (build_constructors): Fixed minor formatting mistakes.
7591
7592         * invoke.texi (Optimize Options): Corrected the
7593         switch-conversion-max-branch-ratio parameter.
7594
7595 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
7596
7597         * final.c (asm_insn_count): Return zero for an empty asm body.
7598
7599 2008-07-02  Richard Guenther  <rguenther@suse.de>
7600
7601         * bitmap.h (bitmap_set_bit): Return bool.
7602         (bitmap_clear_bit): Likewise.
7603         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
7604         write to the bitmap if it would.
7605         (bitmap_clear_bit): Likewise.
7606         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
7607         bitmap_set_bit return value.
7608         (add_pred_graph_edge): Likewise.
7609         (add_graph_edge): Likewise.
7610         (do_sd_constraint): Likewise.
7611         (do_ds_constraint): Likewise.
7612
7613 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7614
7615         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
7616         Fix -Wc++-compat and/or -Wcast-qual warnings.
7617         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
7618         gen_regparm_prefix): Likewise.
7619         * vmsdbgout.c (write_modbeg, lookup_filename,
7620         vmsdbgout_source_line, vmsdbgout_init): Likewise.
7621
7622 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
7623
7624         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
7625         defaults.h definition apply.
7626
7627 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
7628
7629         * function.c (assign_parm_remove_parallels): New.
7630         (assign_parm_setup_block_p): Do not return true for non-BLKmode
7631         PARALLELs.
7632         (assign_parm_setup_block): Do not handle them.
7633         (assign_parm_setup_reg, assign_parm_setup_stack): Call
7634         assign_parm_remove_parallels.
7635
7636 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
7637
7638         * c-typeck.c (convert_for_assignment): Use
7639         vector_targets_convertible_p.
7640         * c-common.c (vector_targets_convertible_p): New.
7641         * c-common.h (vector_targets_convertible_p): New prototype.
7642         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
7643         opaque_p_V2SI_type_node.
7644
7645 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
7646
7647         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
7648         RFmode constants.
7649
7650 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
7651
7652         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
7653         TFmode constants via two element DImode vector for hosts with
7654         HOST_BITS_PER_WIDE_INT < 64.
7655         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
7656         also for HOST_BITS_PER_WIDE_INT < 64.
7657
7658 2008-07-01  Richard Guenther  <rguenther@suse.de>
7659
7660         PR tree-optimization/36666
7661         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
7662         (get_constraint_exp_from_ssa_var): Split into ...
7663         (get_constraint_exp_for_temp): ... this ...
7664         (get_constraint_for_ssa_var): ... and that.
7665         Return constraint expressions for all touched sub-fields
7666         if the results address is not taken.
7667         (process_constraint): Remove assertion that aggregate
7668         assignments do not happen at this place.
7669         (get_constraint_for_component_ref): Add address_p argument.
7670         Return constraint expressions for all touched sub-fields
7671         if the results address is not taken.
7672         (do_deref): Use get_constraint_exp_for_temp.
7673         (get_constraint_for_1): Rename from ...
7674         (get_constraint_for): ... this.  Add the old function as wrapper.
7675         (do_structure_copy): Use get_constraint_for_1.
7676
7677 2008-07-01  Martin Jambor  <mjambor@suse.cz>
7678
7679         * Makefile.in (tree-switch-conversion.o): Add.
7680         (OBJS-common): Add tree-swtch-conversion.o.
7681         * passes.c (init_optimization_passes): Add pass_convert_switch.
7682         * tree-pass.h: (pass_convert_switch): Add.
7683         * tree-switch-conversion.c: New file.
7684         * gcc.dg/tree-ssa/cswtch.c: New testcase.
7685         * common.opt (ftree-cswtch): New option.
7686         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
7687         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
7688         * opts.c (decode_options): Set flag_tree_switch_conversion when
7689         optimization level is >= 2.
7690         * doc/invoke.texi (Optimize Options): Added description of
7691         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
7692
7693 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7694
7695         * config/darwin-driver.c (darwin_default_min_version): Fix
7696         -Wc++-compat warnings.
7697
7698 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
7699
7700         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
7701         of operand 0.
7702
7703 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
7704
7705         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
7706
7707 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
7708
7709         PR rtl-optimization/34744
7710         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
7711         (df_scan_free_internal): Free data structures not
7712         allocated in storage pools.
7713         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
7714         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
7715         df_scan_free_mws_vec.
7716         * dse.c (dse_step6): Free offset_map_p and offset_map_n
7717         unconditionally.
7718
7719 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
7720
7721         * config/i386/i386.c (contains_aligned_value_p): Return true
7722         for __float128.
7723         (ix86_function_arg_boundary): Return its natural boundary
7724         for __float128.
7725         (return_in_memory_32): Don't check TDmode.
7726         (ix86_split_to_parts): Support splitting into 4 parts and
7727         support TFmode for 32bit target.
7728         (ix86_split_long_move): Support splitting into 4 parts.
7729         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
7730         for SSE2.
7731         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
7732         (ix86_init_builtins): Here.
7733         (ix86_scalar_mode_supported_p): Always return true for TFmode.
7734         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
7735         'q' and 'w', respectively.
7736
7737         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
7738         TARGET_64BIT.
7739         (movtf_internal): Likewise.
7740         (<code>tf2): Likewise.
7741         (*absnegtf2_sse): Likewise.
7742         (copysign<mode>3): Likewise.
7743         (copysign<mode>3_const): Likewise.
7744         (copysign<mode>3_var): Likewise.
7745         (define_split UNSPEC_COPYSIGN): Likewise.
7746         * config/i386/sse.md (*nandtf3): Likewise.
7747         (<code>tf3): Likewise.
7748         (*<code>tf3): Likewise.
7749
7750 2008-06-30  Joey Ye  <joey.ye@intel.com>
7751             H.J. Lu  <hongjiu.lu@intel.com>
7752
7753         * global.c (compute_regsets): Set frame_pointer_needed here.
7754         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
7755
7756 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
7757
7758         * doc/install.texi (specific): Expand Windows build notes.
7759
7760 2008-06-30  Ira Rosen  <irar@il.ibm.com>
7761
7762         PR tree-optimization/36648
7763         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
7764         number of prolog iterations by step. Fix the comment.
7765
7766 2008-06-30  Richard Guenther  <rguenther@suse.de>
7767
7768         PR middle-end/36671
7769         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
7770         handle calls from ECF_MALLOC functions.
7771         (handle_pure_call): ECF_MALLOC functions do not return
7772         call-used memory.
7773         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
7774
7775 2008-06-29  Andreas Schwab  <schwab@suse.de>
7776
7777         * config/m68k/m68k.c (print_operand): Always print a float
7778         constant in hex.
7779         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
7780         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
7781         Remove macros.
7782
7783         * config/rs6000/x-linux64: Remove never used file.
7784
7785 2008-06-29  Richard Guenther  <rguenther@suse.de>
7786
7787         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
7788         prototype.
7789         (struct alias_info): Move ...
7790         * tree-ssa-alias.c: ... here.
7791         (update_alias_info): Declare.
7792         (compute_may_aliases): Call it.
7793         (update_alias_info): New function.
7794         * tree-ssa-structalias.c (update_alias_info): Move ...
7795         * tree-ssa-alias.c (update_alias_info_1): ... here.
7796         * tree-ssa-structalias.c (process_constraint_1): Remove
7797         unused from_call argument.  Rename to ...
7798         (process_constraint): ... this.  Delete old wrapper.
7799         (make_constraint_to): Adjust callers.
7800         (handle_const_call): Likewise.
7801         (handle_pure_call): Likewise.
7802         (init_base_vars): Likewise.
7803         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
7804         (find_func_aliases): We don't need structure copies for
7805         complex types.
7806         (make_constraint_from_anything): Remove.
7807         (create_variable_info_for): For globals make constraints
7808         from escaped, not from anything.
7809         (compute_points_to_sets): Do not call update_alias_info.
7810         (ipa_pta_execute): Use make_constraint_from.
7811
7812 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7813
7814         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
7815         (bitmap.o-warn, dominance.o-warn): New.
7816         * configure.ac (cxx_compat_warn): Delete.
7817         (loose_warn): Add -Wcast-qual and -Wc++-compat.
7818         * system.h: Remove #pragma diagnostic for -Wcast-qual and
7819         -Wc++-compat.
7820         * configure: Regenerate.
7821
7822         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
7823         warnings.
7824
7825 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7826
7827         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
7828         * df-scan.c (df_notes_rescan): Likewise.
7829         * ggc-page.c (set_page_table_entry): Likewise.
7830         * intl.c (gcc_gettext_width): Likewise.
7831         * varasm.c (get_unnamed_section, get_noswitch_section,
7832         get_section): Likewise.
7833
7834 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
7835
7836         * regrename.c (build_def_use): Don't copy RTX.
7837
7838 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
7839
7840         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
7841         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
7842         punctuation.  Use @ref instead of @xref.
7843         (Function Names): Remove stray @display/@end display.
7844         (C++ Attributes): Use @ref instead of @xref.
7845         (Deprecated Features): Fix punctuation around @xref.
7846         (Backwards Compatibility): Likewise.
7847         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
7848
7849 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
7850
7851         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
7852         constants for E500 double.
7853
7854 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7855
7856         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
7857         element type of const_vector.
7858
7859 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
7860
7861         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
7862         Remove FLAGS_REG clobber from expander pattern.
7863         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
7864         (anddi3, andsi3, andhi3, andqi3): Ditto.
7865         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
7866         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
7867         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
7868         (ashlsi3, ashlhi3, ashlqi3): Ditto.
7869         (ashrsi3, ashrhi3, ashrqi3): Ditto.
7870         (lshrsi3, lshrhi3, lshrqi3): Ditto.
7871         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
7872         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
7873
7874 2008-06-28  Richard Guenther  <rguenther@suse.de>
7875
7876         * tree-ssa-structalias.c (callused_id, var_callused,
7877         callused_tree): Add.
7878         (handle_pure_call): New function.
7879         (find_func_aliases): Call it.
7880         (find_what_p_points_to): Handle the call-used set.
7881         (clobber_what_escaped): Likewise.
7882         (compute_call_used_vars): New function.
7883         (init_base_vars): Init the call-used variable.
7884         (do_sd_constraint): Do not propagate the solution from CALLUSED
7885         but use CALLUSED as a placeholder.
7886         (solve_graph): Likewise.
7887         * tree-flow-inline.h (gimple_call_used_vars): New function.
7888         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
7889         (compute_call_used_vars): Declare.
7890         * tree-ssa-alias.c (set_initial_properties): Call
7891         compute_call_used_vars.
7892         (reset_alias_info): Clear call-used variables.
7893         (add_call_clobber_ops): Assert we are not called for const/pure
7894         functions.  Remove handling of them.
7895         (add_call_read_ops): Handle pure functions by adding the
7896         call-used set of variables as VUSEs.
7897         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
7898         (delete_tree_ssa): Free it.
7899         * tree-dfa.c (remove_referenced_var): Clear the var from the
7900         call-used bitmap.
7901
7902 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
7903
7904         * tree.c (build_varargs_function_type_list): New.
7905         (build_function_type_list_1): New.
7906         (build_function_type_list): Use build_function_type_list_1.
7907         * tree.h (build_varargs_function_type_list): New.
7908
7909 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7910
7911         PR target/34856
7912         * config/spu/spu.c (spu_builtin_splats): Do not generate
7913         invalid CONST_VECTOR expressions.
7914         (spu_expand_vector_init): Likewise.
7915
7916 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
7917
7918         * optabs.c (libfunc_decls): New variable.
7919         (libfunc_decl_hash, libfunc_decl_eq): New functions.
7920         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
7921         for the same function twice.
7922
7923 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
7924
7925         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
7926         ix86_expand_binary_operator directly.
7927         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
7928         for operand 2.
7929         (*ashrti3_1): Ditto.
7930         (*lshrti3_1): Ditto.
7931         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
7932         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
7933         using only one splitter.  Conditionaly execute splitter before or
7934         after peephole2 pass.
7935         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
7936         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
7937         Use only one alternative in asm template.
7938         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
7939         in asm template.
7940         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
7941         "J" operand constraint for operand 2.
7942         (*ashldi3_cconly_rex64): Ditto.
7943         (*ashrdi3_cmp_rex64): Ditto.
7944         (*ashrdi3_cconly_rex64): Ditto.
7945         (*lshrdi3_cmp_rex64): Ditto.
7946         (*lshrdi3_cconly_rex64): Ditto.
7947         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
7948         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
7949         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
7950         gen_x86_shrd_1.
7951
7952 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
7953
7954         * gimplify.c (omp_is_private): Don't return true if decl is not
7955         already private on #pragma omp for or #pragma omp parallel for.
7956
7957         PR debug/36617
7958         * tree-cfg.c (struct move_stmt_d): Replace block field with
7959         orig_block and new_block fields.
7960         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
7961         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
7962         (move_block_to_fn): Replace vars_map and new_label_map arguments
7963         with struct move_stmt_d pointer.
7964         (replace_block_vars_by_duplicates): New function.
7965         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
7966         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
7967         all subblocks of ORIG_BLOCK to the new function.  Call
7968         replace_block_vars_by_duplicates.
7969         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
7970         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
7971         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
7972         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
7973         (expand_omp): Temporarily set input_location to the location of
7974         region's controlling stmt.
7975         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
7976         BIND_EXPR, push ctx->block_vars and gimplification vars into
7977         the BIND_EXPR and its block's BLOCK_VARS instead of directly
7978         into dest function.
7979         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
7980         there are any BLOCK_VARS.
7981         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
7982         OMP_PARALLEL or OMP_TASK stmt.
7983         (lower_omp): Save and restore input_location around the lower_omp_1
7984         call.
7985
7986 2008-06-27  Richard Guenther  <rguenther@suse.de>
7987
7988         PR tree-optimization/36400
7989         PR tree-optimization/36373
7990         PR tree-optimization/36344
7991         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
7992         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
7993         (update_alias_info): Remove call clobbering code.
7994         (make_constraint_to): New helper function.
7995         (make_escape_constraint): Likewise.
7996         (handle_rhs_call): Use it on all pointer containing arguments.
7997         Also mark the static chain escaped.
7998         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
7999         instead of ANYTHING.
8000         (make_constraint_from): New helper split out from ...
8001         (make_constraint_from_anything): ... here.
8002         (find_func_aliases): Add constraints for escape sites.
8003         (intra_create_variable_infos): Make constraints from NONLOCAL
8004         for parameters.
8005         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
8006         as ANYTHING.
8007         (clobber_what_p_points_to): Remove.
8008         (clobber_what_escaped): New function.
8009         (init_base_vars): Init NONLOCAL and ESCAPED.
8010         (do_sd_constraint): Do not propagate the solution from ESCAPED
8011         but use ESCAPED as a placeholder.
8012         (solve_graph): Likewise.
8013         * tree-flow.h (clobber_what_p_points_to): Remove.
8014         (clobber_what_escaped): Declare.
8015         * tree-ssa-alias.c (set_initial_properties): Call it.
8016         Remove code clobbering escaped pointers.
8017
8018 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
8019
8020         * function.c (allocate_struct_function): Only allocate a unique
8021         funcdef_no if the decl is nonzero.
8022
8023 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
8024
8025         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
8026         * config/mips/mips.c (mips_split_const_insns): New function.
8027         * config/mips/mips.md (move_type): New attribute.
8028         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
8029         (dword_mode): New attribute.
8030         (type): Avoid long line.  Map "move_type"s to "type"s,
8031         choosing "multi" for doubleword moves if appropriate.
8032         Swap MTC/MFC comments to match their declaration order.
8033         (extended_mips16): Default to "yes" if "move_type" is "sll0",
8034         "type" is "branch" or "jal" is "direct".
8035         (length): Handle "extended_mips16" first.  Make the default
8036         "0" for "ghost" instructions.  Set the length from "move_type".
8037         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
8038         of "type", with "sll0" for the register alternative.  Remove the
8039         "extended_mips16" attribute.
8040         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
8041         of "type", with "shift_shift" for the register alternative.
8042         Remove the "length" attribute.
8043         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
8044         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
8045         of "type", with "andi" for the register alternative.
8046         (*zero_extendqihi2): Likewise.
8047         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
8048         of "andi" instead of a "type" of "arith".
8049         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
8050         instead of "type".
8051         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
8052         (mov_<store>r, *mov<mode>_ra): Likewise.
8053         (extendsidi2): Use "move_type" instead of "type", with "move"
8054         for the register alternative.
8055         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
8056         of "type", with "signext" for the register alternative.
8057         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
8058         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
8059         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
8060         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
8061         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
8062         (unnamed branch insn): Likewise.
8063         (*movdi_gp32_fp64): Fold into...
8064         (*movdi_32bit): ...here.
8065         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
8066         (*movdf_hardfloat): ...this new pattern.
8067         (*movdf_softfloat): Remove redundant FPR alternatives.
8068         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
8069         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
8070         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
8071         the "move" attribute.
8072         (*movdi_32bit): Use "move_type" instead of "type" and remove the
8073         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
8074         and "store" for COP loads and stores.
8075         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
8076         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
8077         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
8078         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
8079         (*movtf_mips16, *movv2sf): Likewise.
8080         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
8081         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
8082         (mfhc1<mode>): Use "move_type" instead of "move".
8083         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
8084         (loadgp_blockage): Remove the "length" attribute.
8085         (blockage, set_got_version, update_got_version): Likewise.
8086         (call_internal): Remove the "extended_mips16" attribute.
8087         (call_value_internal, call_value_multiple_internal): Likewise.
8088         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
8089         instead of "move".
8090         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
8091         the "length" attribute.
8092
8093 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8094
8095         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
8096         -Wcast-qual warnings.
8097         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
8098         handle_pragma_pop_macro): Likewise.
8099         * collect2.c (resolve_lib_name): Likewise.
8100         * config/arc/arc.c (arc_init): Likewise.
8101         * config/arm/arm.c (neon_builtin_compare,
8102         locate_neon_builtin_icode): Likewise.
8103         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
8104         * config/bfin/bfin.c (bfin_init_machine_status,
8105         bfin_optimize_loop): Likewise.
8106         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
8107         * config/cris/cris.c (cris_init_expanders): Likewise.
8108         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
8109         * config/darwin.c (machopic_indirection_eq,
8110         machopic_indirection_name, machopic_output_indirection): Likewise.
8111         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
8112         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
8113         frv_optimize_membar): Likewise.
8114         * config/i386/cygwin.h (mingw_scan,
8115         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
8116         * config/i386/cygwin1.c (mingw_scan): Likewise.
8117         * config/i386/i386.c (machopic_output_stub): Likewise.
8118         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
8119         i386_pe_unique_section): Likewise.
8120         * config/ia64/ia64.c (ia64_init_machine_status,
8121         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
8122         Likewise.
8123         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
8124         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
8125         * config/m68k/m68k.c (m68k_handle_option,
8126         m68k_sched_md_init_global): Likewise.
8127         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
8128         mcore_unique_section): Likewise.
8129         * config/mips/mips.c (mips_block_move_straight,
8130         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
8131         Likewise.
8132         * config/mmix/mmix.c (mmix_init_machine_status,
8133         mmix_encode_section_info): Likewise.
8134         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
8135         * config/rs6000/rs6000.c (rs6000_init_machine_status,
8136         print_operand_address, output_toc, redefine_groups,
8137         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
8138         * config/s390/s390.c (s390_init_machine_status): Likewise.
8139         * config/score/score.c (score_block_move_straight,
8140         score_block_move_loop_body): Likewise.
8141         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
8142         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
8143         * emit-rtl.c (find_auto_inc): Likewise.
8144         * gcc.c (translate_options, process_command): Likewise.
8145         * reorg.c (dbr_schedule): Likewise.
8146         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
8147         * xcoffout.c (xcoffout_declare_function): Likewise.
8148
8149 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
8150
8151         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
8152         ipa-pta working again.
8153
8154 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
8155
8156         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
8157         genautomata.
8158
8159 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
8160
8161         * config.gcc (powerpc*-*-*): Add new core e500mc.
8162         * config/rs6000/e500mc.md: New file.
8163         * config/rs6000/rs6000.c (processor_costs): Add new costs for
8164         e500mc.
8165         (rs6000_override_options): Add e500mc case to
8166         processor_target_table. Altivec and Spe options not allowed
8167         with e500mc. Add isel instruction to e500mc by
8168         default. Initialize rs6000_cost for e500mc.
8169         (rs6000_issue_rate): Set issue rate for e500mc.
8170         * config/rs6000/rs6000.h (processor_type): Add
8171         PROCESSOR_PPCE500MC.
8172         (ASM_CPU_SPEC): Add e500mc.
8173         Set TARGET_ISEL to rs6000_isel.
8174         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
8175         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
8176         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
8177         Include e500mc.md.
8178         * doc/invoke.texi: Add e500mc to list of cpus.
8179
8180 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
8181
8182         PR c/34867
8183         * c-lex.c (lex_charconst): Initialize unsignedp.
8184
8185 2008-06-27  Olivier Hainque  <hainque@adacore.com>
8186
8187         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
8188         documented assumptions.
8189
8190 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
8191
8192         * dwarf2out.c: Remove trailing white spaces.  Break long line
8193         in comments.
8194
8195 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
8196
8197         * libfuncs.h (LTI_synchronize): New libfunc_index.
8198         (synchronize_libfunc): Declare.
8199         * builtins.c (expand_builtin_synchronize): Consider using
8200         synchronize_libfunc before falling back on an asm blockage.
8201         * config/mips/mips.c: Include libfuncs.h
8202         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
8203
8204 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
8205
8206         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
8207         parameter.  Copy stack_reg to r11 where appropriate.
8208         (no_global_regs_above): Add gpr parameter.
8209         (rs6000_stack_info): Only add padding for SPE save area if we
8210         are saving SPE GPRs and CR.
8211         (saveres_routine_syms): New variable.
8212         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
8213         Define.
8214         (rs6000_savres_routine_sym): New function.
8215         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
8216         split out of...
8217         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
8218         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
8219         Tweak FPR out-of-line saving.
8220         (rs6000_make_savres_rtx): New function.
8221         (rs6000_use_multiple_p): New function.
8222         (rs6000_savres_strategy): New function.
8223         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
8224         out-of-line if appropriate.
8225         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
8226         if we are optimizing for size.
8227         (GP_SAVE_INLINE): Define.
8228         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
8229         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
8230         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
8231         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
8232         (*save_fpregs_<mode>): Add use of r11.
8233         (*restore_gpregs_<mode>): New insn.
8234         (*return_and_restore_gpregs_<mode>): New insn.
8235         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
8236         use r11.
8237         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
8238         (*restore_gpregs_spe): New insn.
8239         (*return_and_restore_gpregs_spe): New insn.
8240         * config/rs6000/predicates.md (save_world_operation): Fix check.
8241
8242 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
8243
8244         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
8245         this point, so assert that.
8246
8247 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
8248
8249         * cfganal.c: Include vec.h and vecprim.h.
8250         (compute_idf): Import from...
8251         * tree-into-ssa (compute_idf): ...here.
8252         * basic-block.h (compute_idf): Export.
8253
8254 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
8255
8256         * c-decl.c (merge_decls): Use !current_function_decl to check for
8257         extern declaration of C99 inline function being at file scope.
8258
8259 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
8260
8261         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
8262
8263 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8264
8265         * alias.c (record_alias_subset, init_alias_analysis): Fix
8266         -Wc++-compat and/or -Wcast-qual warnings.
8267         * attribs.c (lookup_attribute_spec): Likewise.
8268         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
8269         copy_bb, connect_traces,
8270         find_rarely_executed_basic_blocks_and_cr): Likewise.
8271         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
8272         note_btr_set, migrate_btr_defs): Likewise.
8273         * builtins.c (result_vector, expand_builtin_memcpy,
8274         expand_builtin_mempcpy_args, expand_builtin_strncpy,
8275         builtin_memset_read_str, expand_builtin_printf,
8276         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
8277         Likewise.
8278         * caller-save.c (mark_set_regs): Likewise.
8279         * calls.c (expand_call, emit_library_call_value_1): Likewise.
8280         * cgraph.c (cgraph_edge): Likewise.
8281         * combine.c (likely_spilled_retval_1): Likewise.
8282         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
8283         htab_counts_entry_del, get_coverage_counts): Likewise.
8284         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
8285         new_cselib_val): Likewise.
8286         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
8287         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
8288         Likewise.
8289         * df-core.c (df_compact_blocks): Likewise.
8290         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
8291         * df-scan.c (df_grow_reg_info, df_ref_create,
8292         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
8293         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
8294         df_record_entry_block_defs, df_record_exit_block_uses,
8295         df_bb_verify): Likewise.
8296         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
8297         DF_REF_EXTRACT_MODE_CONST): New.
8298         * dominance.c (get_immediate_dominator, get_dominated_by,
8299         nearest_common_dominator, root_of_dom_tree,
8300         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
8301         -Wc++-compat and/or -Wcast-qual warnings.
8302         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
8303         record_store, replace_read, check_mem_read_rtx, scan_insn,
8304         dse_step1, dse_record_singleton_alias_set): Likewise.
8305         * dwarf2asm.c (dw2_force_const_mem): Likewise.
8306
8307 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8308
8309         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
8310         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
8311         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
8312         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
8313         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
8314         add_ranges_num, add_ranges_by_labels, file_info_cmp,
8315         file_name_acquire, output_file_names, add_const_value_attribute,
8316         premark_used_types_helper, file_table_eq, file_table_hash,
8317         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
8318         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
8319         -Wcast-qual warnings.
8320         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
8321         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
8322         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
8323         gen_reg_rtx, start_sequence, init_emit): Likewise.
8324         * et-forest.c (et_new_occ, et_new_tree): Likewise.
8325         * except.c (init_eh_for_function, gen_eh_region,
8326         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
8327         arh_to_landing_pad, arh_to_label, add_action_record,
8328         add_call_site, switch_to_exception_section): Likewise.
8329         * expmed.c (synth_mult): Likewise.
8330         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
8331         store_expr): Likewise.
8332         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
8333         Likewise.
8334         * function.c (assign_stack_temp_for_type,
8335         allocate_struct_function, match_asm_constraints_1): Likewise.
8336         * gcov-io.c (gcov_allocate): Likewise.
8337         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
8338         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
8339         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
8340         record_one_set, insert_expr_in_table, insert_set_in_table,
8341         dump_hash_table, compute_hash_table_work, alloc_hash_table,
8342         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
8343         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
8344         -Wcast-qual warnings.
8345
8346 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8347
8348         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
8349         -Wcast-qual warnings.
8350         * gcc.c (process_command): Likewise.
8351         * genattrtab.c (oballoc): Use XOBNEW.
8352         (oballocvec): Define.
8353         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
8354         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
8355         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
8356         -Wc++-compat and/or -Wcast-qual warnings.
8357         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
8358         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
8359         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
8360         gen_presence_absence_set, gen_automaton, gen_regexp_el,
8361         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
8362         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
8363         add_excls, process_presence_absence_names,
8364         process_presence_absence_patterns, add_presence_absence,
8365         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
8366         get_free_state, add_arc, get_free_automata_list_el,
8367         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
8368         transform_3, cache_presence, create_ainsns, create_automata,
8369         create_state_ainsn_table, dfa_insn_code_enlarge,
8370         output_trans_func, output_min_issue_delay_func,
8371         output_dead_lock_func, output_reset_func,
8372         output_get_cpu_unit_code_func, output_dfa_start_func,
8373         expand_automata): Likewise.
8374         * genextract.c (gen_insn): Likewise.
8375         * gengtype-lex.l: Likewise.
8376         * gengtype.c (read_input_list, adjust_field_type,
8377         process_gc_options): Likewise.
8378         * genoutput.c (note_constraint): Likewise.
8379         * genpreds.c (mangle, add_constraint): Likewise.
8380         * genrecog.c (process_define_predicate, new_decision,
8381         add_to_sequence): Likewise.
8382         * gensupport.c (record_insn_name): Likewise.
8383
8384 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8385
8386         * config/i386/driver-i386.c (detect_caches_amd,
8387         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
8388         and/or -Wcast-qual warnings.
8389         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
8390         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
8391         gt_pch_save): Likewise.
8392         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
8393         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
8394         * global.c (compute_regsets): Likewise.
8395         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
8396         finish_graph_dump_file): Likewise.
8397         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
8398         unlink_bb_notes): Likewise.
8399         * integrate.c (get_hard_reg_initial_val): Likewise.
8400         * ipa-prop.c (ipa_push_func_to_list): Likewise.
8401         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
8402         * local-alloc.c (update_equiv_regs): Likewise.
8403         * loop-invariant.c (check_invariant_table_size,
8404         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
8405         Likewise.
8406         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
8407         altered_reg_used, mark_altered): Likewise.
8408         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
8409         insert_var_expansion_initialization,
8410         combine_var_copies_in_loop_exit, apply_opt_in_copies,
8411         release_var_copies): Likewise.
8412         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
8413         analyze_matrix_decl, add_allocation_site, analyze_transpose,
8414         analyze_accesses_for_phi_node, check_var_notmodified_p,
8415         check_allocation_function, find_sites_in_func,
8416         record_all_accesses_in_func, transform_access_sites,
8417         transform_allocation_sites): Likewise.
8418         * omp-low.c (new_omp_region, create_omp_child_function_name,
8419         check_omp_nesting_restrictions, check_combined_parallel,
8420         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
8421         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
8422         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
8423         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
8424         Likewise.
8425         * opts-common.c (prune_options): Likewise.
8426         * opts.c (add_input_filename, print_filtered_help,
8427         get_option_state): Likewise.
8428         * params.c (add_params): Likewise.
8429         * passes.c (set_pass_for_id, next_pass_1,
8430         do_per_function_toporder, pass_fini_dump_file): Likewise.
8431         * postreload.c (reload_cse_simplify_operands): Likewise.
8432         * predict.c (tree_predicted_by_p, tree_predict_edge,
8433         clear_bb_predictions, combine_predictions_for_bb): Likewise.
8434
8435 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8436
8437         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
8438         warnings.
8439         * recog.c (check_asm_operands, validate_change_1): Likewise.
8440         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
8441         subst_asm_stack_regs): Likewise.
8442         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
8443         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
8444         * regmove.c (reg_is_remote_constant_p): Likewise.
8445         * regrename.c (regrename_optimize, scan_rtx_reg,
8446         kill_clobbered_value, kill_set_value, kill_autoinc_value):
8447         Likewise.
8448         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
8449         regstat_compute_calls_crossed): Likewise.
8450         * reload1.c (init_reload, new_insn_chain,
8451         has_nonexceptional_receiver, reload, copy_reloads,
8452         calculate_needs_all_insns, init_elim_table): Likewise.
8453         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
8454         * rtl.c (shallow_copy_rtx_stat): Likewise.
8455         * rtlanal.c (parms_set): Likewise.
8456         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
8457         sbitmap_resize, sbitmap_vector_alloc): Likewise.
8458         * sched-ebb.c (earliest_block_with_similiar_load,
8459         add_deps_for_risky_insns): Likewise.
8460         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
8461         schedule_region): Likewise.
8462         * see.c (eq_descriptor_pre_extension,
8463         hash_descriptor_pre_extension, hash_del_pre_extension,
8464         eq_descriptor_properties, hash_descriptor_properties,
8465         hash_del_properties, see_seek_pre_extension_expr,
8466         see_initialize_data_structures, see_print_register_properties,
8467         see_print_pre_extension_expr, see_delete_merged_def_extension,
8468         see_delete_unmerged_def_extension, see_emit_use_extension,
8469         see_pre_delete_extension, see_map_extension, see_commit_changes,
8470         see_analyze_merged_def_local_prop,
8471         see_analyze_merged_def_local_prop,
8472         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
8473         see_set_prop_merged_def, see_set_prop_unmerged_def,
8474         see_set_prop_unmerged_use, see_print_one_extension,
8475         see_merge_one_use_extension, see_merge_one_def_extension,
8476         see_store_reference_and_extension, see_update_uses_relevancy,
8477         see_update_defs_relevancy): Likewise.
8478         * statistics.c (hash_statistics_hash, hash_statistics_eq,
8479         hash_statistics_free, curr_statistics_hash): Likewise.
8480         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
8481         expand_asm_operands, expand_return, case_bit_test_cmp,
8482         expand_case): Likewise.
8483         * stor-layout.c (start_record_layout): Likewise.
8484         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
8485         gt_pch_save_stringpool): Likewise.
8486         * tree-data-ref.c (hash_stmt_vertex_info,
8487         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
8488         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
8489
8490 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
8491
8492         PR target/36627
8493         * config/i386/i386.md : Change constraints of HImode and QImode
8494         immediate operands from "i" to "n".  Change SImode "ni" constraint to
8495         "i" and SImode "rmi" constraint to "g".  Remove all constraints
8496         from const0_operand and const1_operand predicated operands.
8497         (i): Change QImode and HImode attribute from "i" to "n".
8498         (*subqi_2): Change HImode operands to QImode.
8499         (*subqi_3): Ditto.
8500
8501 2008-06-25  Olivier Hainque  <hainque@adacore.com>
8502
8503         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
8504         sed substitutions.
8505
8506 2008-06-25  Richard Guenther  <rguenther@suse.de>
8507
8508         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
8509         not overflow the result type.
8510
8511 2008-06-25  Richard Guenther  <rguenther@suse.de>
8512
8513         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
8514         (vn_lookup): Likewise.
8515
8516 2008-06-25  Richard Guenther  <rguenther@suse.de>
8517
8518         PR tree-optimization/35518
8519         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
8520         * tree-sra.c (instantiate_element): Use fold_build3 to build
8521         BIT_FIELD_REFs.
8522         (try_instantiate_multiple_fields): Likewise.
8523
8524 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8525
8526         * config/rs6000/rs6000.md: Change all string instruction's clobber to
8527         be early clobbers.
8528
8529 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8530
8531         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
8532         use_backchain_to_restore_sp to true
8533         if the offset of the link register save area would go over the 32k - 1
8534         offset limit of the load
8535         instructions.
8536
8537 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
8538
8539         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
8540         anchor for the type-punning blurb.  Cross-reference "Structures
8541         unions enumerations and bit-fields implementation".  Provide a
8542         cast-through-pointer example.  Make final sentence self-contained.
8543         * doc/implement-c.texi (Structures unions enumerations and
8544         bit-fields implementation): Cross-reference the type-punning blurb
8545         in the -fstrict-aliasing documentation.
8546
8547 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8548
8549         PR middle-end/36594
8550         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
8551         the memory instead of the memory itself for the save area.
8552
8553 2008-06-24  Olivier Hainque  <hainque@adacore.com>
8554             Nicolas Roche  <roche@adacore.com>
8555
8556         * gengtype.c (srcdir_len): size_t instead of int.
8557         (get_file_realbasename): New function.  For F a filename, the real
8558         basename of F, with all the path components stripped.
8559         (get_file_srcdir_relative_path): New function.  For F a filename, the
8560         relative path to F from $(srcdir).
8561         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
8562         get_file_realbasename.  Adjust the head comment.
8563         (get_prefix_langdir_index): New function. For F a filename, return the
8564         lang_dir_names[] relative index of the language directory that is
8565         a prefix in F.
8566         (get_file_langdir): For F a filename, return the name of the language
8567         directory where F is located.
8568         (get_file_gtfilename): New function. The gt- output file name for an
8569         input filename F.
8570         (get_output_file_with_visibility): Replace in-line computations with
8571         uses of get_file_gtfilename and get_prefix_langdir_index.
8572         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
8573
8574 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
8575
8576         PR tree-optimization/36504
8577         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
8578         references without base address.
8579
8580 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
8581
8582         PR middle-end/36584
8583         * calls.c (expand_call): Increase alignment for recursive functions.
8584
8585 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
8586
8587         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
8588         (TARGET_FUNCTION_VALUE): New define.
8589         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
8590         * config/avr/avr.h (FUNCTION_VALUE): Remove.
8591
8592 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
8593
8594         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
8595         (fmod<mode>3): Ditto.
8596         (remainderxf3): Ditto.
8597         (remainder<mode>3): Ditto.
8598
8599 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
8600
8601         PR target/36533
8602         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
8603         REG is a hard register.
8604
8605         PR tree-optimization/36508
8606         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
8607         499, don't check it at all in release compilers.
8608
8609 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
8610
8611         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
8612         together with SSE_TARGET_MATH to disable insn pattern.
8613         (*fop_<MODEF:mode>_2_i387): Ditto.
8614         (*fop_<MODEF:mode>_3_i387): Ditto.
8615
8616 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
8617
8618         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
8619
8620 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
8621
8622         PR middle-end/34906
8623         * gimplify.c (gimplify_asm_expr): Check the return code of
8624         parse_output_constraint call, set function return and is_inout
8625         value if it failed.
8626
8627 2008-06-22  Ian Lance Taylor  <iant@google.com>
8628
8629         * c-lex.c (narrowest_unsigned_type): Change itk to int.
8630         (narrowest_signed_type): Likewise.
8631         * c-typeck.c (c_common_type): Change local variable mclass to enum
8632         mode_class, twice.
8633         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
8634         tcc_comparison, not the tree code itself.
8635         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
8636         (c_expand_expr): Cast modifier to enum expand_modifier.
8637         * c-common.h (C_RID_CODE): Add casts.
8638         (C_SET_RID_CODE): Define.
8639         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
8640         (c_lex_one_token): Add cast to avoid warning.
8641         (c_parser_objc_type_name): Rename local typename to type_name.
8642         (check_no_duplicate_clause): Change code parameter to enum
8643         omp_clause_code.
8644         (c_parser_omp_var_list_parens): Change kind parameter to enum
8645         omp_clause_code.
8646         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
8647         c_parser_omp_list_var_parens.
8648         (c_parser_omp_threadprivate): Likewise.
8649         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
8650         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
8651         * c-format.c (NO_FMT): Define.
8652         (printf_length_specs): Use NO_FMT.
8653         (asm_fprintf_length_specs): Likewise.
8654         (gcc_diag_length_specs): Likewise.
8655         (scanf_length_specs): Likewise.
8656         (strfmon_length_specs): Likewise.
8657         (gcc_gfc_length_specs): Likewise.
8658         (printf_flag_specs): Change 0 to STD_C89.
8659         (asm_fprintf_flag_specs): Likewise.
8660         (gcc_diag_flag_specs): Likewise.
8661         (gcc_cxxdiag_flag_specs): Likewise.
8662         (scanf_flag_specs): Likewise.
8663         (strftime_flag_specs): Likewise.
8664         (strfmon_flag_specs): Likewise.
8665         (print_char_table): Likewise.
8666         (asm_fprintf_char_table): Likewise.
8667         (gcc_diag_char_table): Likewise.
8668         (gcc_tdiag_char_table): Likewise.
8669         (gcc_cdiag_char_table): Likewise.
8670         (gcc_cxxdiag_char_table): Likewise.
8671         (gcc_gfc_char_table): Likewise.
8672         (scan_char_table): Likewise.
8673         (time_char_table): Likewis.
8674         (monetary_char_table): Likewise.
8675         * c-format.h (BADLEN): Likewise.
8676
8677 2008-06-21  Ian Lance Taylor  <iant@google.com>
8678
8679         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
8680         Define END_OF_BASE_TREE_CODES around inclusion.
8681         * tree.c (tree_code_type): New global array.
8682         (tree_code_length, tree_code_name): Likewise.
8683         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
8684         $(lang_tree_files).
8685         (all-tree.def, s-alltree): New targets.
8686         (gencheck.h, s-gencheck): Remove.
8687         (tree.o): Depend upon all-tree.def.
8688         (build/gencheck.o): Remove gencheck.h dependency.
8689         (mostlyclean): Don't remove gencheck.h.
8690         * c-common.h (enum c_tree_code): Remove.
8691         * c-lang.c (tree_code_type): Remove.
8692         (tree_code_length, tree_code_name): Remove.
8693         * gencheck.c (tree_codes): Include all-tree.def, rather than
8694         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
8695         after it is used.
8696         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
8697         than tree.def.
8698         * cp/cp-tree.h (enum cplus_tree_code): Remove.
8699         (operator_name_info): Size to MAX_TREE_CODES.
8700         (assignment_operator_name_info): Likewise.
8701         * cp/cp-lang.c (tree_code_type): Remove.
8702         (tree_code_length, tree_code_name): Remove.
8703         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
8704         (assignment_operator_name_info): Likewise.
8705         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
8706         MAX_TREE_CODES.
8707         * cp/mangle.c (write_expression): Likewise.
8708         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
8709         * fortran/f95-lang.c (tree_code_type): Remove.
8710         (tree_code_length, tree_code_name): Remove.
8711         * java/java-tree.h (enum java_tree_code): Remove.
8712         * java/lang.c (tree_code_type): Remove.
8713         (tree_code_length, tree_code_name): Remove.
8714         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
8715         * objc/objc-act.h (enum objc_tree_code): Remove.
8716         * objc/objc-lang.c (tree_code_type): Remove.
8717         (tree_code_length, tree_code_name): Remove.
8718         * objcp/objcp-lang.c (tree_code_type): Remove.
8719         (tree_code_length, tree_code_name): Remove.
8720         * ada/ada-tree.h (enum gnat_tree_code): Remove.
8721         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
8722         * ada/misc.c (tree_code_type): Remove.
8723         (tree_code_length, tree_code_name): Remove.
8724
8725 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
8726
8727         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
8728         the grand_bitmap_obstack.
8729
8730 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8731
8732         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
8733         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
8734         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
8735         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
8736         move_stmt_r, new_label_mapper): Likewise.
8737         * tree-complex.c (cvc_lookup): Likewise.
8738         * tree-dfa.c (create_function_ann): Likewise.
8739         * tree-dump.c (dump_register): Likewise.
8740         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
8741         find_phi_replacement_condition): Likewise.
8742         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
8743         tree_function_versioning): Likewise.
8744         * tree-into-ssa.c (cmp_dfsnum): Likewise.
8745         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
8746         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
8747         get_nonlocal_debug_decl, convert_nonlocal_reference,
8748         convert_nonlocal_omp_clauses, get_local_debug_decl,
8749         convert_local_reference, convert_local_omp_clauses,
8750         convert_nl_goto_reference, convert_nl_goto_receiver,
8751         convert_tramp_reference, convert_call_expr): Likewise.
8752         * tree-outof-ssa.c (contains_tree_r): Likewise.
8753         * tree-parloops.c (reduction_phi, initialize_reductions,
8754         eliminate_local_variables_1, add_field_for_reduction,
8755         add_field_for_name, create_phi_for_local_result,
8756         create_call_for_reduction_1, create_loads_for_reductions,
8757         create_stores_for_reduction, create_loads_and_stores_for_name):
8758         Likewise.
8759         * tree-phinodes.c (allocate_phi_node): Likewise.
8760         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
8761         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
8762         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
8763         * tree-ssa-coalesce.c (compare_pairs): Likewise.
8764         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
8765         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
8766         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
8767         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
8768         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
8769         vn_nary_op_insert): Likewise.
8770         * tree-ssa.c (redirect_edge_var_map_add,
8771         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
8772         * tree-vectorizer.c (vectorize_loops): Likewise.
8773         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
8774         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
8775         tree_cons_stat, build1_stat, build_variant_type_copy,
8776         decl_init_priority_lookup, decl_fini_priority_lookup,
8777         decl_priority_info, decl_restrict_base_lookup,
8778         decl_restrict_base_insert, decl_debug_expr_lookup,
8779         decl_debug_expr_insert, decl_value_expr_lookup,
8780         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
8781         type_hash_add, get_file_function_name, tree_check_failed,
8782         tree_not_check_failed, tree_range_check_failed,
8783         omp_clause_range_check_failed, build_omp_clause,
8784         build_vl_exp_stat): Likewise.
8785         * value-prof.c (gimple_histogram_value,
8786         gimple_duplicate_stmt_histograms): Likewise.
8787         * var-tracking.c (attrs_list_insert, attrs_list_copy,
8788         unshare_variable, variable_union_info_cmp_pos, variable_union,
8789         dataflow_set_different_1, dataflow_set_different_2,
8790         vt_find_locations, variable_was_changed, set_variable_part,
8791         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
8792         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
8793         section_entry_hash, object_block_entry_eq,
8794         object_block_entry_hash, create_block_symbol,
8795         initialize_cold_section_name, default_function_rodata_section,
8796         strip_reg_name, set_user_assembler_name, const_desc_eq,
8797         build_constant_desc, output_constant_def, lookup_constant_def,
8798         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
8799         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
8800         default_internal_label): Likewise.
8801         * varray.c (varray_init, varray_grow): Likewise.
8802         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
8803
8804 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
8805
8806         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
8807         operators for "test" insn.  Macroize insn using SWI mode macro.
8808         (*jcc_fused_2): Ditto.
8809         (*jcc_fused_3): Macroize insn using SWI mode macro.
8810         (*jcc_fused_4): Ditto.
8811
8812 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
8813
8814         * tree-ssa-pre.c: Fix typo in comment.
8815         (init_antic, fini_antic): Add explicit funtions for
8816         initializing and deinitializing ANTIC and AVAIL sets.
8817         (create_expression_by_pieces): Fix typo in comment.
8818         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
8819         (execute_pre): Eventually dump details about ANTIC_IN.
8820
8821 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8822
8823         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
8824         * gcc.c (translate_options, init_spec, store_arg, read_specs,
8825         add_to_obstack, file_at_path, find_a_file, execute,
8826         add_preprocessor_option, add_assembler_option, add_linker_option,
8827         process_command, insert_wrapper, do_option_spec, do_self_spec,
8828         spec_path, do_spec_1, is_directory, main, used_arg,
8829         getenv_spec_function): Likewise.
8830         * tlink.c (symbol_hash_lookup, file_hash_lookup,
8831         demangled_hash_lookup, symbol_push, file_push, frob_extension):
8832         Likewise.
8833
8834 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
8835
8836         * doc/rtl.texi: Updated subreg section.
8837
8838 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
8839
8840         PR c++/36523
8841         * cgraphunit.c (cgraph_process_new_functions): Don't clear
8842         node->needed and node->reachable.
8843         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
8844         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
8845         (expand_task_call): Don't call expand_task_copyfn.
8846         (expand_task_copyfn): Renamed to...
8847         (finalize_task_copyfn): ... this.
8848
8849 2008-06-19  Jan Hubicka  <jh@suse.cz>
8850
8851         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
8852         clobbering framepointer.
8853
8854 2008-06-19  Jan Hubicka  <jh@suse.cz>
8855
8856         * tree-optimize.c (execute_early_local_optimizations): Set
8857         cgraph_state only at first invocation.
8858
8859 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8860
8861         * system.h (-Wc++-compat): Activate as a warning, no an error.
8862
8863 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
8864
8865         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
8866         instead of "#" in insn asm template.
8867         (*jcc_fused_2): Ditto.
8868
8869 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
8870
8871         * config/i386/i386.h (ix86_tune_indices)
8872         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
8873         (TARGET_FUSE_CMP_AND_BRANCH): New define.
8874         * config/i386/i386.md (*jcc_fused_1): New insn pattern
8875         (*jcc_fused_2): Ditto.
8876         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
8877         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
8878         (print operand): Handle 'E' and 'e' code.
8879
8880 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
8881
8882         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
8883         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
8884         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
8885
8886 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
8887
8888         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
8889         node->decl.
8890         (cgraph_expand_function): Use local copy of decl.
8891         (cgraph_expand_all_functions): Remove redundant initialization of
8892         order_pos.
8893         (cgraph_optimize): Reword internal_error message.
8894
8895 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
8896
8897         * arm-protos.h (arm_return_in_memory): Remove public
8898         arm_return_in_memory() prototype.
8899         * arm.c (arm_return_in_memory): Add static prototype, add target
8900         hook macro, change definition and comments.
8901         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
8902
8903 2008-06-19  Ben Elliston  <bje@au.ibm.com>
8904
8905         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
8906         real.c: Remove references to IEEE 754R.
8907         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
8908         * doc/libgcc.texi (Decimal float library routines): Likewise.
8909
8910 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8911
8912         * targhooks.h (struct gcc_target): New member unwind_word_mode.
8913         (default_unwind_word_mode): Add prototype.
8914         * targhooks.c (default_unwind_word_mode): New function.
8915         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
8916         instead of word_mode.
8917         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
8918         (TARGET_INITIALIZER): Use it.
8919
8920         * c-common.c (handle_mode_attribute): Support "unwind_word"
8921         mode attribute.
8922         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
8923
8924         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
8925         word_mode to access SjLj_Function_Context member "data".
8926         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
8927         conversion from targetm.eh_return_filter_mode () to
8928         targetm.unwind_word_mode () if they differ.
8929
8930         * builtin-types.def (BT_UNWINDWORD): New primitive type.
8931         (BT_FN_UNWINDWORD_PTR): New function type.
8932         (BT_FN_WORD_PTR): Remove.
8933         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
8934         * except.c (expand_builtin_extend_pointer): Convert pointer to
8935         targetm.unwind_word_mode () instead of word_mode.
8936
8937         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
8938         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
8939         (spu_unwind_word_mode): New function.
8940         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
8941         (TARGET_UNWIND_WORD_MODE): Define.
8942         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
8943
8944 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8945
8946         * config/spu/spu.c (reg_align): Remove.
8947         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
8948         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
8949         (spu_split_store): Likewise.
8950
8951 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
8952
8953         * gcc/tree-vn.c: Fix typo in comment.
8954
8955 2008-06-18  Jan Hubicka  <jh@suse.cz>
8956
8957         * cgraphunit.c (cgraph_optimize): Output debug info when doing
8958         toplevel reorder too.
8959
8960 2008-06-18  Jan Hubicka  <jh@suse.cz>
8961
8962         * c-opts.c (c_common_post_options): PCH is not compatible with
8963         no-unit-at-a-time.
8964         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
8965         -fno-toplevel-reorder by default now.
8966
8967 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8968
8969         PR documentation/30739
8970         * doc/install.texi (Prerequisites): Document dependency on awk.
8971
8972 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
8973             Ian Lance Taylor  <iant@google.com>
8974
8975         PR rtl-optimization/35604
8976         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
8977         only want to change jump destinations, not eventual label comparisons.
8978
8979 2008-06-16  Jan Hubicka  <jh@suse.cz>
8980
8981         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
8982         syntax errors.
8983         (cgraph_analyze_function): Likewise.
8984
8985 2008-06-16  Jan Hubicka  <jh@suse.cz>
8986
8987         * cgraph.h (cgraph_mark_if_needed): New function.
8988         * cgraphunit.c (cgraph_mark_if_needed): New function.
8989         * c-decl.c (duplicate_decl): Use it.
8990
8991 2008-06-16  Jan Hubicka  <jh@suse.cz>
8992
8993         * cgraph.c (cgraph_add_new_function): When in expansion state, do
8994         lowering.
8995
8996 2008-06-16  Jan Hubicka  <jh@suse.cz>
8997
8998         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
8999
9000 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
9001             Kazu Hirata  <kazu@codesourcery.com>
9002             Maxim Kuvyrkov  <maxim@codesourcery.com
9003
9004         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
9005         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
9006         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
9007         EXTRA_SPEC_FUNCTIONS.
9008         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
9009         (DRIVER_SELF_SPECS): Adjust.
9010         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
9011         * config/mips/st.h, config/mips/t-st: New.
9012         * config/mips/driver-native.c, config/mips/x-native: New.
9013         * doc/invoke.texi (MIPS): Document 'native' value for -march and
9014         -mtune options.
9015
9016 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
9017
9018         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
9019         from it.
9020         (ISA_HAS_FP_CONDMOVE): New macro.
9021         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
9022         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
9023         (ISA_HAS_NMADD3_NMSUB3): New macro.
9024         * config/mips/mips.c (mips_rtx_costs): Update.
9025         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
9026         compiling for ST Loongson 2E/2F.
9027         (madd<mode>): Rename to madd4<mode>.  Update.
9028         (madd3<mode>): New pattern.
9029         (msub<mode>): Rename to msub4<mode>.  Update.
9030         (msub3<mode>): New pattern.
9031         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
9032         (nmadd3<mode>): New pattern.
9033         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
9034         (nmadd3<mode>_fastmath): New pattern.
9035         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
9036         (nmsub3<mode>): New pattern.
9037         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
9038         (nmsub3<mode>_fastmath): New pattern.
9039         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
9040
9041 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
9042
9043         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
9044         (DF_REF_INSN_INFO): New.
9045         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
9046         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
9047         with a NULL DF_REF_INSN_INFO.
9048         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
9049         DF_INSN_SET.
9050         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
9051         DF_INSN_INFO_EQ_USES): New.
9052         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
9053         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
9054         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
9055         * df-core.c: Update comment for above changes.
9056         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
9057         DF_INSN_UID_* macros.
9058         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
9059         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
9060         insn rtx.  Update all callers.
9061         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
9062         df_ref_create_structure, df_insn_refs_collect): Likewise.
9063         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
9064         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
9065         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
9066         macros to access the insn refs.
9067         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
9068         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
9069         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
9070         for accessing the refs.
9071         (try_fwprop_subst): Likewise.
9072         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
9073         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
9074         for accessing the refs.
9075         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
9076         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
9077         to look at the insn refs.
9078         (record_uses): Likewise.
9079         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
9080         function anymore.
9081         (mark_artificial_uses): Don't mark_insn for artificial refs.
9082         (mark_reg_rependencies): Likewise.
9083
9084         * doc/rtl.texi: Remove documentation of ADDRESSOF.
9085
9086 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9087
9088         * configure: Regenerate.
9089
9090 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
9091
9092         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
9093         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
9094         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
9095
9096 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
9097
9098         * config/avr/avr.c (avr_mcu_t): Add attiny167.
9099         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
9100         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
9101
9102 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
9103
9104         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
9105         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
9106         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
9107
9108 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
9109
9110         * tree-ssa-sccvn.c: Fix format of comments.
9111
9112 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
9113
9114         * cgraph.c: Remove unneeded forward declarations of eq_node()
9115         and hash_node().
9116
9117 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
9118
9119         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
9120         REG_RETVAL notes.
9121         (see_update_relevancy): Likewise.
9122         * fwprop.c (try_fwprop_subst): Likewise.
9123         * rtlanal.c (noop_move_p): Likewise.
9124         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
9125         notes to non-existing libcall blocks.
9126         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
9127         Remove orig_set.
9128         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
9129         (dead_libcall_p): Remove.
9130         (delete_trivially_dead_insns): Don't use it.
9131         * web.c (union_defs): Remove comment about keeping nops.
9132         * gcse.c (hash_scan_insn): Don't take libcall pointers.
9133         (compute_hash_table_work): Don't track libcall notes.
9134         (do_local_cprop): Don't take libcall pointers.  Don't update
9135         libcall notes.
9136         (adjust_libcall_notes): Deleted.
9137         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
9138         ever have existed in the first place).
9139         (replace_store_insn): Don't try to remove libcall notes.
9140         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
9141         (resolve_reg_notes): Don't call them.
9142         (resolve_simple_move): Likewise.
9143         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
9144         Don't remove REG_RETVAL notes.
9145         * emit-rtl.c (try_split): Don't update libcall notes.
9146         (emit_copy_of_insn_after): Dito.
9147         * cselib.c (cselib_current_insn_in_libcall): Remove.
9148         (cselib_process_insn): Don't set/clear it.
9149         (new_elt_loc_list): Don't record it.
9150         (cselib_init): Don't initialize it.
9151         * cselib.c (struct elt_loc_list): Remove in_libcall field.
9152         * loop-invariant.c (find_invariant_insn): Don't look for libcall
9153         notes.
9154         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
9155         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
9156         (init_deps): Don't initialize it.
9157         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
9158         * combine.c (delete_noop_moves): Don't update libcall notes.
9159         (can_combine_p): Remove now pointless #if 0 block.
9160         (try_combine): Remove another obsolete #if 0 block.
9161         (distribute_notes): Don't distribute libcall notes.
9162         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
9163         * dce.c (libcall_dead_p): Remove.
9164         (delete_unmarked_insns): Don't handle libcall blocks.
9165         (preserve_libcall_for_dce): Remove.
9166         (prescan_insns_for_dce): Don't special-case libcall block insns.
9167         * reload1 (reload): Don't handle libcall notes.
9168         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
9169         documentation.
9170
9171 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
9172
9173         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
9174         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
9175         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
9176
9177 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
9178
9179         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
9180         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
9181         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
9182
9183 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9184
9185         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
9186
9187 2008-06-16  Ira Rosen  <irar@il.ibm.com>
9188
9189         PR tree-optimization/36493
9190         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
9191         the arguments list. Use VECTYPE to create vector pointer.
9192         (vectorizable_store): Fail if accesses through a pointer to vectype
9193         do not alias the original memory reference operands.
9194         Call vect_create_data_ref_ptr without the removed argument.
9195         (vectorizable_load): Likewise.
9196         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
9197         removed argument.
9198
9199 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
9200
9201         PR target/36336
9202         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
9203         reg_equiv_constant.
9204
9205 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
9206
9207         * config/mips/loongson2ef.md: New file.
9208         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
9209         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
9210         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
9211         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
9212         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
9213         and loongson_2f.
9214         (loongson2ef.md): New include.
9215         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
9216         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
9217         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
9218         (loongson_gt_<mode>, loongson_extract_halfword)
9219         (loongson_insert_halfword_0, loongson_insert_halfword_2)
9220         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
9221         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
9222         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
9223         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
9224         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
9225         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
9226         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
9227         (vec_interleave_low<mode>): Define type attribute.
9228         * config/mips/mips.c (mips_ls2): New static variable.
9229         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
9230         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
9231         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
9232         Implement target scheduling hooks.
9233         (mips_multipass_dfa_lookahead): Update to handle tuning for
9234         Loongson 2E/2F.
9235         (mips_sched_init): Initialize data for Loongson scheduling.
9236         (mips_ls2_variable_issue): New static function.
9237         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
9238         Add sanity check.
9239         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
9240         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
9241         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
9242         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
9243         Handle ST Loongson 2E/2F cores.
9244         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
9245
9246 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9247
9248         * omp-low.c (extract_omp_for_data): Fix comment typo.
9249         * c.opt: Fix typo.
9250
9251 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9252
9253         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
9254         FIXME note about gcc/config.guess.
9255         * doc/options.texi (Option file format): Remove non-ASCII bytes.
9256         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
9257         * doc/cppopts.texi: Likewise.
9258         * doc/extend.texi: Likewise.
9259         * doc/gcc.texi: Likewise.
9260         * doc/gccint.texi: Likewise.
9261         * doc/gcov.texi: Likewise.
9262         * doc/gty.texi: Likewise.
9263         * doc/hostconfig.texi: Likewise.
9264         * doc/install.texi: Likewise.
9265         * doc/invoke.texi: Likewise.
9266         * doc/loop.texi: Likewise.
9267         * doc/makefile.texi: Likewise.
9268         * doc/md.texi: Likewise.
9269         * doc/passes.texi: Likewise.
9270         * doc/tm.texi: Likewise.
9271         * doc/tree-ssa.texi: Likewise.
9272         * doc/trouble.texi: Likewise.
9273
9274 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
9275             Nathan Sidwell  <nathan@codesourcery.com>
9276             Maxim Kuvyrkov  <maxim@codesourcery.com>
9277             Richard Sandiford  <rdsandiford@googlemail.com>
9278
9279         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
9280         * config/mips/mips-protos.h (mips_expand_vector_init): New.
9281         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
9282         builtins.
9283         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
9284         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
9285         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
9286         V8QImode cases.
9287         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
9288         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
9289         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
9290         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
9291         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
9292         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
9293         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
9294         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
9295         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
9296         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
9297         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
9298         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
9299         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
9300         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
9301         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
9302         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
9303         (mips_builtins): Add Loongson builtins.
9304         (mips_loongson_2ef_bdesc): New.
9305         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
9306         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
9307         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
9308         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
9309         New.
9310         (mips_expand_vector_init): New.
9311         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
9312         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
9313         if appropriate.
9314         * config/mips/mips.md: Add unspec numbers for Loongson
9315         builtins.  Include loongson.md.
9316         (MOVE64): Include Loongson vector modes.
9317         (SPLITF): Include Loongson vector modes.
9318         (HALFMODE): Handle Loongson vector modes.
9319         * config/mips/loongson.md: New.
9320         * config/mips/loongson.h: New.
9321         * config.gcc: Add loongson.h header for mips*-*-* targets.
9322         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
9323
9324 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
9325
9326         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
9327         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
9328         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
9329         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
9330         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
9331         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
9332         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
9333         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
9334         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
9335         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
9336         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
9337         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
9338         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
9339         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
9340         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
9341         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
9342         Remove use_fixproto=yes.
9343         (ia64*-*-hpux*): Remove comment about using fixproto.
9344         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
9345
9346 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9347
9348         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
9349         library rebuilds.
9350         * configure: Regenerate.
9351
9352 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
9353
9354         PR middle-end/36520
9355         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
9356         before evaluating it.
9357
9358 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
9359
9360         PR c/36507
9361         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
9362         nested inline functions.
9363         (start_decl, start_function): Don't invert DECL_EXTERNAL
9364         for nested inline functions.
9365
9366 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
9367
9368         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
9369         splits that must be made for correctness.
9370
9371 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
9372
9373         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
9374         (AVAIL_NON_MIPS16): Likewise.
9375         (mips_builtin_description): Replace target_flags with a predicate.
9376         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
9377         (dspr2_32): New availability predicates.
9378         (MIPS_BUILTIN): New macro.
9379         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
9380         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
9381         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
9382         Replace the TARGET_FLAGS parameters with AVAIL parameters.
9383         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
9384         (mips_dsp_32only_bdesc): Merge into...
9385         (mips_builtins): ...this new array.
9386         (mips_bdesc_map, mips_bdesc_arrays): Delete.
9387         (mips_init_builtins): Update after above changes.
9388         (mips_expand_builtin_1): Merge into...
9389         (mips_expand_builtin): ...here and update after above changes.
9390
9391 2008-06-12  Paul Brook  <paul@codesourcery.com>
9392
9393         * longlong.h (__arm__): Define count_leading_zeros.
9394         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
9395         (clzsi2, clzdi2): New functions.
9396         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
9397         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
9398         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
9399         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
9400         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
9401         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
9402         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
9403         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
9404         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
9405         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
9406
9407 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
9408
9409         * config/m68k/m68k.c (m68k_tune_flags): New.
9410         (override_options): Compute m68k_tune_flags.
9411         (MULL_COST, MULW_COST): Update for various variants of CFV2.
9412         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
9413
9414 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
9415
9416         PR middle-end/36506
9417         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
9418
9419 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
9420
9421         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
9422         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
9423
9424 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
9425
9426         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
9427         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
9428
9429 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
9430
9431         PR middle-end/36506
9432         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
9433         reductions.
9434
9435 2008-06-12  Richard Guenther  <rguenther@suse.de>
9436
9437         PR tree-optimization/36345
9438         * tree-flow.h (struct ptr_info_def): Align escape_mask,
9439         add memory_tag_needed flag.
9440         (may_alias_p): Declare.
9441         * tree-ssa-alias.c (may_alias_p): Export.
9442         (set_initial_properties): Use memory_tag_needed flag.
9443         (update_reference_counts): Likewise.
9444         (reset_alias_info): Reset memory_tag_needed flag.
9445         (create_name_tags): Check memory_tag_needed flag.
9446         (dump_points_to_info_for): Dump it.
9447         * tree-ssa-structalias.c (struct variable_info): Remove
9448         directly_dereferenced flag.
9449         (new_var_info): Do not initialize it.
9450         (process_constraint_1): Do not set it.
9451         (update_alias_info): Set is_dereferenced flag.
9452         (set_uids_in_ptset): Use may_alias_p.
9453         (set_used_smts): Check memory_tag_needed flag.
9454         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
9455         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
9456         memory_tag_needed flag.
9457         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
9458         from broken design.
9459
9460 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
9461
9462         * config/i386/i386.c (ix86_compute_frame_layout): Disable
9463         red zone for w64 abi.
9464         (ix86_expand_prologue): Likewise.
9465         (ix86_force_to_memory): Likewise.
9466         (ix86_free_from_memory): Likewise.
9467
9468 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
9469
9470         PR target/36425
9471         * config/rs6000/rs6000.c (rs6000_override_options): Set
9472         rs6000_isel conditionally to the absence of comand line override.
9473         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
9474         Remove duplicate rs6000_isel setting.
9475         * config/rs6000/eabispe.h: Ditto.
9476
9477 2008-06-11  Richard Guenther  <rguenther@suse.de>
9478
9479         * alias.c (get_alias_set): Use the element alias-set for arrays.
9480         (record_component_aliases): For arrays and vectors do nothing.
9481         * c-common.c (strict_aliasing_warning): Handle the cases
9482         of alias set zero explicitly.
9483         * Makefile.in (dfp.o-warn): Add -Wno-error.
9484
9485 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
9486
9487         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
9488         tune_32 tune_64.
9489         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
9490         tune_32 tune_64 to supported_defaults.  Allow values not
9491         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
9492         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
9493         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
9494         with_cpu_64 to generic for 64-bit-supporting configurations, not
9495         with_cpu.  Remove FIXMEs.
9496         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
9497         --with-arch-64, --with-tune-32, --with-tune-64): Document.
9498         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
9499         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
9500         arch_32 and arch_64.
9501
9502 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
9503             Olivier Hainque  <hainque@adacore.com>
9504
9505         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
9506         Use DECL_SIZE_UNIT to retrieve the size of the field.
9507
9508 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
9509
9510         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
9511         with function calls after declarations.  Lay out
9512         neon_float_type_node before further use.
9513
9514 2008-06-11  Richard Guenther  <rguenther@suse.de>
9515
9516         * tree-flow.h (may_point_to_global_var): Declare.
9517         * tree-ssa-alias.c (may_point_to_global_var): New function.
9518         * tree-ssa-sink.c (is_hidden_global_store): Use it.
9519
9520 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
9521
9522         * configure.ac: Teach that fido supports .debug_line.
9523         * configure: Regenerate.
9524
9525 2008-06-10  Tom Tromey  <tromey@redhat.com>
9526
9527         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
9528         debug hook.
9529
9530 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
9531
9532         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
9533         (encode_decimal64, decode_decimal64, encode_decimal128,
9534         decode_decimal128): Reverse order of 32-bit parts of value if host
9535         and target endianness differ.
9536
9537 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
9538
9539         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
9540         Avoid division by 0.
9541         (tree_mod_pow2_value_transform): Likewise.
9542         (tree_ic_transform): Likewise.
9543         (tree_stringops_transform): Likewise.
9544         (tree_mod_subtract_transform): Likewise.
9545         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
9546         (copy_edges_for_bb): Likewise.
9547         (initialize_cfun): Likewise.
9548
9549 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
9550
9551         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
9552         nonmemory_operand. Add "N" operand constraint.
9553         (*btsi): Ditto.
9554         (*jcc_btdi_mask_rex64): New instruction and split pattern.
9555         (*jcc_btsi_mask): Ditto.
9556         (*jcc_btsi_mask_1): Ditto.
9557
9558 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
9559
9560         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
9561         TYPE_CANONICAL for copied element type.
9562
9563 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
9564
9565         PR target/36473
9566         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
9567         Add m_CORE2 and m_GENERIC.
9568         * config/i386/predicates.md (bt_comparison_operator): New predicate.
9569         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
9570         (*btsi): Ditto.
9571         (*jcc_btdi_rex64): New instruction and split pattern.
9572         (*jcc_btsi): Ditto.
9573         (*jcc_btsi_1): Ditto.
9574         (*btsq): Fix Intel asm dialect operand order.
9575         (*btrq): Ditto.
9576         (*btcq): Ditto.
9577
9578 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
9579
9580         PR middle-end/36447
9581         * simplify-rtx.c (simplify_subreg): Add check for shift count
9582         greater than size.
9583
9584 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
9585
9586         * doc/md.texi: Synchronize with later constraints.md change.
9587         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
9588         with a C implementation.
9589         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
9590         MFLO handling.
9591         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
9592         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
9593         when moving to and from MD_REGNUM.
9594         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
9595         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
9596         Handle byte and halfword moves.
9597         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
9598         separately.
9599         * config/mips/constraints.md (h): Turn into NO_REGS.
9600         (l, x): Update documentation.
9601         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
9602         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
9603         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
9604         (HILO): New mode iterator.
9605         (MOVE128): Add TI.
9606         (any_div): New code iterator.
9607         (u): Extend code attribute to div and udiv.
9608         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
9609         d_operand in the splitters.  Remove redundant CONST_INT checks.
9610         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
9611         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
9612         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
9613         accordingly, using normal moves instead of unspecs to move LO into
9614         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
9615         (<u>mulsidi3): Handle expansion in C code.
9616         (<u>mulsidi3_32bit_internal): Rename to...
9617         (<u>mulsidi3_32bit): ...this.
9618         (<u>mulsidi3_32bit_r4000): Fix insn separator.
9619         (*<u>mulsidi3_64bit): Rename to...
9620         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
9621         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
9622         to set LO and HI to the multiplication result.  Use a normal move
9623         for MFLO and an unspec for MFHI.
9624         (*<u>mulsidi3_64bit_parts): Replace with...
9625         (<u>mulsidi3_64bit_hilo): ...this new instruction.
9626         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
9627         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
9628         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
9629         instead of HI.  Split the instruction into a separate multiplication
9630         and MFHI if !TARGET_FIX_R4000.
9631         (<su>muldi3_highpart): Likewise.
9632         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
9633         and the "=h" clobber.
9634         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
9635         (<u>mulditi3): New expander.
9636         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
9637         (madsi): Remove "=h" clobber.
9638         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
9639         Force the modulus result to be a GPR and split the instruction into
9640         a division followed by an MFHI after reload.
9641         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
9642         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
9643         the MIPS16 HIGH define_split.
9644         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
9645         of acc<->gpr moves to "multi".
9646         (*movdi_64bit): Replace the single "x" alternative with
9647         alternatives for moving into and out of "a".
9648         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
9649         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
9650         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
9651         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
9652         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
9653         (movti): New expander.
9654         (*movti, *movti_mips16): New insns.
9655         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
9656         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
9657         (mthi<GPR:mode>_<HILO:mode>): Likewise.
9658         * config/mips/predicates.md (fpr_operand): Delete.
9659         (d_operand): New predicate.
9660
9661 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
9662
9663         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
9664         failure on some Bourne shells.
9665         (x86_64-*-*): Ditto.
9666
9667 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
9668
9669         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
9670
9671 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
9672
9673         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
9674         (sparc-sun-solaris2*): Likewise.
9675
9676 2008-06-09  Arnaud Charlet  <charlet@adacore.com
9677
9678         * doc/install.texi: Update requirements to build the Ada compiler.
9679
9680 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
9681
9682         * df-scan.c (struct df_scan_problem_data): Remove the
9683         mw_link_pool alloc pool.
9684         (df_scan_free_internal): Don't free it.
9685         (df_scan_alloc): Don't allocate it.
9686         * df.h (struct df_link): Update comment.
9687
9688 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
9689
9690         * except.h: Correct checks for when SJLJ exceptions must be used.
9691
9692 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9693
9694         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
9695         default.
9696
9697 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
9698
9699         PR tree-optimization/36218
9700         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
9701         configure for the build system.
9702         (BUILD_LDFLAGS): Define.
9703         * configure: Regenerate.
9704         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
9705
9706 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
9707
9708         PR target/36424
9709         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
9710         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
9711         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
9712
9713 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
9714
9715         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
9716
9717 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
9718
9719         * config.gcc (Obsolete configurations): Remove list of
9720         configurations.
9721         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
9722         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
9723         targets matched by those patterns.
9724         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
9725         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
9726         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
9727         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
9728         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
9729         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
9730         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
9731         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
9732         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
9733         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
9734         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
9735         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
9736         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
9737         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
9738         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
9739         Make code for Solaris 7 and greater unconditional for Solaris.
9740         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
9741         Remove --with-* handling.
9742         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
9743         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
9744         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
9745         LINK_OS_WINDISS_SPEC): Remove.
9746         * config/rs6000/sysv4.opt (mwindiss): Remove.
9747         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
9748         * configure: Regenerate.
9749         * doc/cpp.texi: Don't mention BeOS.
9750         * doc/extend.texi (interrupt): Don't mention MS1.
9751         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
9752         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
9753         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
9754         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
9755         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
9756         Remove.
9757         * doc/invoke.texi (MT Options): Remove.
9758         (-mwindiss): Remove.
9759         (CRIS Options): Remove cris-axis-aout references.
9760         (HPPA Options): Don't mention hppa1.1-*-pro.
9761         * doc/md.texi: (MorphoTech family): Remove.
9762         * libgcc2.c: Don't handle UWIN.
9763         * config/alpha/t-unicosmk: Remove.
9764         * config/alpha/unicosmk.h: Remove.
9765         * config/arm/kaos-arm.h: Remove.
9766         * config/arm/kaos-strongarm.h: Remove.
9767         * config/arm/strongarm-coff.h: Remove.
9768         * config/arm/strongarm-elf.h: Remove.
9769         * config/arm/strongarm-pe.h: Remove.
9770         * config/arm/t-strongarm-pe: Remove.
9771         * config/arm/t-xscale-coff: Remove.
9772         * config/arm/t-xscale-elf: Remove.
9773         * config/arm/xscale-coff.h: Remove.
9774         * config/arm/xscale-elf.h: Remove.
9775         * config/chorus.h: Remove.
9776         * config/cris/aout.h: Remove.
9777         * config/cris/aout.opt: Remove.
9778         * config/cris/t-aout: Remove.
9779         * config/i386/beos-elf.h: Remove.
9780         * config/i386/kaos-i386.h: Remove.
9781         * config/i386/ptx4-i.h: Remove.
9782         * config/i386/sco5.h: Remove.
9783         * config/i386/sco5.opt: Remove.
9784         * config/i386/sysv4-cpp.h: Remove.
9785         * config/i386/sysv5.h: Remove.
9786         * config/i386/t-beos: Remove.
9787         * config/i386/t-sco5: Remove.
9788         * config/i386/t-uwin: Remove.
9789         * config/i386/uwin.asm: Remove.
9790         * config/i386/uwin.h: Remove.
9791         * config/kaos.h: Remove.
9792         * config/mips/windiss.h: Remove.
9793         * config/mt: Remove directory.
9794         * config/pa/pa-osf.h: Remove.
9795         * config/pa/pa-pro-end.h: Remove.
9796         * config/pa/t-pro: Remove.
9797         * config/ptx4.h: Remove.
9798         * config/rs6000/beos.h: Remove.
9799         * config/rs6000/kaos-ppc.h: Remove.
9800         * config/rs6000/t-beos: Remove.
9801         * config/rs6000/windiss.h: Remove.
9802         * config/sh/kaos-sh.h: Remove.
9803         * config/sol2-6.h: Remove.
9804         * config/sparc/sol26-sld.h: Remove.
9805         * config/sparc/sysv4-only.h: Remove.
9806         * config/vax/bsd.h: Remove.
9807         * config/vax/t-memfuncs: Remove.
9808         * config/vax/ultrix.h: Remove.
9809         * config/vax/vaxv.h: Remove.
9810         * config/windiss.h: Remove.
9811
9812 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
9813
9814         PR rtl-optimization/36438
9815         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
9816         for vector shifts with constant scalar shift operands.
9817
9818 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
9819
9820         * doc/invoke.texi: Document -march=xlr.
9821         * config/mips/xlr.md: New file.
9822         * config/mips/mips.md: Include it.
9823         (cpu): Add "xlr".
9824         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
9825         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
9826         (mips_rtx_cost_data): Likewise.
9827
9828 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
9829
9830         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
9831         PRE_INC and PRE_DEC cases.
9832
9833 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
9834
9835         PR rtl-optimization/36419
9836         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
9837         the emitting jump insn.
9838
9839         PR target/36362
9840         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
9841         is not bool, boolify the whole *expr_p and convert to the desired type.
9842
9843 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
9844
9845         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
9846         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
9847         Add omp_private_outer_ref hook, add another argument to
9848         omp_clause_default_ctor hook.
9849         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
9850         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
9851         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
9852         hook_tree_tree_tree_tree_null.
9853         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
9854         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
9855         * hooks.c (hook_tree_tree_tree_tree_null): New function.
9856         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
9857         * tree.def (OMP_TASK): New tree code.
9858         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
9859         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
9860         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
9861         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
9862         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
9863         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
9864         OMP_CLAUSE_COLLAPSE_EXPR): Define.
9865         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
9866         (OMP_DIRECTIVE_P): Add OMP_TASK.
9867         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
9868         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
9869         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
9870         and OMP_CLAUSE_UNTIED entries.
9871         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
9872         num_ops to 2.
9873         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
9874         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
9875         * tree-pretty-print.c (dump_omp_clause): Handle
9876         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
9877         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
9878         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
9879         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
9880         warning about unsigned iterators.  Change decl/init/cond/incr
9881         arguments to TREE_VECs, check arguments for all collapsed loops.
9882         (c_finish_omp_taskwait): New function.
9883         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
9884         ws_clauses.
9885         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
9886         default_function_array_conversion on init.  Add par_clauses argument.
9887         If decl is present in parallel's lastprivate clause, change it to
9888         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
9889         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
9890         collapse count in clauses.
9891         (c_parser_omp_for, c_parser_omp_parallel): Adjust
9892         c_parser_omp_for_loop callers.
9893         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
9894         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
9895         (c_parser_omp_clause_name): Handle collapse and untied clauses.
9896         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
9897         functions.
9898         (c_parser_omp_clause_schedule): Handle schedule(auto).
9899         Include correct location in the error message.
9900         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
9901         and PRAGMA_OMP_CLAUSE_UNTIED.
9902         (OMP_TASK_CLAUSE_MASK): Define.
9903         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
9904         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
9905         * tree-nested.c (convert_nonlocal_omp_clauses,
9906         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
9907         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
9908         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
9909         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
9910         OMP_CLAUSE_DECL.
9911         (conver_nonlocal_reference, convert_local_reference,
9912         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
9913         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
9914         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
9915         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
9916         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
9917         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
9918         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
9919         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
9920         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
9921         OMP_CLAUSE_UNTIED.
9922         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
9923         * c-common.h (c_finish_omp_taskwait): New prototype.
9924         * gimple-low.c (lower_stmt): Handle OMP_TASK.
9925         * tree-parloops.c (create_parallel_loop): Create 1 entry
9926         vectors for OMP_FOR_{INIT,COND,INCR}.
9927         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
9928         (make_edges): Handle OMP_TASK.
9929         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
9930         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
9931         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
9932         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
9933         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
9934         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
9935         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
9936         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
9937         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
9938         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
9939         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
9940         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
9941         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
9942         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
9943         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
9944         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
9945         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
9946         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
9947         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
9948         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
9949         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
9950         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
9951         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
9952         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
9953         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
9954         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
9955         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
9956         original iterator is present in lastprivate clause or if
9957         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
9958         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
9959         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
9960         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
9961         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
9962         if it is set, lookup var in outer contexts too.  Handle
9963         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
9964         to be implicitly determined firstprivate for task regions.
9965         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
9966         if it is set, lookup var in outer contexts too.  Set
9967         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
9968         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
9969         OMP_CLAUSE_UNTIED.  Take region_type as last argument
9970         instead of in_parallel and in_combined_parallel.
9971         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
9972         Adjust callers.
9973         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
9974         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
9975         (new_omp_context): Set default_kind to
9976         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
9977         (omp_region_type): New enum.
9978         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
9979         fields, add region_type.
9980         (new_omp_context): Take region_type as argument instead of is_parallel
9981         and is_combined_parallel.
9982         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
9983         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
9984         ctx->is_combined_parallel checks.
9985         (gimplify_omp_task): New function.
9986         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
9987         OMP_CLAUSE_UNTIED.
9988         * omp-low.c (extract_omp_for_data): Use schedule(static)
9989         for schedule(auto).  Handle pointer and unsigned iterators.
9990         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
9991         Add loops argument.  Extract data for collapsed OMP_FOR loops.
9992         (expand_parallel_call): Assert sched_kind isn't auto,
9993         map runtime schedule to index 3.
9994         (struct omp_for_data_loop): New type.
9995         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
9996         Add loop, loops, collapse and iter_type fields.
9997         (workshare_safe_to_combine_p): Disallow combined for if
9998         iter_type is unsigned long long.  Don't combine collapse > 1 loops
9999         unless all bounds and steps are constant.  Adjust extract_omp_for_data
10000         caller.
10001         (expand_omp_for_generic): Handle pointer, unsigned and long long
10002         iterators.  Handle collapsed OMP_FOR loops.  Adjust
10003         for struct omp_for_data changes.  If libgomp function doesn't return
10004         boolean_type_node, add comparison of the return value with 0.
10005         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
10006         pointer, unsigned and long long iterators.  Adjust for struct
10007         omp_for_data changes.
10008         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
10009         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
10010         unsigned long long.  Allocate loops array, pass it to
10011         extract_omp_for_data.  For collapse > 1 loops use always
10012         expand_omp_for_generic.
10013         (omp_context): Add sfield_map and srecord_type fields.
10014         (is_task_ctx, lookup_sfield): New functions.
10015         (use_pointer_for_field): Use is_task_ctx helper.  Change first
10016         argument's type from const_tree to tree.  Clarify comment.
10017         In OMP_TASK disallow copy-in/out sharing.
10018         (build_sender_ref): Call lookup_sfield instead of lookup_field.
10019         (install_var_field): Add mask argument.  Populate both record_type
10020         and srecord_type if needed.
10021         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
10022         in srecord_type.
10023         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
10024         and DECL_FIELD_OFFSET.
10025         (scan_sharing_clauses): Adjust install_var_field callers.  For
10026         firstprivate clauses on explicit tasks allocate the var by value in
10027         record_type unconditionally, rather than by reference.
10028         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
10029         Use is_taskreg_ctx instead of is_parallel_ctx.
10030         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
10031         (create_omp_child_function_name): Add task_copy argument, use
10032         *_omp_cpyfn* names if it is true.
10033         (create_omp_child_function): Add task_copy argument, if true create
10034         *_omp_cpyfn* helper function.
10035         (scan_omp_parallel): Adjust create_omp_child_function callers.
10036         Rename parallel_nesting_level to taskreg_nesting_level.
10037         (scan_omp_task): New function.
10038         (lower_rec_input_clauses): Don't run constructors for firstprivate
10039         explicit task vars which are initialized by *_omp_cpyfn*.
10040         Pass outer var ref to omp_clause_default_ctor hook if
10041         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
10042         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
10043         OMP_CLAUSE_REDUCTION_INIT.
10044         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
10045         avoid duplicate setting of fields.  Handle
10046         OMP_CLAUSE_PRIVATE_OUTER_REF.
10047         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
10048         copy-out if TREE_READONLY, only copy-in.
10049         (expand_task_copyfn): New function.
10050         (expand_task_call): New function.
10051         (struct omp_taskcopy_context): New type.
10052         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
10053         New functions.
10054         (lower_omp_parallel): Rename to...
10055         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
10056         Call create_task_copyfn if srecord_type is needed.  Adjust
10057         sender_decl type.
10058         (task_shared_vars): New variable.
10059         (check_omp_nesting_restrictions): Warn if work-sharing,
10060         barrier, master or ordered region is closely nested inside OMP_TASK.
10061         Add warnings for barrier if closely nested inside of work-sharing,
10062         ordered, or master region.
10063         (scan_omp_1): Call check_omp_nesting_restrictions even for
10064         GOMP_barrier calls.  Rename parallel_nesting_level to
10065         taskreg_nesting_level.  Handle OMP_TASK.
10066         (lower_lastprivate_clauses): Even if some lastprivate is found on a
10067         work-sharing construct, continue looking for them on parent parallel
10068         construct.
10069         (lower_omp_for_lastprivate): Add lastprivate clauses
10070         to the beginning of dlist rather than end.  Adjust for struct
10071         omp_for_data changes.
10072         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
10073         not after it.  Handle collapsed OMP_FOR loops, adjust for
10074         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
10075         (get_ws_args_for): Adjust extract_omp_for_data caller.
10076         (scan_omp_for): Handle collapsed OMP_FOR
10077         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
10078         (lower_omp_single_simple): If libgomp function doesn't return
10079         boolean_type_node, add comparison of the return value with 0.
10080         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
10081         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
10082         (parallel_nesting_level): Rename to...
10083         (taskreg_nesting_level): ... this.
10084         (is_taskreg_ctx): New function.
10085         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
10086         of is_parallel_ctx.
10087         (execute_lower_omp): Rename parallel_nesting_level to
10088         taskreg_nesting_level.
10089         (expand_omp_parallel): Rename to...
10090         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
10091         Call omp_task_call for OMP_TASK regions.
10092         (expand_omp): Adjust caller, handle OMP_TASK.
10093         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
10094
10095         * bitmap.c (bitmap_default_obstack_depth): New variable.
10096         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
10097         if argument is NULL and bitmap_default_obstack is already initialized.
10098         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
10099         at the end.
10100         * matrix-reorg.c (matrix_reorg): Likewise.
10101
10102 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
10103
10104         * config/i386/i386.md (*indirect_jump): Macroize using P
10105         mode iterator.  Remove !TARGET_64BIT from insn constraints.
10106         (*tablejump_1): Ditto.
10107         (*indirect_jump_rex64): Remove insn pattern.
10108         (*tablejump_1_rex64): Ditto.
10109         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
10110         and eh_return_si insn patterns.
10111
10112 2008-06-06  Richard Guenther  <rguenther@suse.de>
10113
10114         * tree-ssa-structalias.c (merge_smts_into): Remove.
10115         (find_what_p_points_to): Do not bother to compute the
10116         points-to set for pt_anything pointers.
10117         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
10118         for pt_anything pointers is ok.
10119
10120 2008-06-06  Jan Hubicka  <jh@suse.cz>
10121
10122         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
10123
10124 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10125
10126         * cgraph.c: Fix typos in comments.
10127         (cgraph_availability_names): Fix string typo.
10128         * fold-const.c: Fix typos in comments.
10129         (fold_binary): Fix typo in warning.
10130         * genautomata.c: Fix typos in comments.
10131         (check_presence_pattern_sets): Fix typo in local variable.
10132         (output_description): Fix typo in output.
10133         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
10134         * hwint.h: Likewise.
10135         * matrix-reorg.c (check_allocation_function): Likewise.
10136         * omega.c (smooth_weird_equations): Likewise.
10137         * auto-inc-dec.c: Fix typos in comments.
10138         * bb-reorder.c: Likewise.
10139         * builtins.c: Likewise.
10140         * c-common.c: Likewise.
10141         * c-cppbuiltin.c: Likewise.
10142         * c-parser.c: Likewise.
10143         * c-pretty-print.c: Likewise.
10144         * cfgcleanup.c: Likewise.
10145         * cfgexpand.c: Likewise.
10146         * cfghooks.c: Likewise.
10147         * cfglayout.c: Likewise.
10148         * cfgloopmanip.c: Likewise.
10149         * cgraphunit.c: Likewise.
10150         * coverage.c: Likewise.
10151         * dbxout.c: Likewise.
10152         * df-byte-scan.c: Likewise.
10153         * df-core.c: Likewise.
10154         * df-problems.c: Likewise.
10155         * df-scan.c: Likewise.
10156         * dfp.c: Likewise.
10157         * dominance.c: Likewise.
10158         * domwalk.c: Likewise.
10159         * dse.c: Likewise.
10160         * dwarf2out.c: Likewise.
10161         * emit-rtl.c: Likewise.
10162         * et-forest.c: Likewise.
10163         * function.c: Likewise.
10164         * function.h: Likewise.
10165         * gcc.c: Likewise.
10166         * gcov-io.c: Likewise.
10167         * gcov.c: Likewise.
10168         * gcse.c: Likewise.
10169         * genattrtab.c: Likewise.
10170         * ggc-page.c: Likewise.
10171         * gimplify.c: Likewise.
10172         * gthr-lynx.h: Likewise.
10173         * haifa-sched.c: Likewise.
10174         * ipa-cp.c: Likewise.
10175         * ipa-inline.c: Likewise.
10176         * ipa-prop.h: Likewise.
10177         * ipa-pure-const.c: Likewise.
10178         * ipa-struct-reorg.c: Likewise.
10179         * ipa-struct-reorg.h: Likewise.
10180         * ipa-type-escape.c: Likewise.
10181         * ipa.c: Likewise.
10182         * loop-doloop.c: Likewise.
10183         * mips-tfile.c: Likewise.
10184         * mkmap-flat.awk: Likewise.
10185         * mkmap-symver.awk: Likewise.
10186         * modulo-sched.c: Likewise.
10187         * omp-low.c: Likewise.
10188         * optabs.c: Likewise.
10189         * optabs.h: Likewise.
10190         * opts.c: Likewise.
10191         * passes.c: Likewise.
10192         * postreload-gcse.c: Likewise.
10193         * postreload.c: Likewise.
10194         * predict.c: Likewise.
10195         * pretty-print.h: Likewise.
10196         * profile.c: Likewise.
10197         * protoize.c: Likewise.
10198         * ra-conflict.c: Likewise.
10199         * real.c: Likewise.
10200         * recog.c: Likewise.
10201         * regclass.c: Likewise.
10202         * regs.h: Likewise.
10203         * reload.c: Likewise.
10204         * rtl-error.c: Likewise.
10205         * rtlanal.c: Likewise.
10206         * scan.h: Likewise.
10207         * sched-rgn.c: Likewise.
10208         * see.c: Likewise.
10209         * stmt.c: Likewise.
10210         * target.h: Likewise.
10211         * tree-dfa.c: Likewise.
10212         * tree-eh.c: Likewise.
10213         * tree-flow-inline.h: Likewise.
10214         * tree-inline.c: Likewise.
10215         * tree-into-ssa.c: Likewise.
10216         * tree-loop-distribution.c: Likewise.
10217         * tree-nested.c: Likewise.
10218         * tree-parloops.c: Likewise.
10219         * tree-pass.h: Likewise.
10220         * tree-pretty-print.c: Likewise.
10221         * tree-profile.c: Likewise.
10222         * tree-scalar-evolution.c: Likewise.
10223         * tree-sra.c: Likewise.
10224         * tree-ssa-alias-warnings.c: Likewise.
10225         * tree-ssa-ccp.c: Likewise.
10226         * tree-ssa-coalesce.c: Likewise.
10227         * tree-ssa-dom.c: Likewise.
10228         * tree-ssa-dse.c: Likewise.
10229         * tree-ssa-forwprop.c: Likewise.
10230         * tree-ssa-live.c: Likewise.
10231         * tree-ssa-live.h: Likewise.
10232         * tree-ssa-loop-im.c: Likewise.
10233         * tree-ssa-loop-ivopts.c: Likewise.
10234         * tree-ssa-loop-niter.c: Likewise.
10235         * tree-ssa-loop-prefetch.c: Likewise.
10236         * tree-ssa-phiopt.c: Likewise.
10237         * tree-ssa-phiprop.c: Likewise.
10238         * tree-ssa-sccvn.c: Likewise.
10239         * tree-ssa-ter.c: Likewise.
10240         * tree-ssa-threadupdate.c: Likewise.
10241         * tree-ssa.c: Likewise.
10242         * tree-vect-analyze.c: Likewise.
10243         * tree-vect-transform.c: Likewise.
10244         * tree-vectorizer.c: Likewise.
10245         * tree-vn.c: Likewise.
10246         * tree-vrp.c: Likewise.
10247         * tree.c: Likewise.
10248         * tree.def: Likewise.
10249         * tree.h: Likewise.
10250         * unwind-dw2-fde.c: Likewise.
10251         * unwind.inc: Likewise.
10252         * value-prof.c: Likewise.
10253         * vmsdbgout.c: Likewise.
10254
10255 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
10256
10257         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
10258         always place FP constants in the TOC for TARGET_POWERPC64.
10259         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
10260
10261 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
10262
10263         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
10264         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
10265         enable for TARGET_E500_DOUBLE.
10266         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
10267         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
10268         floating-point modes like integer modes for E500 double.
10269         (rs6000_legitimate_offset_address_p): Likewise.
10270         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
10271         addressing for DDmode for E500 double.
10272         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
10273         modes as using 64-bits of registers for E500 double.
10274         (spe_build_register_parallel): Do not handle DDmode or TDmode.
10275         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
10276         specially for E500 double.
10277         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
10278         TDmode for E500 double.
10279         (rs6000_gimplify_va_arg): Only handle SDmode in registers
10280         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
10281         (rs6000_split_multireg_move): Do not handle TDmode specially for
10282         E500 double.
10283         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
10284         using 64-bit registers for E500 double.
10285         (emit_frame_save): Do not handle DDmode specially for E500 double.
10286         (gen_frame_mem_offset): Likewise.
10287         (rs6000_function_value): Do not call spe_build_register_parallel
10288         for DDmode or TDmode.
10289         (rs6000_libcall_value): Likewise.
10290         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
10291         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
10292         for E500 double.
10293
10294 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
10295
10296         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
10297         in comments.
10298
10299 2008-06-04  Junjie Gu <jgu@tensilica.com>
10300
10301         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
10302         comparison for frame pointers.
10303
10304 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
10305
10306         PR target/27386
10307         * config/avr/avr.h (PUSH_ROUNDING): Remove.
10308
10309 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
10310
10311         PR target/30243
10312         * builtins.c (expand_builtin_signbit): Don't take lowpart when
10313         register is already smaller or equal to required mode.
10314
10315 2008-06-04  Xinliang David Li  <davidxl@google.com>
10316
10317         * tree-call-cdce.c: New file.
10318         (cond_dead_built_in_calls): New static variable.
10319         (input_domain): New struct.
10320         (check_pow): New function.
10321         (check_builtin_call): Ditto.
10322         (check_target_format): Ditto.
10323         (is_call_dce_candidate): Ditto.
10324         (gen_one_condition): Ditto.
10325         (gen_conditions_for_domain): Ditto.
10326         (get_domain): Ditto.
10327         (gen_conditions_for_pow_cst_base): Ditto.
10328         (gen_conditions_for_pow_int_base): Ditto.
10329         (gen_conditions_for_pow): Ditto.
10330         (get_no_error_domain): Ditto.
10331         (gen_shrink_wrap_conditions): Ditto.
10332         (shrink_wrap_one_built_in_call): Ditto.
10333         (shink_wrap_conditional_dead_built_in_calls): Ditto.
10334         (tree_call_cdce): Ditto.
10335         (gate_call_cdce): Ditto.
10336         (pass_call_cdce): New gimple pass.
10337         * passes.c: (init_optimization_passes): New pass.
10338         * tree-pass.h: New pass declaration.
10339         * opts.c (decode_options): New flag setting.
10340         * common.opt: Add -ftree-builtin-call-dce flag.
10341         * Makefile.in: Add new source file.
10342         * tempvar.def: New tv_id.
10343         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
10344
10345 2008-06-04  Richard Guenther  <rguenther@suse.de>
10346
10347         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
10348         (is_call_clobbered): Always check var_ann->call_clobbered.
10349         (mark_call_clobbered): Always set var_ann->call_clobbered.
10350         (clear_call_clobbered): Always clear var_ann->call_clobbered.
10351         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
10352         (reset_alias_info): Clear call clobbering info on MTAGs and
10353         globals as well.
10354         (set_pt_anything): Set pt_global_mem.
10355         (create_tag_raw): Adjust comment.
10356         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
10357
10358 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
10359             Maxim Kuvyrkov  <maxim@codesourcery.com>
10360
10361         * config/m68k/m68k.opt (mxgot): New option.
10362         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
10363         (m68k_output_addr_const_extra): New.
10364         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
10365         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
10366         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
10367         * doc/invoke.texi (M680x0 Options): Document -mxgot.
10368
10369 2008-06-04  Richard Guenther  <rguenther@suse.de>
10370
10371         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
10372         negative or non-representable offsets.
10373
10374 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
10375
10376         * config/i386/i386.c (ix86_gen_leave): New.
10377         (ix86_gen_pop1): Likewise.
10378         (ix86_gen_add3): Likewise.
10379         (ix86_gen_sub3): Likewise.
10380         (ix86_gen_sub3_carry): Likewise.
10381         (ix86_gen_one_cmpl2): Likewise.
10382         (ix86_gen_monitor): Likewise.
10383         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
10384         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
10385         ix86_gen_one_cmpl2 and ix86_gen_monitor.
10386         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
10387         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
10388         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
10389         (ix86_expand_epilogue): Updated.
10390         (print_operand): Handle integer register operand for 'z'.
10391         (ix86_expand_strlensi_unroll_1): Likewise.
10392         (ix86_expand_strlen): Likewise.
10393         (ix86_expand_builtin): Likewise.
10394         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
10395         mov{q}/mov{l} and add{q}/add{l}.
10396
10397 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
10398
10399         * config/i386/i386.md (P): New mode iterator.
10400         (SFmode push_operand splitter): Macroize DImode and SImode pushes
10401         using P mode iterator.
10402         (DFmode push_operand splitter): Ditto.
10403         (XFmode push_operand splitter): Ditto.
10404         (DFmode float_extend SFmode push_operand splitter): Ditto.
10405         (XFmode float_extend SFmode push_operand splitter): Do not generate
10406         SImode pushes for 64bit target.  Macroize Dimode and SImode
10407         pushes using P mode iterator.
10408         (XFmode float_extend DFmode push_operand splitter): Ditto.
10409
10410 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
10411
10412         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
10413         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
10414         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
10415         return type to int.
10416         (ix86_call_abi_override): Remove check for call_used_regs.
10417
10418 2008-06-03  Richard Guenther  <rguenther@suse.de>
10419
10420         * tree-ssa-structalias.c (find_func_aliases): Add constraints
10421         for the lhs of calls if the return type contains pointers.
10422
10423 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
10424
10425         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
10426         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
10427         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
10428         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
10429         of cfun and DEFAULT_ABI to deceide abi mode.
10430         (DEFAULT_ABI): New.
10431         (REG_PARM_STACK_SPACE): Removed.
10432         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
10433         (STACK_BOUNDARY): Use default target to deceide stack boundary.
10434         * config/i386/i386-protos.h (ix86_cfun_abi): New.
10435         (ix86_function_abi): Likewise.
10436         (ix86_function_type_abi): Likewise.
10437         (ix86_call_abi_override): Likewise.
10438         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
10439         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
10440         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
10441         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
10442         specific defines.
10443         (X86_64_REGPARM_MAX): New.
10444         (X86_64_SSE_REGPARM_MAX): New.
10445         (X64_REGPARM_MAX): New.
10446         (X64_SSE_REGPARM_MAX): New.
10447         (X86_32_REGPARM_MAX): New.
10448         (X86_32_SSE_REGPARM_MAX): New.
10449         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
10450         (ix86_function_regparm): Handle user calling abi.
10451         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
10452         by DEFAULT_ABI versus SYSV_ABI check.
10453         (ix86_reg_parm_stack_space): New.
10454         (ix86_function_type_abi): New.
10455         (ix86_call_abi_override): New.
10456         (ix86_function_abi): New.
10457         (ix86_cfun_abi): New.
10458         (init_cumulative_args): Call abi specific initialization.
10459         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
10460         (function_arg_64): Extend SSE_REGPARM_MAX check.
10461         (function_arg (): Remove TARGET_64BIT_MS_ABI.
10462         (ix86_pass_by_reference): Likewise.
10463         (ix86_function_value_regno_p): Likewise.
10464         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
10465         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
10466         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
10467         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
10468         (setup_incoming_varargs_64): Adjust regparm for call abi.
10469         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
10470         (ix86_va_start): Likewise.
10471         (ix86_gimplify_va_arg): Likewise.
10472         (ix86_expand_prologue): Likewise.
10473         (output_pic_addr_const): Likewise.
10474         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
10475         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
10476         (x86_output_mi_thunk): Likewise.
10477         (x86_function_profiler): Likewise.
10478         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
10479         (SYSV_ABI, MS_ABI): New constants.
10480         (DEFAULT_ABI): New.
10481         (init_regs): Add prototype of function in regclass.c file.
10482         (OVERRIDE_ABI_FORMAT): New.
10483         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
10484         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
10485         (OUTGOING_REG_PARM_STACK_SPACE): New.
10486         (ix86_reg_parm_stack_space): New prototype.
10487         (CUMULATIVE_ARGS): Add call_abi member.
10488         (machine_function): Add call_abi member.
10489         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
10490         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
10491
10492 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
10493
10494         PR target/34879
10495         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
10496         (avr_builtin_setjmp_frame_value): New function.
10497         * config/avr/avr.md (nonlocal_goto_receiver): Define.
10498         (nonlocal_goto): Define.
10499
10500 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
10501
10502         * config/mips/mips.c (mips_emit_loadgp): Return early if
10503         there is nothing do to, otherwise emit a blockage if
10504         !TARGET_EXPLICIT_RELOCS || crtl->profile.
10505         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
10506
10507 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10508
10509         * configure.ac: Drop unneeded backslash ending up in config.in.
10510         * acinclude.m4: Likewise.
10511         * config.in: Regenerate.
10512
10513 2008-05-26  Jan Hubicka  <jh@suse.cz>
10514
10515         * predict.c (maybe_hot_frequency_p): Break out of...
10516         (maybe_hot_bb_p): ... here.
10517         (maybe_hot_edge_p): New.
10518         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
10519         * basic-block.h (maybe_hot_edge_p): Declare.
10520
10521 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
10522
10523         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
10524         (*cmpfp_<mode>_cc): Ditto.
10525         (*fp_jcc_8<mode>_387): Ditto.
10526         (*fop_<MODEF:mode>_2_i387): Ditto.
10527         (*fop_<MODEF:mode>_3_i387): Ditto.
10528         (*fop_xf_2_i387): Ditto.
10529         (*fop_xf_3_i387): Ditto.
10530
10531 2008-06-02  Tomas Bily  <tbily@suse.cz>
10532
10533         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
10534
10535 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
10536
10537         * config/mips/mips.c (mips_valid_offset_p): New function.
10538         (mips_valid_lo_sum_p): Likewise.
10539         (mips_classify_address): Use them.
10540         (mips_force_address): New function.
10541         (mips_legitimize_address): Use it.
10542         * config/mips/mips.md (MOVE128): New mode iterator.
10543         (movtf): Require TARGET_64BIT.  Remove empty strings.
10544         (*movtf_internal): Rename to...
10545         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
10546         of "R" and use {,fp}{load,store} attributes instead of "multi".
10547         Use a separate define_split.
10548         (*movtf_mips16): New pattern.
10549
10550 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
10551
10552         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
10553         * config/mips/mips.c (mips_expand_before_return): New function.
10554         (mips_expand_epilogue): Call it.
10555         * config/mips/mips.md (return): Turn into a define_expand.
10556         (*return): New insn.
10557
10558 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
10559
10560         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
10561         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
10562         functions.  Do not emit uses and clobbers of CONCATs; individually
10563         use and clobber their operands.
10564         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
10565         gen_clobber, emit_use and gen_use.
10566         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
10567         (expand_builtin_return): Likewise.
10568         * cfgbuild.c (count_basic_blocks): Likewise.
10569         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
10570         * explow.c (emit_stack_restore): Likewise.
10571         * expmed.c (extract_bit_field_1): Likewise.
10572         * expr.c (convert_move, emit_move_complex_parts): Likewise.
10573         (emit_move_multi_word, store_constructor): Likewise.
10574         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
10575         (thread_prologue_and_epilogue_insns): Likewise.
10576         * lower-subreg.c (resolve_simple_move): Likewise.
10577         * optabs.c (widen_operand, expand_binop): Likewise.
10578         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
10579         * reload.c (find_reloads): Likewise.
10580         * reload1.c (eliminate_regs_in_insn): Likewise.
10581         * stmt.c (expand_nl_goto_receiver): Likewise.
10582         * config/alpha/alpha.md (builtin_longjmp): Likewise.
10583         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
10584         * config/arm/arm.c (arm_load_pic_register): Likewise.
10585         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
10586         * config/arm/arm.md (untyped_return): Likewise.
10587         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
10588         * config/avr/avr.c (expand_prologue): Likewise.
10589         * config/bfin/bfin.c (do_unlink): Likewise.
10590         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
10591         * config/cris/cris.c (cris_expand_prologue): Likewise.
10592         * config/darwin.c (machopic_indirect_data_reference): Likewise.
10593         (machopic_legitimize_pic_address): Likewise.
10594         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
10595         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
10596         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
10597         (ix86_expand_convert_uns_didf_sse): Likewise.
10598         (ix86_expand_vector_init_general): Likewise.
10599         * config/ia64/ia64.md (eh_epilogue): Likewise.
10600         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
10601         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
10602         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
10603         (config/iq2000/iq2000.c): Likewise.
10604         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
10605         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
10606         (builtin_longjmp): Likewise.
10607         * config/mn10300/mn10300.md (call, call_value): Likewise.
10608         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
10609         * config/pdp11/pdp11.md (abshi2): Likewise.
10610         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
10611         * config/s390/s390.c (s390_emit_prologue): Likewise.
10612         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
10613         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
10614         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
10615         * config/sh/sh.c (prepare_move_operands): Likewise.
10616         (output_stack_adjust, sh_expand_epilogue): Likewise.
10617         (sh_set_return_address, sh_expand_t_scc): Likewise.
10618         * config/sparc/sparc.c (load_pic_register): Likewise.
10619         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
10620         * config/spu/spu.c (spu_expand_epilogue): Likewise.
10621         * config/v850/v850.c (expand_epilogue): Likewise.
10622
10623 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
10624
10625         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
10626         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
10627         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
10628         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
10629         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
10630         stack pointer register.
10631         (output_movhi): Remove code for interrupt specific writing to the
10632         stack pointer register.
10633
10634 2008-05-31  Richard Guenther  <rguenther@suse.de>
10635
10636         PR tree-optimization/34244
10637         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
10638         (tree_expr_nonzero_warnv_p): Likewise.
10639         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
10640         ssa_name_nonnegative_p.
10641         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
10642         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
10643         not tree_expr_nonzero_warnv_p.
10644
10645         PR tree-optimization/36262
10646         Revert
10647         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
10648
10649         PR tree-optimization/34244
10650         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
10651         (record_numbers_of_iterations): New function.
10652         (execute_vrp): Cache the numbers of iterations of loops.
10653         * tree-scalar-evolution.c (scev_reset_except_niters):
10654         New function.
10655         (scev_reset): Use scev_reset_except_niters.
10656         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
10657
10658 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
10659
10660         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
10661         __WORKAROUND_RETS when appropriate.
10662
10663 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
10664
10665         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
10666         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
10667         mode iterator.
10668         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
10669         *fop_df_comm_sse insn patterns using MODEF mode iterator.
10670         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
10671         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
10672         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
10673         *fop_df_1_mixed insn patterns using MODEF mode iterator.
10674         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
10675         *fop_df_1_sse insn patterns using MODEF mode iterator.
10676         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
10677         *fop_df_1_i387 insn patterns using MODEF mode iterator.
10678         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
10679         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
10680         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
10681         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
10682         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
10683         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
10684         (*fop_xf_4_i387): Use <MODE> for mode attribute.
10685         (*fop_xf_5_i387): Ditto.
10686         (*fop_xf_6_i387): Ditto.
10687
10688 2008-05-30  Richard Guenther  <rguenther@suse.de>
10689
10690         * builtins.c (build_string_literal): Avoid generating
10691         a non-gimple_val result.
10692
10693 2008-05-30  DJ Delorie  <dj@redhat.com>
10694
10695         * exec-tool.in: Use an environment variable (private) instead of a
10696         file (shared) as a semaphore, so as to not break parallel builds.
10697
10698 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
10699
10700         * optabs.c (maybe_encapsulate_block): Remove.
10701         (emit_libcall_block): Adjust accordingly.
10702         * optabs.h (maybe_encapsulate_block): Remove prototype.
10703
10704         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
10705         Don't use maybe_encapsulate_block.
10706
10707 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
10708
10709         * config/rs6000/rs6000.c (rs6000_legitimize_address,
10710         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
10711         rtx is a SYMBOL_REF before calling get_pool_constant.
10712
10713 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
10714
10715         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
10716
10717 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
10718
10719         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
10720         rather than OS names to choose INO_T_EQ definition.
10721         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
10722         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
10723
10724 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
10725
10726         PR target/36348
10727         * config/darwin-f.c: New.
10728         * config/t-darwin: Added rule to build darwin-f.o.
10729         * config.gcc: Defined new variable, fortran_target_objs.
10730         (*-*-darwin*): Set fortran_target_objs.
10731         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
10732         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
10733         * configure: Regenerated.
10734
10735 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
10736
10737         PR target/35771
10738         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
10739         canonical type if needed.
10740
10741 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
10742
10743         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
10744
10745 2008-05-29  Richard Guenther  <rguenther@suse.de>
10746
10747         PR tree-optimization/36343
10748         PR tree-optimization/36346
10749         PR tree-optimization/36347
10750         * tree-flow.h (clobber_what_p_points_to): Declare.
10751         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
10752         pointed-to variable is dereferenced is irrelevant to whether
10753         the pointer can access the pointed-to variable.
10754         (clobber_what_p_points_to): New function.
10755         * tree-ssa-alias.c (set_initial_properties): Use it.
10756         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
10757         call clobber check for NMTs.
10758
10759 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
10760
10761         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
10762         for printing gcov_type.
10763
10764 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
10765
10766         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
10767         and the eh region information.
10768         * value-prof.c (gimple_move_stmt_histograms): New function.
10769         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
10770
10771 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
10772
10773         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
10774
10775 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
10776
10777         * value-prof.c (tree_ic_transform): Print counts.
10778         * tree-profile.c (tree_gen_ic_func_profiler):
10779         Clear __gcov_indreict_call_callee variable to avoid misattribution
10780         of the profile.
10781
10782 2008-05-28  Rafael Espindola  <espindola@google.com>
10783
10784         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
10785         invalid sharing.
10786
10787 2008-05-28  Richard Guenther  <rguenther@suse.de>
10788
10789         PR tree-optimization/36339
10790         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
10791         and clobbering code out of the loop.
10792
10793 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
10794
10795         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
10796         letters defined.
10797
10798         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
10799         s390_contiguous_bitmask_p, s390_symref_operand_p,
10800         s390_check_symref_alignment, s390_reload_larl_operand,
10801         s390_reload_symref_address): New functions.
10802         (s390_branch_condition_mnemonic): Support compare and branch
10803         instructions.
10804         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
10805         and 'W' constraints.
10806         (s390_secondary_reload): Add secondary reloads for unaligned
10807         symbol refs or symbol refs to floating point or QI/TI mode
10808         integer values.
10809         (legitimate_address_p): Accept symbol references as addresses.
10810         (s390_expand_insv): Use rotate and insert selected bits
10811         instruction for insv when building for z10.
10812         (print_operand_address): Handle symbol ref addresses.
10813         (print_operand): Output modifier 'c' added for signed byte values.
10814         (s390_encode_section_info): Mark symbol refs with
10815         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
10816
10817         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
10818         (length attribute): RRF, RRR have 4 byte length.
10819         (FPALL, INTALL): New mode iterators added.
10820         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
10821         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
10822         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
10823         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
10824         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
10825         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
10826         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
10827         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
10828         instructions.
10829         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
10830         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
10831         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
10832         reload<INTALL:mode><P:mode>_toreg_z10,
10833         reload<FPALL:mode><P:mode>_tomem_z10,
10834         reload<FPALL:mode><P:mode>_toreg_z10,
10835         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
10836         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
10837         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
10838         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
10839         definition.
10840         (movmem, clrmem, cmpmem): New splitters added.
10841
10842         * config/s390/predicates.md (larl_operand): Use
10843         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
10844         SYMBOL_REF_ALIGN1_P.
10845         (s390_signed_integer_comparison,
10846         s390_unsigned_integer_comparison): New predicates.
10847
10848         * config/s390/s390-protos.h (s390_check_symref_alignment,
10849         s390_contiguous_bitmask_p, s390_reload_larl_operand,
10850         s390_reload_symref_address,
10851         s390_compare_and_branch_condition_mask): Prototypes added.
10852
10853         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
10854         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
10855         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
10856
10857 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
10858
10859         * config/s390/s390.c (z10_cost): New cost function for z10.
10860         (s390_handle_arch_option, override_options): Support -march=z10 switch.
10861         (s390_issue_rate): Adjust issue rate for z10.
10862         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
10863         (processor_flags): Add PF_Z10.
10864         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
10865         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
10866         * gcc/config.gcc: Add z10.
10867
10868 2008-05-28  Richard Guenther  <rguenther@suse.de>
10869
10870         PR tree-optimization/36291
10871         * tree-flow. h (struct gimple_df): Remove var_anns member.
10872         * tree-flow-inline.h (gimple_var_anns): Remove.
10873         (var_ann): Simplify.
10874         * tree-dfa.c (create_var_ann): Simplify.
10875         (remove_referenced_var): Clear alias info from var_anns of globals.
10876         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
10877         (delete_tree_ssa): Clear alias info from var_anns of globals.
10878         Do not free var_anns.
10879         (var_ann_eq): Remove.
10880         (var_ann_hash): Likewise.
10881
10882 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
10883
10884         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
10885         and loongson2f entries.
10886         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
10887         * config/mips/mips.h (processor_type): Add Loongson-2E
10888         and Loongson-2F entries.
10889         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
10890         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
10891         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
10892         * doc/invoke.texi (MIPS Options): Document loongson2e
10893         and loongson2f processor names.
10894
10895 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
10896
10897         PR target/35767
10898         PR target/35771
10899         * config/i386/i386.c (ix86_function_arg_boundary): Use
10900         alignment of canonical type.
10901         (ix86_expand_vector_move): Check unaligned memory access for
10902         all SSE modes.
10903
10904 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
10905
10906         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
10907         Moved to the front of file.
10908
10909 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
10910             H.J. Lu  <hongjiu.lu@intel.com>
10911
10912         * dwarf2out.c (current_fde): New.
10913         (add_cfi): Use it.
10914         (lookup_cfa:): Likewise.
10915         (dwarf2out_end_epilogue): Likewise.
10916         (dwarf2out_note_section_used): Likewise.
10917
10918 2008-05-27  Michael Matz  <matz@suse.de>
10919
10920         PR c++/27975
10921         * c.opt (Wenum-compare): New warning option.
10922         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
10923
10924 2008-05-27  Michael Matz  <matz@suse.de>
10925
10926         PR middle-end/36326
10927         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
10928         non-BLKmode types.
10929         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
10930         into memory as tail calls.
10931
10932 2008-05-27  Richard Guenther  <rguenther@suse.de>
10933
10934         PR tree-optimization/36339
10935         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
10936         pointers cause all addressable variables to be call clobbered.
10937
10938 2008-05-27  Richard Guenther  <rguenther@suse.de>
10939
10940         PR tree-optimization/36245
10941         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
10942
10943 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
10944
10945         * config/s390/s390.md: Replace all occurences of the 'm'
10946         constraint with 'RT'.
10947
10948 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
10949
10950         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
10951         definitions added.
10952         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
10953         "*movdi_64".
10954         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
10955         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
10956         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
10957
10958 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
10959
10960         * reload.c: (find_reloads): Skip alternatives according to the
10961         "enabled" attribute. Constify the constraint variable.
10962         * recog.c (get_attr_enabled): Add default implementation.
10963         (extract_insn): Set the alternative_enabled_p array
10964         in the recog_data struct.
10965         (preprocess_constraints, constrain_operands): Skip
10966         alternatives according to the "enabled" attribute
10967         * recog.h (struct recog_data): New field alternative_enabled_p.
10968         (skip_alternative): New inline function.
10969         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
10970         (record_reg_classes): Skip alternative according to the
10971         "enabled" attribute.
10972
10973         * doc/md.texi: Add documention for the "enabled" attribute.
10974
10975 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
10976
10977         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
10978         * postreload.c (reload_cse_simplify_operands): Replace 'm'
10979         constraint with TARGET_MEM_CONSTRAINT.
10980         * recog.c (asm_operand_ok, preprocess_constraints,
10981         constrain_operands): Likewise.
10982         * regclass.c (record_reg_classes): Likewise.
10983         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
10984         * reload1.c (maybe_fix_stack_asms): Likewise.
10985         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
10986         * recog.h: Adjust comment.
10987         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
10988         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
10989         * doc/md.texi: Add a note to description of 'm' constraint.
10990         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
10991
10992 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
10993
10994         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
10995         that the bitfield is of integral type before testing its precision.
10996
10997 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
10998             Sa Liu  <saliu@de.ibm.com>
10999
11000         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
11001         __modti3, __udivti3, __umodti3 and __udivmodti4.
11002         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
11003         that implement TImode mul and div functions.
11004         * config/spu/multi3.c: New. Implement __multi3.
11005         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
11006         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
11007         functions on SPU.
11008
11009 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
11010
11011         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
11012         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
11013         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
11014         tls_sysv_suffix): New mode and mode attribute iterators.
11015         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
11016         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
11017         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
11018         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
11019         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
11020         iterators.
11021
11022 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
11023
11024         PR tree-optimization/36329
11025         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
11026         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
11027         * cgraphbuild.c (initialize_inline_failed): Use the latter
11028         macro in lieu of the former.
11029         * ipa-inline.c (cgraph_mark_inline): Likewise.
11030         (cgraph_decide_inlining_of_small_function): Likewise.
11031         (cgraph_decide_inlining): Likewise.
11032         (cgraph_decide_inlining_incrementally): Likewise.
11033
11034 2008-05-26  Tristan Gingold  <gingold@adacore.com>
11035             Anatoly Sokolov  <aesok@post.ru>
11036
11037         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
11038         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
11039         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
11040         optimization for 'avr6' architecture.
11041
11042 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
11043
11044         PR target/34932
11045         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
11046
11047 2008-05-26  Richard Guenther  <rguenther@suse.de>
11048
11049         * tree-ssa-sccvn.c (expr_has_constants): Declare.
11050         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
11051
11052 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
11053
11054         PR middle-end/36253
11055         * caller-save.c (insert_restore): Verify alignment of spill space.
11056         (insert_save): Likewise.
11057         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
11058         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
11059         (STACK_SLOT_ALIGNMENT): Likewise.
11060         * function.c (LOCAL_ALIGNMENT): Removed.
11061         (get_stack_local_alignment): New.
11062         (assign_stack_local): Use it.  Set alignment on stack slot.
11063         (assign_stack_temp_for_type): Use get_stack_local_alignment.
11064         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
11065         (STACK_SLOT_ALIGNMENT): New.
11066         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
11067         stack slot in XFmode.
11068
11069         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
11070
11071 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
11072
11073         PR/36321
11074         * config/i386/i386.md (allocate_stack_worker_64): Make sure
11075         argument operand in rax isn't removed.
11076
11077 2008-05-26  Richard Guenther  <rguenther@suse.de>
11078
11079         PR middle-end/36300
11080         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
11081         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
11082
11083 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
11084
11085         PR bootstrap/36331
11086         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
11087
11088 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
11089
11090         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
11091         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
11092
11093 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
11094
11095         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
11096         build a trampoline if we don't want one.
11097         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
11098         return zero for nested functions if we don't want a trampoline.
11099
11100 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
11101
11102         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
11103
11104 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
11105
11106         PR fortran/18428
11107         * c.opt: Removed undocumented option '-lang-fortran'.
11108         * c-common.h: Removed global variable 'lang_fortran'.
11109         * c-opts.c (c_common_handle_option): Removed code to handle
11110         option '-lang-fortran'. Updated includes.
11111         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
11112         definition of '__GFORTRAN__'.
11113         (define__GNUC__): Reimplemented to use BASEVER and
11114         cpp_define_formatted.
11115         (builtin_define_with_value_n): Removed.
11116         * c-incpath.h: Renamed to ...
11117         * incpath.h: ... this.
11118         * c-incpath.c: Renamed to ...
11119         * incpath.c: ... this. Updated includes.
11120         * fix-header.c: Updated includes.
11121         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
11122         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
11123         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
11124
11125 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
11126
11127         * tree.h: Update the table of flags used on tree nodes.
11128         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
11129         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
11130         (FORCED_LABEL): Add access check.
11131         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
11132         (ASM_INPUT_P): Likewise.
11133         (ASM_VOLATILE_P): Likewise.
11134         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
11135         (OMP_SECTION_LAST): Access private_flag directly.
11136         (OMP_RETURN_NOWAIT): Likewise.
11137         (OMP_PARALLEL_COMBINED): Likewise.
11138         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
11139         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
11140         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
11141         deprecated_flag directly.
11142
11143 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
11144
11145         * final.c (frame_pointer_needed): Removed.
11146         * flags.h (frame_pointer_needed): Likewise.
11147
11148         * function.h (rtl_data): Add frame_pointer_needed.
11149         (frame_pointer_needed): New.
11150
11151 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
11152
11153         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
11154
11155 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
11156
11157         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
11158         SRC is a REG.
11159
11160 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
11161
11162         * c-common.c (strip_array_types): Move function to..
11163         * tree.c: ..here.
11164         (get_inner_array_type): Delete.
11165         * c-common.h (strip_array_types): Move declaration to..
11166         * tree.h: ..here.
11167         (get_inner_array_type): Delete.
11168         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
11169         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
11170         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
11171         * config/pa/pa.c (emit_move_sequence): Likewise.
11172
11173 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
11174
11175         * config/i386/i386.md (*sse_prologue_save_insn): Set length
11176         attribute to 34.
11177
11178 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
11179
11180         * function.c: Include target hook for nonlocal_goto frame value.
11181
11182 2008-05-24  Richard Guenther  <rguenther@suse.de>
11183
11184         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
11185         variable can be only accessed through a pointer or a union.
11186
11187 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11188
11189         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
11190         * doc/extend.texi: Likewise.
11191
11192 2008-05-23  DJ Delorie  <dj@redhat.com>
11193
11194         * config/m32c/jump.md (untyped_call): Add.
11195
11196         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
11197         for A24 to PSImode.
11198         (m32c_address_cost): Detail costs for indirect offsets.
11199
11200 2008-05-23  Rafael Espindola  <espindola@google.com>
11201
11202         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
11203         if a node is a SUBREG.
11204         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
11205         is a SUBREG.
11206
11207 2008-05-23  Paul Brook  <paul@codesourcery.com>
11208             Carlos O'Donell  <carlos@codesourcery.com>
11209
11210         * doc/extend.texi: Clarify use of __attribute__((naked)).
11211         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
11212         * target.h (gcc_target): Add allocate_stack_slots_for_args.
11213         * function.c (use_register_for_decl): Use
11214         targetm.calls.allocate_stack_slots_for_args.
11215         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
11216         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
11217         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
11218
11219 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
11220
11221         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
11222
11223 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
11224
11225         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
11226         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
11227         is only rounded once.
11228
11229 2008-05-23  Richard Guenther  <rguenther@suse.de>
11230
11231         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
11232
11233 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
11234             Jakub Jelinek  <jakub@redhat.com>
11235
11236         PR target/36079
11237         * configure.ac: Handle --enable-cld.
11238         * configure: Regenerated.
11239         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
11240         * config/i386/i386.h (struct machine_function): Add needs_cld field.
11241         (ix86_current_function_needs_cld): New define.
11242         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
11243         (cld): New isns pattern.
11244         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
11245         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
11246         * config/i386/i386.opt (mcld): New option.
11247         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
11248         TARGET_CLD and ix86_current_function_needs_cld.
11249         (override_options): Use -mcld by default for 32-bit code if
11250         USE_IX86_CLD.
11251
11252         * doc/install.texi (Options specification): Document --enable-cld.
11253         * doc/invoke.texi (Machine Dependent Options)
11254         [i386 and x86-64 Options]: Add -mcld option.
11255         (Intel 386 and AMD x86-64 Options): Document -mcld option.
11256
11257 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
11258         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
11259         (return_in_memory_64): Likewise.
11260         (return_in_memory_ms_64): Likewise.
11261
11262 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11263
11264         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
11265         * builtins.c (fold_builtin_fpclassify): New.
11266         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
11267         * builtins.def (BUILT_IN_FPCLASSIFY): New.
11268         * c-common.c (handle_type_generic_attribute): Adjust to accept
11269         fixed arguments before an elipsis.
11270         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
11271         * doc/extend.texi: Document __builtin_fpclassify.
11272
11273 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
11274
11275         * omp-low.c (gate_expand_omp_ssa): Remove.
11276         (pass_expand_omp_ssa): Remove.
11277         (gate_expand_omp): Do not check for flag_openmp_ssa.
11278         * common.opt (-fopenmp-ssa): Remove.
11279         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
11280
11281 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
11282
11283         * config/sh/sh.opt (mfixed-range): New option.
11284         * config/sh/sh-protos.h (sh_fix_range): Declare.
11285         * config/sh/sh.c (sh_fix_range): New function.
11286         * config/sh/sh.h (sh_fixed_range_str): Declare.
11287         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
11288         is not empty.
11289         * doc/invoke.texi (SH Options): Document -mfixed-range.
11290
11291 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
11292
11293         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
11294         it before the redeclaration.
11295
11296 2008-05-22  Anatoly Sokolov <aesok@post.ru>
11297
11298         * config/avr/avr.c (get_sequence_length): Add new function.
11299         (expand_prologue, expand_epilogue): Remove duplicate code.
11300
11301 2008-05-22  Rafael Espindola  <espindola@google.com>
11302
11303         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
11304         sharing.
11305
11306 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
11307
11308         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
11309         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
11310
11311         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
11312         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
11313         (vect_update_misalignment_for_peel): Likewise.
11314         (vector_alignment_reachable_p): Likewise.
11315         * tree-vect-transform.c (vectorizable_load): Likewise.
11316         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
11317         (get_vectype_for_scalar_type): Pass mode of scalar_type
11318         to UNITS_PER_SIMD_WORD.
11319
11320         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
11321         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
11322         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
11323         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
11324         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
11325
11326 2008-05-22  Ira Rosen  <irar@il.ibm.com>
11327
11328         PR tree-optimization/36293
11329         * tree-vect-transform.c (vect_transform_strided_load): Don't check
11330         if the first load must be skipped because of a gap.
11331
11332 2008-05-22  Richard Guenther  <rguenther@suse.de>
11333
11334         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
11335         more cases of offset disambiguation that is possible if
11336         strict-aliasing rules apply.
11337         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
11338         for basic offset and type-based disambiguation.
11339
11340 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
11341
11342         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
11343         ix86_expand_vector_set on V16QImode for SSE4.1.
11344
11345 2008-05-21  Tom Tromey  <tromey@redhat.com>
11346
11347         * c.opt (Wimport): Mark as undocumented.
11348         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
11349         -Wno-import.
11350         (Warning Options): Likewise.
11351         * doc/cppopts.texi: Don't mention -Wimport.
11352
11353 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
11354
11355         PR tree-optimization/36287
11356         PR tree-optimization/36286
11357         * lambda-code.c (build_access_matrix): Do not use the loop->num
11358         for computing the number of induction variables: use the loop depth
11359         instead.
11360
11361 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
11362
11363         PR/36280
11364         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
11365         option -f(no-)leading-underscore.
11366
11367 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
11368
11369         * config/i386/i386.c (ix86_expand_vector_init_general): Use
11370         GET_MODE_NUNITS (mode).
11371
11372 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
11373
11374         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
11375         (-mmulhw): Add 464 to description.
11376         (-mdlmzb): Likewise.
11377         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
11378         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
11379         464fp entries.
11380         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
11381         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
11382         * config/rs6000/rs6000.md: Update comments for 464.
11383
11384 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
11385
11386         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
11387
11388 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
11389
11390         * config/i386/sse.md (vec_extractv4sf): Removed.
11391         (vec_extractv2df): Likewise.
11392         (vec_extractv2di): Likewise.
11393         (vec_extractv4si): Likewise.
11394         (vec_extractv8hi): Likewise.
11395         (vec_extractv16qi): Likewise.
11396         (vec_extract<mode>): New.
11397
11398 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
11399
11400         * config/i386/sse.md (vec_setv4sf): Removed.
11401         (vec_setv2df): Likewise.
11402         (vec_setv2di): Likewise.
11403         (vec_setv4si): Likewise.
11404         (vec_setv8hi): Likewise.
11405         (vec_setv16qi): Likewise.
11406         (vec_set<mode>): New.
11407
11408 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
11409
11410         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
11411         goto for vec_concat and vec_interleave.
11412
11413 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
11414
11415         * config/i386/sse.md (vec_initv4sf): Removed.
11416         (vec_initv2df): Likewise.
11417         (vec_initv2di): Likewise.
11418         (vec_initv4si): Likewise.
11419         (vec_initv8hi): Likewise.
11420         (vec_initv16qi): Likewise.
11421         (vec_init<mode>): New.
11422
11423 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
11424
11425         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
11426
11427 2008-05-21  Tom Tromey  <tromey@redhat.com>
11428
11429         * ggc-zone.c (lookup_page_table_if_allocated): New function.
11430         (zone_find_object_offset): Likewise.
11431         (gt_ggc_m_S): Likewise.
11432         (highest_bit): Likewise.
11433         * ggc-page.c (gt_ggc_m_S): New function.
11434         * stringpool.c (string_stack): Remove.
11435         (init_stringpool): Update.
11436         (ggc_alloc_string): Use ggc_alloc.
11437         (maybe_delete_ident): New function.
11438         (ggc_purge_stringpool): Likewise.
11439         (gt_ggc_m_S): Remove.
11440         * ggc-common.c (ggc_protect_identifiers): New global.
11441         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
11442         ggc_protect_identifiers.
11443         * ggc.h (ggc_protect_identifiers): Declare.
11444         (gt_ggc_m_S): Update.
11445         (ggc_purge_stringpool): Declare.
11446         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
11447         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
11448         special case.
11449         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
11450
11451 2008-05-21  David S. Miller  <davem@davemloft.net>
11452
11453         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
11454         tmake_file.
11455
11456 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
11457
11458         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
11459         once finished.
11460
11461 2008-05-20  David Daney  <ddaney@avtrex.com>
11462
11463         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
11464         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
11465         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
11466         UNSPEC_UPDATE_GOT_VERSION): Renumber.
11467         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
11468         (atomic_hiqi_op): New define_code_iterator.
11469         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
11470         mips_expand_compare_and_swap_12.
11471         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
11472         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
11473         (sync_<optab><mode>, sync_old_<optab><mode>,
11474         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
11475         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
11476         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
11477         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
11478         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
11479         (test_and_set_12): New insn.
11480         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
11481         sync_new_<optab><mode>, sync_old_nand<mode>,
11482         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
11483         clobber to operand 0 for SI and DI mode insns.
11484         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
11485         mips_gen_fn_4): New typedefs.
11486         (mips_gen_fn_ptrs): Define new union type.
11487         (mips_expand_compare_and_swap_12): Remove declaration.
11488         (mips_expand_atomic_qihi): Declare function.
11489         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
11490         (mips_expand_atomic_qihi): ... this.  Use new generator function
11491         parameter.
11492         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
11493         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
11494         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
11495         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
11496         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
11497         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
11498         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
11499         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
11500         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
11501         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
11502         New macros.
11503
11504 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
11505
11506         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
11507         the missing break.
11508
11509 2008-05-20  Anatoly Sokolov <aesok@post.ru>
11510
11511         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
11512         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
11513         (avr_attribute_table): Add 'OS_main' function attribute.
11514         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
11515         functions with 'OS_main' attribute.
11516
11517 2008-05-20  Richard Guenther  <rguenther@suse.de>
11518
11519         PR tree-optimization/35204
11520         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
11521         helper, split out from ...
11522         (DFS): ... here.  Make the DFS walk non-recursive.
11523
11524 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
11525             Jan Sjodin  <jan.sjodin@amd.com>
11526
11527         PR tree-optimization/36181
11528         * tree-parloops.c (loop_has_vector_phi_nodes): New.
11529         (parallelize_loops): Don't parallelize when the loop has vector
11530         phi nodes.
11531
11532 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
11533             Sebastian Pop  <sebastian.pop@amd.com>
11534
11535         * tree-loop-linear.c (gather_interchange_stats): Look in the access
11536         matrix, and never look at the tree representation of the memory
11537         accesses.
11538         (linear_transform_loops): Computes parameters and access matrices.
11539         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
11540         when fails.
11541         (access_matrix_get_index_for_parameter): New.
11542         * tree-data-ref.h (struct access_matrix): New.
11543         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
11544         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
11545         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
11546         am_vector_index_for_loop): New.
11547         (struct data_reference): Add field access_matrix.
11548         (DR_ACCESS_MATRIX): New.
11549         (compute_data_dependences_for_loop): Update declaration.
11550         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
11551         * lambda.h (lambda_vector_vec_p): Declared.
11552         * lambda-code.c: Depend on pointer-set.h.
11553         (lambda_collect_parameters_from_af, lambda_collect_parameters,
11554         av_for_af_base, av_for_af, build_access_matrix,
11555         lambda_compute_access_matrices): New.
11556         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
11557
11558 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
11559
11560         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
11561         $SOURCEDIR/include.
11562
11563 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
11564             Sebastian Pop  <sebastian.pop@amd.com>
11565
11566         PR tree-optimization/36206
11567         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
11568         FOLD_CONVERSIONS.
11569         (instantiate_scev_1): Rename flags to fold_conversions.
11570         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
11571         outeside instantiation_loop.
11572         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
11573         (evolution_function_is_affine_or_constant_p): Removed.
11574         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
11575         instantiate_scev.
11576         (analyze_siv_subscript): Pass in the loop nest number.
11577         Call evolution_function_is_affine_in_loop instead of
11578         evolution_function_is_affine_p.
11579         (analyze_overlapping_iterations): Pass in the loop nest number.
11580
11581 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
11582             Sebastian Pop  <sebastian.pop@amd.com>
11583
11584         PR tree-optimization/36206
11585         * tree-chrec.h (chrec_fold_op): New.
11586         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
11587         and other trees.
11588
11589 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
11590
11591         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
11592         (DIRS_EQ): New.
11593         (remove_duplicates): Do not set inode on non-inode systems.
11594         Use DIRS_EQ.
11595
11596 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
11597
11598         * config.gcc (tm_file): Update comments about relative pathnames.
11599
11600 2008-05-20  Richard Guenther  <rguenther@suse.de>
11601
11602         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
11603         * tree-ssa-sccvn.c (process_scc): Likewise.
11604         * tree-ssa-sink.c (execute_sink_code): Likewise.
11605         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
11606         * tree-vrp.c (process_assert_insertions): Likewise.
11607         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
11608         (perform_tree_ssa_dce): Likewise.
11609         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
11610         (dump_dominator_optimization_stats): Likewise.
11611         * tree-vectorizer.c (vectorize_loops): Likewise.
11612
11613 2008-05-20  Richard Guenther  <rguenther@suse.de>
11614
11615         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
11616
11617 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
11618
11619         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
11620         (ix86_i386elf_return_in_memory): Likewise.
11621         (ix86_i386interix_return_in_memory): Likewise.
11622         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
11623         (SUBTARGET_RETURN_IN_MEMORY): New.
11624         * config/i386/i386elf.h: Likewise.
11625         * config/i386/ptx4-i.h: Likewise.
11626         * config/i386/sol2-10.h: Likewise.
11627         * config/i386/sysv4.h: Likewise.
11628         * config/i386/vx-common.h: Likewise.
11629         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
11630         * config/i386/i386.c (ix86_return_in_memory): Made static and
11631         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
11632         (ix86_i386elf_return_in_memory): Removed.
11633         (ix86_i386interix_return_in_memory): Removed.
11634         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
11635         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
11636
11637 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
11638
11639         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
11640
11641 2008-05-19  Xinliang David Li  <davidxl@google.com>
11642
11643         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
11644         * opts.c: Ditto.
11645         * common.opt: Ditto.
11646         * doc/invoke.texi: Ditto.
11647
11648 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
11649
11650         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
11651         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
11652
11653 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
11654
11655         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
11656         sizes of operand array from 8/4 to 4/2.
11657         (ix86_expand_vector_init_general): Change size of operand array
11658         from 32 to 16.  Remove op0, op1 and half_mode.
11659
11660 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
11661
11662         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
11663         (ix86_expand_vector_init_interleave): Likewise.
11664         (ix86_expand_vector_init_general): Use them.  Assert
11665         word_mode == SImode when n_words == 4.
11666
11667 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
11668
11669         * config/i386/i386.c (ix86_secondary_reload): New static function.
11670         (TARGET_SECONDARY_RELOAD): New define.
11671         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
11672         * config/i386/i386.md (reload_outqi): Remove.
11673
11674 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11675
11676         PR middle-end/35509
11677         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
11678         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
11679         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
11680         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
11681         (fold_builtin_1): Likewise.
11682         * builtins.def (BUILT_IN_ISINF_SIGN): New.
11683         c-common.c (check_builtin_function_arguments): Handle
11684         BUILT_IN_ISINF_SIGN.
11685         * doc/extend.texi: Document __builtin_isinf_sign.
11686         * fold-const.c (operand_equal_p): Handle COND_EXPR.
11687
11688 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
11689
11690         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
11691         EH cleanup at the end of the pass, search for those that have been
11692         turned into forwarder blocks and do the cleanup on their successor.
11693
11694 2008-05-18  Richard Guenther  <rguenther@suse.de>
11695
11696         * tree-cfg.c (verify_gimple_expr): Allow conversions from
11697         pointers to sizetype and vice versa.
11698
11699 2008-05-18 Xinliang David Li   <davidxl@google.com>
11700
11701         * gcc/tree-ssa-dce.c: Coding style fix.
11702         (check_pow): Documentation comment.
11703         (check_log): Documenation comment. Coding style fix.
11704         (is_unnecessary_except_errno_call): Ditto.
11705         (gen_conditions_for_pow): Ditto.
11706         (gen_conditions_for_log): Ditto.
11707         (gen_shrink_wrap_conditions): Ditto.
11708         (shrink_wrap_one_built_in_calls): Ditto.
11709         * gcc/doc/invoke.texi: Better documentation string.
11710         * ChangeLog: Fix wrong change log entries from
11711         May 17 checkin on function call DCE.
11712
11713 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
11714
11715         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
11716
11717 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
11718
11719         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
11720         * df-problems.c (simulation routines): Fixed block comment to
11721         properly say how to add forwards scanning functions.
11722
11723 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
11724
11725         * tree-inline.c (setup_one_parameter): Remove dead code.
11726
11727 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
11728
11729         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
11730         a BIT_AND_EXPR only for an INTEGER_TYPE.
11731
11732 2008-05-17 Xinliang David Li   <davidxl@google.com>
11733
11734         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
11735         (check_pow, check_log, is_unnecessary_except_errno_call): New
11736         functions to check for eliminating math functions that are pure
11737         except for setting errno.
11738         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
11739         general condition expressions for shrink-wrapping pow/log calls.
11740         (gen_shrink_wrap_conditions): Ditto.
11741         (shrink_wrap_one_built_in_call): Ditto.
11742         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
11743         (mark_operand_necessary): If debugging, output if OP is necessary.
11744         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
11745         unnecessary.
11746         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
11747         opt level >= 2.
11748         * gcc/common.opt: New user flag -ftree-builtin-dce.
11749         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
11750
11751 2008-05-16  David S. Miller  <davem@davemloft.net>
11752
11753         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
11754         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
11755
11756 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
11757
11758         PR target/36246
11759         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
11760
11761 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
11762
11763         * ifcvt.c (dead_or_predicable): Rename
11764         df_simulate_one_insn_backwards to df_simulate_one_insn.
11765         * recog.c (peephole2_optimize): Ditto.
11766         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
11767         Ditto.
11768         * df.h: Rename df_simulate_one_insn_backwards to
11769         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
11770         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
11771         scanning of defs and uses.
11772         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
11773         (df_simulate_one_insn_forwards): Removed.
11774
11775 2008-05-16  Doug Kwan  <dougkwan@google.com>
11776
11777         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
11778         QNaN & SNaN.
11779         (real_from_string): Handle NaNs and Inf as approriate.
11780
11781 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
11782
11783         * doc/gty.texi (Source Files Containing Type Information): Note
11784         that headers should appear first in the gtfiles list.
11785
11786 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
11787
11788         * tree.def (COND_EXEC): Properly documented this code.
11789
11790 2008-05-16  Diego Novillo  <dnovillo@google.com>
11791
11792         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
11793         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
11794         the new field.
11795
11796 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
11797
11798         * tree-ssa-dse (max_stmt_uid): Removed.
11799         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
11800         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
11801         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
11802         * function.h (cfun.last_stmt_uid): New field.
11803         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
11804         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
11805         New functions.
11806         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
11807         (create_stmt_ann): Initialize the ann->uid field.
11808         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
11809         with new calls.
11810         * tree-flow.h (renumber_gimple_stmt_uids): New function.
11811
11812 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
11813
11814         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
11815         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
11816         (init_empty_tree_cfg): Call it.
11817
11818 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
11819
11820         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
11821         Update all users.
11822
11823 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
11824
11825         * doc/invoke.text (-fdump-tree-*-verbose): New option.
11826         * tree-dump.c (dump_options): New verbose option.
11827         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
11828         Add verbose dump.
11829         * tree-pass.h (TDF_VERBOSE): New dump flag.
11830         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
11831         (tree-flow.h): Added include.
11832         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
11833
11834 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
11835
11836         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
11837
11838         From Jie Zhang  <jie.zhang@analog.com>
11839         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
11840         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
11841         mcpu=bf561-none and mcpu=bf561-0.2.
11842         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
11843         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
11844         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
11845         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
11846         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
11847         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
11848         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
11849         option.
11850         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
11851         (cputype_selected): Remove.
11852         (bfin_handle_option): Don't use cputype_selected.
11853         (override_options): When no mcpu option, enable all workarounds.
11854         Don't use bfin_workarounds.
11855         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
11856         processor type.
11857         (DEFAULT_CPU_TYPE): Don't define.
11858
11859 2008-05-16  Richard Guenther  <rguenther@suse.de>
11860
11861         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
11862         on deletion of the last stmt.
11863
11864 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
11865
11866         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
11867         V8HImode for SSE2 and V16QImode for SSE4.1.
11868
11869 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
11870
11871         * cgraph.h (compute_inline_parameters): Made public.
11872         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
11873         variable_generate_summary, function_write_summary,
11874         variable_write_summary, variable_read_summary.  Added generate_summary,
11875         write_summary, read_summary.
11876         * cgraphunit.c (cgraph_process_new_functions): Changed call from
11877         pass_ipa_inline.function_generate_summary, to
11878         compute_inline_parameters.
11879         * ipa-inline.c (compute_inline_parameters): Made public and added
11880         node parameter.
11881         (compute_inline_parameters_for_current): New function.
11882         (pass_inline_param): Now calls compute_inline_parameters_for_current.
11883         (inline_generate_summary): Removed parameter and made to loop over
11884         all cgraph nodes.
11885         (pass_ipa_inline): Updated for new IPA_PASS structure.
11886         * passes.c (execute_ipa_summary_passes): Now is called once per
11887         pass rather than once per node*pass.
11888
11889 2008-05-15  Anatoly Sokolov <aesok@post.ru>
11890
11891         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
11892         avr_have_mul_p, avr_asm_only_p): Remove variables.
11893         (avr_override_options): Remove initialization of removed variables.
11894         (avr_file_start):  Convert removed variables to fields of
11895         'struct base_arch_s *avr_current_arch'.
11896         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
11897         (AVR_HAVE_MUL): (Ditto.).
11898         (AVR_HAVE_MOVW): (Ditto.).
11899         (AVR_HAVE_LPMX): (Ditto.).
11900         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
11901         avr_asm_only_p): Remove declaration.
11902
11903 2008-05-15  Diego Novillo  <dnovillo@google.com>
11904
11905         * config/arm/arm.c (arm_return_in_memory): Fix return type.
11906         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
11907
11908 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
11909
11910         PR middle-end/36194
11911         * combine.c (check_conversion): Rename back to check_promoted_subreg.
11912         Don't call record_truncated_value from here.
11913         (record_truncated_value): Turn it into a for_each_rtx callback.
11914         (record_truncated_values): New function.
11915         (combine_instructions): Call note_uses with record_truncated_values.
11916         Change name of check_conversion to check_promoted_subreg.
11917
11918 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
11919
11920         * doc/sourcebuild.texi: Document support for torture tests.
11921
11922 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
11923
11924         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
11925         to alternative 4 of operand 2.
11926
11927 2008-05-15  Richard Guenther  <rguenther@suse.de>
11928
11929         * tree-pass.h (current_pass): Declare.
11930         (get_pass_for_id): Likewise.
11931         * passes.c (passes_by_id, passes_by_id_size): New globals.
11932         (set_pass_for_id): New function.
11933         (get_pass_for_id): Likewise.
11934         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
11935         (execute_function_todo): Flush per function statistics.
11936         * toplev.c (compile_file): Init statistics.
11937         (general_init): Do early statistics initialization.
11938         (finalize): Finish statistics.
11939         * statistics.h (statistics_early_init): Declare.
11940         (statistics_init): Likewise.
11941         (statistics_fini): Likewise.
11942         (statistics_fini_pass): Likewise.
11943         (statistics_counter_event): Likewise.
11944         (statistics_histogram_event): Likewise.
11945         * statistics.c: New file.
11946         * Makefile.in (OBJS-common): Add statistics.o.
11947         (statistics.o): Add dependencies.
11948         * doc/invoke.texi (-fdump-statistics): Document.
11949
11950         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
11951         (insert): Likewise.
11952         (execute_pre): Use statistics_counter_event.
11953         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
11954         (substitute_and_fold): Increment it.  Use statistics_counter_event.
11955
11956 2008-05-15  Diego Novillo  <dnovillo@google.com>
11957
11958         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
11959
11960         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
11961         * tree-ssa-alias.c (new_type_alias): Remove references to
11962         sub-variables from comment.
11963         * tree-ssa-operands.c (swap_tree_operands): Likewise.
11964
11965 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
11966
11967         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
11968         attribute to 1 only for insertps alternative.
11969
11970 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
11971
11972         * config/bfin/bfin.md (loadbytes): New pattern.
11973         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
11974         (bfin_init_builtins): Initialize it.
11975         (bdesc_1arg): Add it.
11976
11977 2008-05-15  Sa Liu  <saliu@de.ibm.com>
11978
11979         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
11980         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
11981         * testsuite/lib/target-supports.exp: Add
11982         check_effective_target_fortran_integer_16.
11983
11984 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
11985
11986         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
11987         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
11988         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
11989         (TARGET_RETURN_IN_MEMORY): Define.
11990
11991 2008-05-15  Richard Guenther  <rguenther@suse.de>
11992
11993         PR middle-end/36244
11994         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
11995         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
11996         represent unmodifiable vars.
11997
11998 2008-05-15  Richard Guenther  <rguenther@suse.de>
11999
12000         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
12001         INDIRECT_REF and TARGET_MEM_REF.
12002         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
12003         TARGET_MEM_REF.
12004
12005 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
12006             H.J. Lu  <hongjiu.lu@intel.com>
12007
12008         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
12009         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
12010         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
12011         insn alternatives.  Add missing alternatives.
12012         (*vec_concatv2di_rex64_sse4_1): Likewise.
12013         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
12014         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
12015         Require TARGET_SSE.
12016
12017 2008-05-15  Richard Guenther  <rguenther@suse.de>
12018
12019         PR tree-optimization/36009
12020         PR tree-optimization/36204
12021         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
12022         (determine_invariantness_stmt): Record the loop a store is
12023         always executed in.
12024         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
12025         dependency.
12026
12027 2008-05-15  Richard Guenther  <rguenther@suse.de>
12028
12029         PR tree-optimization/34330
12030         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
12031         through the pointer will alias the SMT.
12032
12033 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
12034
12035         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
12036
12037 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
12038
12039         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
12040
12041 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
12042             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
12043
12044         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
12045         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
12046         (vashl_optab): New optab for vector/vector shifts.
12047         (vashr_optab): Ditto.
12048         (vlshr_optab): Ditto.
12049         (vrotl_optab): Ditto.
12050         (vrotr_optab): Ditto.
12051         (optab_subtype): New enum for optab_for_tree_code call.
12052         (optab_for_tree_code): Add enum optab_subtype argument.
12053
12054         * optabs.c (optab_for_tree_code): Take an additional argument to
12055         distinguish between a vector shift by a scalar and vector shift by
12056         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
12057         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
12058         vector shift by a vector.
12059         (expand_widen_pattern_expr): Pass additional argument to
12060         optab_for_tree_code.
12061
12062         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
12063         vrotl_optab, vrotr_optab.
12064
12065         * expr.c (expand_expr_real_1): Update calls to
12066         optab_for_tree_code to distinguish between vector shifted by a
12067         scalar and vector shifted by a vector.
12068         * tree-vectorizer.c (supportable_widening_operation): Ditto.
12069         (supportable_narrowing_operation): Ditto.
12070         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
12071         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
12072         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
12073         (vect_create_epilog_for_reduction): Ditto.
12074         (vectorizable_reduction): Ditto.
12075         (vectorizable_operation): Ditto.
12076         (vect_strided_store_supported): Ditto.
12077         (vect_strided_load_supported): Ditto.
12078         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
12079         * expmed.c (expand_shift): Ditto.
12080
12081         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
12082         scalar type.
12083         (ashr@var{m}3): Ditto.
12084         (vashl@var{m}3): Document new vector/vector shift standard name.
12085         (vashr@var{m}3): Ditto.
12086         (vlshr@var{m}3): Ditto.
12087         (vrotl@var{m}3): Ditto.
12088         (vrotr@var{m}3): Ditto.
12089
12090         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
12091         (PPERM_INVERT): Ditto.
12092         (PPERM_REVERSE): Ditto.
12093         (PPERM_REV_INV): Ditto.
12094         (PPERM_ZERO): Ditto.
12095         (PPERM_ONES): Ditto.
12096         (PPERM_SIGN): Ditto.
12097         (PPERM_INV_SIGN): Ditto.
12098         (PPERM_SRC1): Ditto.
12099         (PPERM_SRC2): Ditto.
12100
12101         * config/i386/sse.md (mulv2di3): Add SSE5 support.
12102         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
12103         allows a memory operand to be the value being added, and split it
12104         to improve vectorization.
12105         (sse5_pmacsdqh_mem): Ditto.
12106         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
12107         (sse5_mulv2div2di3_high): Ditto.
12108         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
12109         (vec_pack_trunc_v4si): Ditto.
12110         (vec_pack_trunc_v2di): Ditto.
12111         (sse5_pcmov_<mode>): Remove code that tried to use use
12112         andps/andnps instead of pcmov.
12113         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
12114         pmacsdqh instructions.
12115         (vec_widen_smult_lo_v4si): Ditto.
12116
12117         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
12118         (PPERM_INVERT): Ditto.
12119         (PPERM_REVERSE): Ditto.
12120         (PPERM_REV_INV): Ditto.
12121         (PPERM_ZERO): Ditto.
12122         (PPERM_ONES): Ditto.
12123         (PPERM_SIGN): Ditto.
12124         (PPERM_INV_SIGN): Ditto.
12125         (PPERM_SRC1): Ditto.
12126         (PPERM_SRC2): Ditto.
12127         (ix86_expand_sse_movcc): Move the SSE5 test after the if
12128         true/false tests.
12129         (ix86_expand_int_vcond): If SSE5 generate all possible integer
12130         comparisons.
12131         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
12132         says ignore whether the last reference is a memory operand.
12133
12134 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
12135             Paolo Bonzini <bonzini at gnu dot org>
12136
12137         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
12138         shift patterns.
12139
12140         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
12141         (vlshr<mode>3): Rename from vlshr<mode>3.
12142         (vashr<mode>3): Rename from vashr<mode>3.
12143         (mulv4sf3): Change the names of vector shift patterns.
12144         (mulv4si3): Ditto.
12145         (negv4sf2): Ditt.
12146
12147         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
12148         shift insns.
12149
12150         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
12151         (SI_SHLHI): Ditto.
12152         (SI_SHL): Ditto.
12153         (SI_SHLI): Ditto.
12154         (SI_ROTH): Ditto.
12155         (SI_ROTHI): Ditto.
12156         (SI_ROT): Ditto.
12157         (SI_ROTI): Ditto.
12158         (SPU_RL_0): Ditto.
12159         (SPU_RL_1): Ditto.
12160         (SPU_RL_2): Ditto.
12161         (SPU_RL_3): Ditto.
12162         (SPU_RL_4): Ditto.
12163         (SPU_RL_5): Ditto.
12164         (SPU_RL_6): Ditto.
12165         (SPU_RL_7): Ditto.
12166         (SPU_SL_0): Ditto.
12167         (SPU_SL_1): Ditto.
12168         (SPU_SL_2): Ditto.
12169         (SPU_SL_3): Ditto.
12170         (SPU_SL_4): Ditto.
12171         (SPU_SL_5): Ditto.
12172         (SPU_SL_6): Ditto.
12173         (SPU_SL_7): Ditto.
12174
12175         * config/spu/spu.md (v): New iterator macro to add v for vector types.
12176         (floatunssidf2_internal): Change vector/vector shift names.
12177         (floatunsdidf2_internal): Ditto.
12178         (mulv8hi3): Ditto.
12179         (ashrdi3): Ditto.
12180         (ashrti3): Ditto.
12181         (cgt_df): Ditto.
12182         (cgt_v2df): Ditto.
12183         (dftsv): Ditto.
12184         (vashl<mode>3): Rename from ashl<mode>3.
12185         (vashr<mode>3): Rename from ashr<mode>3.
12186         (vlshr<mode>3): Rename from lshr<mode>3.
12187         (vrotl<mode>3): Rename from rotl<mode>3.
12188
12189 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
12190
12191         PR target/36224
12192         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
12193         multiply gives the wrong value when doing widening multiplies.
12194         (vec_widen_smult_lo_v4si): Ditto.
12195
12196 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
12197
12198         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
12199         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
12200         emit_library_call_value.
12201         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
12202         * tree.h (ECF_LIBCALL_BLOCK): Removed.
12203         * calls.c (initialize_argument_information, precompute_arguments,
12204         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
12205         (precompute_arguments): Removed flags parameter.
12206         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
12207
12208 2008-05-14  Richard Guenther  <rguenther@suse.de>
12209
12210         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
12211         Make sure to register the store if the use is a PHI_NODE.
12212
12213 2008-05-14  Olivier Hainque  <hainque@adacore.com>
12214
12215         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
12216         memory if the component is to be referenced in BLKmode according
12217         to get_inner_reference.
12218
12219 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
12220
12221         * calls.c (emit_library_call_value_1): Restore code clearing
12222         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
12223
12224 2008-05-14  Olivier Hainque  <hainque@adacore.com>
12225             Nicolas Roche  <roche@adacore.com>
12226
12227         * configure.ac: Add support for a "gcc_subdir" variable in
12228         config-lang.in, to denote a subdirectory where the language/GCC
12229         integration files are to be found.
12230         * configure: Regenerate.
12231
12232 2008-05-14  Ira Rosen  <irar@il.ibm.com>
12233
12234         PR tree-optimization/36098
12235         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
12236         value for the first load in the group in case of a gap.
12237         (vect_build_slp_tree): Check that there are no gaps in loads.
12238
12239 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
12240
12241         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
12242         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
12243         expand_copysign_bit, ): Change call to emit_no_conflict_block to
12244         emit_insn and remove unneeded code to construct extra args.
12245         (emit_no_conflict_block): Removed.
12246         * optabls.h: (emit_no_conflict_block): Removed.
12247         * cse.c (cse_extended_basic_block): Remove search for
12248         REG_NO_CONFLICT note.
12249         * global.c: Removed incorrect comment added in revision 117.
12250         * expr.c (convert_move): Change call to emit_no_conflict_block to
12251         emit_insn.
12252         * recog.c: Change comments so that they do not mention
12253         REG_NO_CONFLICT.
12254         * local_alloc.c (combine_regs): Removed last parameter.
12255         (no_conflict_p): Removed.
12256         (block_alloc): Removed note, no_conflict_combined_regno and set
12257         local vars. Removed all code to process REG_NO_CONFLICT blocks.
12258         (combine_regs): Removed already_dead and code to look for
12259         REG_NO_CONFLICT notes.
12260         * lower_subreg (remove_retval_note): Removed code to look for
12261         REG_NO_CONFLICT block.
12262         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
12263         (resolve_clobber): Remove code to process libcalls that have
12264         REG_NO_CONFLICT notes.
12265         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
12266         case.
12267         * combine.c (can_combine_p, distribute_notes):  Removed
12268         REG_NO_CONFLICT case.
12269         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
12270         to emit_insns.
12271         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
12272         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
12273         Ditto.
12274         * reg-notes.def (NO_CONFLICT): Removed.
12275
12276 2008-05-14  David S. Miller  <davem@davemloft.net>
12277
12278         * config/sparc/sparc.c (sparc_profile_hook): If
12279         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
12280         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
12281         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
12282
12283 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
12284
12285         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
12286
12287 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
12288
12289         PR target/36222
12290         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
12291         and op1 expansion before vector concat to have less live pseudos.
12292
12293 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
12294
12295         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
12296         ix86_expand_vector_set if supported.
12297
12298 2008-05-13  Diego Novillo  <dnovillo@google.com>
12299             Kenneth Zadeck  <zadeck@naturalbridge.com>
12300
12301         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
12302
12303         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
12304         phinodes_print_statistics, init_ssanames, fini_ssanames,
12305         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
12306         release_ssa_name, release_defs, replace_ssa_name_symbol,
12307         ssanames_print_statistics): Move ...
12308         * tree-flow.h: ... here.
12309         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
12310         Use FN instead of cfun.
12311         (make_ssa_name_fn): Rename from make_ssa_name.
12312         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
12313         * tree-flow-inline.h (make_ssa_name): Move from
12314         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
12315         * omp-low.c (expand_omp_parallel):
12316         * tree-flow-inline.h (redirect_edge_var_map_result):
12317         * tree-ssa.c (init_tree_ssa): Add argument FN.
12318         Use it instead of cfun.  Update all users.
12319
12320 2008-05-13  Tom Tromey  <tromey@redhat.com>
12321
12322         PR preprocessor/22168:
12323         * doc/cpp.texi (Top): Update menu.
12324         (Alternatives to Wrapper #ifndef): New node.
12325         (Other Directives): Document deprecation.
12326         (Obsolete Features): Remove menu.
12327         (Assertions): Merge node into Obsolete Features.
12328         (Obsolete once-only headers): Move earlier; rename to Alternatives
12329         to Wrapper #ifndef.
12330         * doc/cppopts.texi: Update.
12331         * c.opt (Wdeprecated): Enable for C and ObjC.
12332         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
12333         (C++ Dialect Options): Move -Wno-deprecated from here to...
12334         (Warning Options): ... here.
12335
12336 2008-05-13  Richard Guenther  <rguenther@suse.de>
12337
12338         PR middle-end/36227
12339         * fold-const.c (fold_sign_changed_comparison): Do not allow
12340         changes in pointer-ness.
12341
12342 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
12343
12344         PR target/24713
12345         * config/sh/sh.c (sh_expand_prologue): Don't clear
12346         RTX_FRAME_RELATED_P for push insns.
12347
12348 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
12349
12350         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
12351
12352 2008-05-12  Anatoly Sokolov <aesok@post.ru>
12353
12354         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
12355         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
12356         Use 'machine->is_leaf' instead of 'leaf_func_p'.
12357
12358 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
12359
12360         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
12361         (*vec_concatv4sf_sse): This.
12362         (*sse2_concatv2si): Renamed to ...
12363         (*vec_concatv2si_sse2): This.
12364         (*sse1_concatv2si): Renamed to ...
12365         (*vec_concatv2si_sse): This.
12366         (*vec_concatv2di_rex): Renamed to ...
12367         (*vec_concatv2di_rex64): This.
12368         (*vec_concatv2si_sse4_1): New.
12369         (*vec_concatv2di_rex64_sse4_1): Likewise.
12370
12371 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
12372
12373         PR rtl-optimization/36111
12374         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
12375         that was created for swappable operands.
12376
12377 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
12378
12379         PR ada/36001
12380         * Makefile.in: Substitute GNATMAKE and GNATBIND.
12381         * configure.ac: Add call to ACX_PROG_GNAT.
12382
12383 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
12384
12385         * optc-gen.awk: Fix comment typo.
12386
12387 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
12388
12389         * pretty-print.c (pp_integer_with_precision): Use
12390         HOST_LONG_LONG_FORMAT.
12391
12392 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
12393
12394         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
12395
12396 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
12397
12398         * config/i386/i386.c (bdesc_ptest): Removed.
12399         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
12400         (bdesc_args): Add __builtin_ia32_ptestz128,
12401         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
12402         (ix86_init_mmx_sse_builtins): Updated.
12403         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
12404         (ix86_expand_builtin): Updated.
12405
12406 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
12407
12408         * tree-cfg.c (valid_fixed_convert_types_p): New function.
12409         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
12410
12411 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
12412
12413         * value-prof.c (interesting_stringop_to_profile): Do not
12414         return early for BUILT_IN_MEMPCPY.
12415
12416 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
12417
12418         * calls.c (expand_call): Don't use callgraph to increase
12419         preferred_stack_boundary.
12420
12421         * cgraph.h (cgraph_rtl_info): Use unsigned on
12422         preferred_incoming_stack_boundary.
12423
12424         * final.c (rest_of_clean_state): Use unsigned on
12425         preferred_stack_boundary.
12426
12427 2008-05-09  Tom Tromey  <tromey@redhat.com>
12428
12429         PR preprocessor/22231:
12430         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
12431         proceeding.
12432
12433 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
12434
12435         PR tree-optimization/36129
12436         * tree-ssa-ccp.c: Include value-prof.h.
12437         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
12438         built-in function was folded to a constant.
12439         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
12440
12441 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
12442             Sebastian Pop  <sebastian.pop@amd.com>
12443
12444         * tree-scalar-evolution.c: Document instantiate_scev.
12445         (instantiate_parameters_1): Renamed instantiate_scev_1.
12446         Don't use the same loop for instantiation_loop and evolution_loop.
12447         (instantiate_scev): New.
12448         (instantiate_parameters): Moved...
12449         (resolve_mixers): Update call to instantiate_scev_1 to pass the
12450         same loop twice.  Maintains the semantics for this function.
12451         * tree-scalar-evolution.h (instantiate_scev): Declare.
12452         (instantiate_parameters): ...here.  Now static inline.
12453         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
12454         instead of resolve_mixers.
12455
12456 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
12457
12458         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
12459
12460 2008-05-09  Tomas Bily  <tbily@suse.cz>
12461
12462         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
12463         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
12464         * tree-ssa-structalias.c (get_constraint_for): Likewise.
12465         * c-common.c (c_common_truthvalue_conversion): Likewise.
12466         * tree-object-size.c (compute_object_offset): Likewise.
12467         * tree-inline.c (estimate_num_insns_1): Likewise.
12468         * varasm.c (const_hash_1, compare_constant, copy_constant)
12469         (compute_reloc_for_constant, output_addressed_constants)
12470         (initializer_constant_valid_p): Likewise.
12471         * c-omp.c (check_omp_for_incr_expr): Likewise.
12472         * gimplify.c (gimplify_expr): Likewise.
12473         * c-typeck.c (c_finish_return): Likewise.
12474         * tree-vectorizer.c (supportable_widening_operation)
12475         (supportable_narrowing_operation): Likewise.
12476         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
12477         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
12478         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
12479         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
12480         (descr_info_loc): Likewise.
12481         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
12482         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
12483         (fold_unary): Likewise.
12484         * builtins.c (get_pointer_alignment): Likewise.
12485         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
12486         (instantiate_parameters_1): Likewise.
12487         * tree.c (expr_align, stabilize_reference): Likewise.
12488         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
12489         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
12490         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
12491         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
12492         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
12493         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
12494         Likewise.
12495         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
12496         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
12497         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
12498         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
12499         (forward_propagate_comparison)
12500         (tree_ssa_forward_propagate_single_use_vars): Likewise.
12501         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
12502         * emit-rtl.c (component_ref_for_mem_expr)
12503         (set_mem_attributes_minus_bitpos): Likewise.
12504         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
12505         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
12506         Likewise.
12507         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
12508         (build_function_call, pointer_diff, build_compound_expr)
12509         (c_finish_return): Likewise.
12510         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
12511         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
12512         Likewise.
12513         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
12514         * expr.c (is_aligning_offset): Likewise.
12515         * tree-ssa-alias.c (is_escape_site): Likewise.
12516         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
12517         (check_all_va_list_escapes): Likewise.
12518         * tree-ssa-loop-ivopts.c (determine_base_object)
12519         (determine_common_wider_type): Likewise.
12520         * dojump.c (do_jump): Likewise.
12521         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
12522         * tree-gimple.c (is_gimple_cast): Likewise.
12523         * fold-const.c (decode_field_reference, )
12524         (fold_sign_changed_comparison, fold_unary, fold_comparison)
12525         (fold_binary): Likewise.
12526         * tree-ssa-alias-warnings.c (find_alias_site_helper)
12527         (already_warned_in_frontend_p): Likewise.
12528         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
12529         * tree.c (really_constant_p, get_unwidened): Likewise.
12530         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
12531         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
12532         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
12533         Likewise.
12534         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
12535         CONVERT_EXPR_P.
12536         (CONVERT_EXPR_P): Define.
12537         (CASE_CONVERT): Define.
12538
12539 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
12540
12541         PR middle-end/36117
12542         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
12543         (delete_unmarked_insns): When deleting a call, call
12544         delete_unreachable_blocks.
12545         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
12546         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
12547
12548 2008-05-08  Richard Guenther  <rguenther@suse.de>
12549
12550         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
12551         (-ftree-salias): Likewise.
12552         (salias-max-implicit-fields): Remove param documentation.
12553         (salias-max-array-elements): Likewise.
12554         * tree-pass.h (pass_create_structure_vars): Remove.
12555         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
12556         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
12557         * tree-ssa-alias.c (create_structure_vars): Remove.
12558         (gate_structure_vars): Likewise.
12559         (pass_create_structure_vars): Likewise.
12560         (gate_build_alias): Likewise.
12561         (pass_build_alias): Adjust to run always and dump the function.
12562         * common.opt (ftree-salias): Hide.
12563         * passes.c (init_optimization_passes): Remove
12564         pass_create_structure_vars, adjust comment.
12565         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
12566         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
12567         * opts.c (decode_options): Do not set flag_tree_salias.
12568         (common_handle_option): Add OPT_ftree_salias to the backward
12569         compatibility section.
12570
12571 2008-05-08  Richard Guenther  <rguenther@suse.de>
12572
12573         * tree-flow-inline.h (var_can_have_subvars): Move ...
12574         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
12575         * tree-flow.h (var_can_have_subvars): Remove.
12576         (push_fields_onto_fieldstack): Remove.
12577         (sort_fieldstack): Likewise.
12578         (struct fieldoff): Move ...
12579         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
12580         alias_set and base_for_components fields.
12581         (sort_fieldstack): Make static.
12582         (push_fields_onto_fieldstack): Likewise.  Remove code that
12583         handles anything but RECORD_TYPEs.  Remove alias_set and
12584         base_for_components handling.
12585         (create_variable_info_for): Adjust.
12586
12587 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
12588
12589         * common.opt (Wframe-larger-than=): Shorten the help message
12590         to one line.
12591         * doc/invoke.texi (Wframe-larger-than=): Add more description.
12592
12593 2008-05-08  Rafael Espindola  <espindola@google.com>
12594
12595         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
12596         trap.
12597         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
12598         trap and that both operands are gimple values.
12599         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
12600         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
12601         is a fp operation.
12602
12603 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
12604
12605         * read-rtl.c (join_c_conditions): Return the first string if the
12606         two strings are equal.
12607
12608 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
12609
12610         * gensupport.h (pred_data): Add a "num_codes" field.
12611         (add_predicate_code): Declare.
12612         * gensupport.c (add_predicate_code): New function.
12613         (std_pred_table): Add an "allows_const_p" field.
12614         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
12615         Remove the (incomplete) list of such codes from the codes field.
12616         (init_predicate_table): Use add_predicate_code.  Add all
12617         RTX_CONST_OBJs if allows_const_p is true.
12618         * genrecog.c (process_define_predicate): Use add_predicate_code.
12619
12620 2008-05-08  David Daney  <ddaney@avtrex.com>
12621             Richard Sandiford  <rsandifo@nildram.co.uk>
12622
12623         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
12624         special case of constant zero operands.
12625         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
12626         old and new values.  Special case constant zero values.
12627         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
12628         fails.
12629         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
12630         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
12631
12632 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
12633
12634         PR target/36090
12635         * simplify-rtx.c (simplify_plus_minus): Create CONST of
12636         similar RTX_CONST_OBJ before CONST_INT.
12637
12638 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
12639
12640         * stmt.c (expand_stack_restore): Change sa mode if needed.
12641
12642 2008-05-08  Richard Guenther  <rguenther@suse.de>
12643
12644         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
12645         return type to bool.
12646         (ix86_sol10_return_in_memory): Likewise.
12647         (ix86_i386elf_return_in_memory): Likewise.
12648         (ix86_i386interix_return_in_memory): Likewise.
12649         * config/i386/i386.c (ix86_return_in_memory): Likewise.
12650         (ix86_sol10_return_in_memory): Likewise.
12651         (ix86_i386elf_return_in_memory): Likewise.
12652         (ix86_i386interix_return_in_memory): Likewise.
12653
12654 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
12655
12656         PR bootstrap/36180
12657         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
12658         fndecl argument.
12659         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
12660         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
12661         declared in front.
12662
12663 2008-05-08  Richard Guenther  <rguenther@suse.de>
12664
12665         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
12666         * tree-data-ref.h (struct dr_alias): Remove subvars field.
12667         (DR_SUBVARS): Remove.
12668         * tree-dfa.c (dump_subvars_for): Remove.
12669         (debug_subvars_for): Likewise.
12670         (dump_variable): Do not dump subvars.
12671         (remove_referenced_var): Do not remove subvars.
12672         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
12673         (lookup_subvars_for_var): Remove.
12674         (get_subvars_for_var): Likewise.
12675         (get_subvars_at): Likewise.
12676         (get_first_overlapping_subvar): Likewise.
12677         (overlap_subvar): Likewise.
12678         * tree-flow.h (subvar_t): Remove.
12679         (struct var_ann_d): Remove subvars field.
12680         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
12681         argument.  Remove special handling of SFTs.
12682         (compute_tag_properties): Likewise.
12683         (set_initial_properties): Likewise.
12684         (compute_call_clobbered): Likewise.
12685         (count_mem_refs): Likewise.
12686         (compute_memory_partitions): Likewise.
12687         (compute_flow_insensitive_aliasing): Likewise.
12688         (setup_pointers_and_addressables): Likewise.
12689         (new_type_alias): Likewise.
12690         (struct used_part): Remove.
12691         (used_portions): Likewise.
12692         (struct used_part_map): Likewise.
12693         (used_part_map_eq): Likewise.
12694         (used_part_map_hash): Likewise.
12695         (free_used_part_map): Likewise.
12696         (up_lookup): Likewise.
12697         (up_insert): Likewise.
12698         (get_or_create_used_part_for): Likewise.
12699         (create_sft): Likewise.
12700         (create_overlap_variables_for): Likewise.
12701         (find_used_portions): Likewise.
12702         (create_structure_vars): Likewise.
12703         * tree.def (STRUCT_FIELD_TAG): Remove.
12704         * tree.h (MTAG_P): Adjust.
12705         (struct tree_memory_tag): Remove base_for_components and
12706         unpartitionable flags.
12707         (struct tree_struct_field_tag): Remove.
12708         (SFT_PARENT_VAR): Likewise.
12709         (SFT_OFFSET): Likewise.
12710         (SFT_SIZE): Likewise.
12711         (SFT_NONADDRESSABLE_P): Likewise.
12712         (SFT_ALIAS_SET): Likewise.
12713         (SFT_UNPARTITIONABLE_P): Likewise.
12714         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
12715         (union tree_node): Remove sft field.
12716         * alias.c (get_alias_set): Remove special handling of SFTs.
12717         * print-tree.c (print_node): Remove handling of SFTs.
12718         * tree-dump.c (dequeue_and_dump): Likewise.
12719         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
12720         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
12721         * tree-predcom.c (set_alias_info): Do not set subvars.
12722         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
12723         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
12724         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
12725         (add_vars_for_offset): Remove.
12726         (add_virtual_operand): Remove special handling of SFTs.
12727         (add_call_clobber_ops): Likewise.
12728         (add_call_read_ops): Likewise.
12729         (get_asm_expr_operands): Likewise.
12730         (get_modify_stmt_operands): Likewise.
12731         (get_expr_operands): Likewise.
12732         (add_to_addressable_set): Likewise.
12733         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
12734         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
12735         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
12736         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
12737         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
12738         (tree_node_structure): Likewise.
12739         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
12740         handling of SFTs.
12741         (find_what_p_points_to): Likewise.
12742
12743 2008-05-08  Sa Liu  <saliu@de.ibm.com>
12744
12745         * config/spu/spu.md: Fixed subti3 pattern.
12746
12747 2008-05-08  Richard Guenther  <rguenther@suse.de>
12748
12749         PR middle-end/36154
12750         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
12751         sure to create a representative for trailing arrays for PTA.
12752
12753 2008-05-08  Richard Guenther  <rguenther@suse.de>
12754
12755         PR middle-end/36172
12756         * fold-const.c (operand_equal_p): Two objects which types
12757         differ in pointerness are not equal.
12758
12759 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
12760
12761         * calls.c (compute_argument_block_size): Add argument tree fndecl.
12762         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
12763         (emit_library_call_value_1): Add new variable fndecl initialized by
12764         NULL_TREE. It should be the decl type of orgfun, but this information
12765         seems not to be available here, so it uses the default calling abi.
12766         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
12767         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
12768         by TARGET_RETURN_IN_MEMORY.
12769         * config/i386/i386-interix.h: Likewise.
12770         * config/i386/i386.h: Likewise.
12771         * config/i386/i386elf.h: Likewise.
12772         * config/i386/ptx4-i.h: Likewise.
12773         * config/i386/sol2-10.h: Likewise.
12774         * config/i386/sysv4.h: Likewise.
12775         * config/i386/vx-common.h: Likewise.
12776         * config/cris/cris.h: Removed #if 0 clause.
12777         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
12778         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
12779         argument.
12780         (ix86_sol10_return_in_memory): Likewise.
12781         (ix86_i386elf_return_in_memory): New.
12782         (ix86_i386interix_return_in_memory): New.
12783         * config/mt/mt-protos.h (mt_return_in_memory): New.
12784         * config/mt/mt.c: Likewise.
12785         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
12786         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
12787         * config/bfin/bfin.h: Likewise.
12788         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
12789         argument.
12790         * config/bfin/bfin.c: Likewise.
12791         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
12792         * config/alpha/unicosmk.h: Likewise.
12793         * config/i386/cygming.h: Likewise.
12794         * config/iq2000/iq2000.h: Likewise.
12795         * config/mips/mips.h: Likewise.
12796         * config/mn10300/mn10300.h: Likewise.
12797         * config/rs6000/rs6000.h: Likewise.
12798         * config/score/score.h: Likewise.
12799         * config/spu/spu.h: Likewise.
12800         * config/v850/v850.h: Likewise.
12801         * defaults.h: Likewise.
12802         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
12803         * expr.c (emit_block_move): Adjust use of
12804         OUTGOING_REG_PARM_STACK_SPACE.
12805         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
12806         OUTGOING_REG_PARM_STACK_SPACE.
12807         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
12808
12809 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
12810
12811         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
12812         on OMP_RETURN for OMP_FOR.
12813
12814         PR debug/35896
12815         * dwarf2out.c (dw_expand_expr, common_check): Removed.
12816         (fortran_common): New function.
12817         (gen_variable_die): Call fortran_common instead of common_check,
12818         adjust for it returning tree instead of rtx.  Formatting.
12819
12820 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
12821
12822         PR rtl/7335
12823         PR rtl/33826
12824         * see.c (see_copy_insn): Copy new pure const attributes for new call.
12825         * c-decl.c (merge_decls): Ditto.
12826         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
12827         to RTL_CONST_OR_PURE_CALL_P.
12828         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
12829         Initialized DECL_LOOPING_CONST_PURE.
12830         (process_call_operands): Set tree_side_effects properly.
12831         * tree.h (TREE_READONLY_DECL_P): Removed.
12832         (DECL_IS_PURE): Renamed to DECL_PURE_P.
12833         (DECL_LOOPING_OR_CONST_P): New macro.
12834         (struct tree_function_decl): Added looping_const_or_pure_p.
12835         (ECF_*) Renumbered.
12836         (ECF_LOOPING_OR_CONST_P): New macro.
12837         * rtlanal.c (pure_const_p): Removed.
12838         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
12839         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
12840         to RTL_CONST_CALL_P.
12841         * ipa-pure-const.c (pure_const_state_e): Added looping field.
12842         (check_decl, check_tree, check_call, scan_function): Initialize
12843         looping.
12844         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
12845         (static_execute): Set looping true for recursive functions.
12846         Undo setting state to IPA_NEITHER for recursive functions.
12847         * cse.c (cse_insn):
12848         * ifcvt.c (noce_can_store_speculate_p): Changed
12849         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
12850         RTL_CONST_OR_PURE_CALL_P.
12851         * dse.c (scan_insn): Ditto.
12852         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
12853         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
12854         RTL_CONST_OR_PURE_CALL_P.
12855         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
12856         pure_call_p to RTL_CONST_CALL_P.
12857         * gimplify.c (gimplify_call_expr): Clear side effects for
12858         non-looping pure and constant calls.
12859         * calls.c (emit_call_1): Set rtl flags from ecf flags.
12860         (flags_from_decl_or_type): Set ecf flags from decl flags.
12861         (initialize_argument_information): Turn off
12862         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
12863         Change const to pure if callee_copies is true rather than just
12864         turning off const.
12865         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
12866         way of marking pure calls.
12867         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
12868         Remove hack that was supposed to fix pr7335 and remove old
12869         way of marking pure calls.
12870         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
12871         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
12872         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
12873         RTL_CONST_OR_PURE_CALL_P.
12874         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
12875         * loop-invariant.c (find_exits, find_invariant_bb): Changed
12876         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
12877         * sched-deps.c (schedule_analyze): Ditto.
12878         * rtl.h (struct rtx_def): Use call field, unchanging field, and
12879         return_val field of calls to represent pure and const function info.
12880         (CONST_OR_PURE_CALL_P): Deleted macro.
12881         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
12882         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
12883         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
12884         TREE_READONLY.
12885         * tree-optimize.c (execute_fixup_cfg): Added test for
12886         ECF_LOOPING_CONST_OR_PURE.
12887         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
12888         DECL_PURE_P.
12889         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
12890         effects for looping pure or const calls.
12891         (verify_gimple_expr): Added verification code.
12892         * config/alpha/alpha.c (alpha_legitimize_address,
12893         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
12894         RTL_CONST_CALL_P.
12895         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
12896         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
12897         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
12898         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
12899         RTL_CONST_OR_PURE_CALL_P.
12900         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
12901         and const calls to be deleted.
12902
12903 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
12904
12905         PR target/35714
12906         * config/i386/mmx.md (mmx_subv2sf3): New expander.
12907         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
12908         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
12909         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
12910         to handle nonimmediate operands.
12911         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
12912         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
12913         to handle nonimmediate operands.
12914         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
12915         (mmx_pmulhrwv4hi3): New expander.  Use
12916         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12917         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
12918         (sse2_umulv1siv1di3): New expander.  Use
12919         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12920         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
12921         (mmx_eq<mode>3): New expander.  Use
12922         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12923         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
12924         (mmx_uavgv8qi3): New expander.  Use
12925         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12926         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
12927         (mmx_uavgv4hi3): New expander.  Use
12928         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12929
12930         * config/i386/sse.md
12931         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
12932         to handle nonimmediate operands.
12933         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
12934         to handle nonimmediate operands.
12935         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
12936         to handle nonimmediate operands.
12937         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
12938         to handle nonimmediate operands.
12939         (sse2_unpckhpd_exp): New expander.  Use
12940         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12941         (sse2_unpcklpd_exp): New expander.  Use
12942         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12943         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
12944         to handle nonimmediate operands.
12945         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
12946         to handle nonimmediate operands.
12947         (*sse2_<plusminus_insn><mode>3): Rename from
12948         sse2_<plusminus_insn><mode>3 insn pattern.
12949         (sse2_<plusminus_insn><mode>3): New expander.  Use
12950         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12951         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
12952         (sse2_umulv2siv2di3): New expander.  Use
12953         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12954         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
12955         (sse4_1_mulv2siv2di3): New expander.  Use
12956         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12957         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
12958         (sse2_pmaddwd): New expander.  Use
12959         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12960         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
12961         (sse2_eq<mode>3): New expander.  Use
12962         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12963         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
12964         (sse4_1_eqv2di3): New expander.  Use
12965         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12966         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
12967         (sse2_uavgv16qi3): New expander.  Use
12968         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12969         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
12970         (sse2_uavgv16qi3): New expander.  Use
12971         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12972         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
12973         (sse2_uavgv8hi3): New expander.  Use
12974         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12975         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
12976         (ssse3_pmulhrswv8hi3): New expander.  Use
12977         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12978         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
12979         (ssse3_pmulhrswv4hi3): New expander.  Use
12980         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12981
12982         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
12983         (<sse>_vmmul<mode>3): Ditto.
12984         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
12985         (divv2df3): Ditto.
12986         (ssse3_pmaddubsw128): Use register_operand for operand 1.
12987         (ssse3_pmaddubsw): Ditto.
12988
12989         * config/i386/i386.c (struct_builtin_description)
12990         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
12991         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
12992         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
12993         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
12994         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
12995         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
12996         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
12997         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
12998         (ix86_fixup_binary_operands): Assert that src1
12999         and src2 must have the same mode when swapped.
13000         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
13001         and ix86_binary_operator_ok.  Do not force operands in registers
13002         when optimizing.
13003
13004 2008-05-07  Jan Hubicka  <jh@suse.cz>
13005
13006         * cgraph.c (dump_cgraph_node): Update.
13007         * cgraph.h (cgraph_local_info): Break out inline summary.
13008         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
13009         hook.
13010         * ipa-inline (inline_summary): New accestor function.
13011         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
13012         cgraph_decide_inlining, compute_inline_parameters): Update.
13013         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
13014
13015 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
13016
13017         Cleanup ColdFire scheduling support and add V4 pipeline model.
13018
13019         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
13020         (define_attr cpu): Add cfv4 value.
13021         (define_attr type, define_attr type1): Merge into a single 'type'
13022         attribute.  Update all uses.
13023         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
13024         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
13025         Update all uses.
13026         (define_attr opx_mem, define_attr opy_mem): Remove.
13027         (define_attr op_mem): Clean up, update comment.
13028         (define_attr size): Use specific values instead of general int.
13029         (define_attr guess, define_attr split): Remove.  Update all uses.
13030         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
13031         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
13032         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
13033         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
13034         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
13035         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
13036         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
13037         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
13038         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
13039         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
13040         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
13041         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
13042         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
13043         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
13044         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
13045         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
13046         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
13047         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
13048         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
13049         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
13050         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
13051         Update or set attributes.
13052         (stack_tie): New fake instruction.
13053
13054         * config/m68k/m68k.h (TUNE_CFV4): New macro.
13055         (m68k_sched_attr_size): Update declaration.
13056         (m68k_sched_attr_type2): Remove.
13057         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
13058         Declare new bypass predicates.
13059
13060         * config/m68k/m68k.c (m68k_sched_issue_rate,
13061         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
13062         implementations.
13063         (TARGET_SCHED_ISSUE_RATE,
13064         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
13065         (override_options): Handle scheduling for ColdFire V4 core.
13066         (m68k_expand_prologue): Emit stack_tie.
13067         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
13068         'OP_TYPE_FPN'.  Update all uses.
13069         (sched_guess_p): Remove.
13070         (sched_address_type): Handle symbolic addresses.
13071         (sched_get_operand): New static function.
13072         (sched_operand_type): Merge into sched_attr_op_type.
13073         (sched_attr_op_type): Handle FP registers, handle quick constants,
13074         update.
13075         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
13076         (m68k_sched_attr_size): Update.  Move logic to ...
13077         (sched_get_attr_size_int): New static function.
13078         (sched_get_opxy_mem_type): New static function.
13079         (m68k_sched_attr_op_mem): Update.
13080         (m68k_sched_attr_type2): Remove.
13081         (sched_cfv4_bypass_data): New static variable.
13082         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
13083         (m68k_sched_issue_rate): Implement scheduler hook.
13084         (struct _sched_ib: enabled_p): New field.
13085         (m68k_sched_variable_issue): Update.  Handle V4.
13086         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
13087         sched_dump_class_func_t, sched_dump_split_class,
13088         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
13089         sched_dump_dfa_class, m68k_sched_dump): Remove.
13090         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
13091         hook.
13092         (m68k_sched_init_global): Remove statisctics dumping, introduce
13093         sanity check that all instructions have pipeline reservations.  Handle
13094         ColdFire V4 core.
13095         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
13096         Handle ColdFire V4 core.
13097         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
13098         New static functions.
13099         (m68k_sched_address_bypass_p): New bypass predicate.
13100         (sched_get_indexed_address_scale): New static function.
13101         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
13102
13103         * cf.md: Update comments.
13104         (define_attr type2): Remove.  Use 'type' attribute instead.
13105         Update all uses.
13106         (cf_ib): Rename to cfv123_ib.  Update all uses.
13107         (cf_oep): Rename to cfv123_oep.  Update all uses.
13108         (cf_chr): Rename to cfv123_chr.  Update all uses.
13109         (cf_mem): Rename to cfv123_mem.  Update all uses.
13110         (cf_mac): Move to more appropriate place.
13111         (cfv123_guess): New automaton and cpu_unit.
13112         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
13113         Update uses of 'size' attribute.  Handle before reload scheduling.
13114         (cfv123_guess): New dummy reservation for unhandled instructions.
13115         (cfv4_*): Pipeline description of ColdFire V4 core.
13116         (ignore): New reservation to handle 'ignore' type.
13117
13118 2008-05-07  Ian Lance Taylor  <iant@google.com>
13119
13120         PR middle-end/36013
13121         * gimplify.c (find_single_pointer_decl_1): Don't look through
13122         indirections.
13123         (find_single_pointer_decl): Adjust comments.
13124
13125 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
13126
13127         PR middle-end/36137
13128         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
13129         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
13130
13131         PR middle-end/36106
13132         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
13133         integral type rather than floating point, then VIEW_CONVERT_EXPR
13134         to the floating point type.
13135
13136 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
13137
13138         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
13139         TFmode op0 to register.
13140
13141 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
13142
13143         * c-decl.c (grokdeclarator): Comment typo.
13144
13145 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
13146
13147         * tree-flow.h: Remove prototype for computed_goto_p.
13148         * tree-cfg.c (computed_goto_p): Make static.
13149
13150 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
13151
13152         PR target/35657
13153         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
13154         (contains_aligned_value_p): This.  Handle _Decimal128.
13155         (ix86_function_arg_boundary): Only align _Decimal128 to its
13156         natural boundary and handle it properly.
13157
13158 2008-05-06  Martin Jambor  <mjambor@suse.cz>
13159
13160         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
13161         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
13162         (ipcp_method_set_orig_node): Removed.
13163         (ipcp_cval_get_cvalue_type): Removed.
13164         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
13165         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
13166         (ipcp_cval_set_cvalue_type): Removed.
13167         (ipcp_cval_get_cvalue): Removed.
13168         (ipcp_cval_set_cvalue): Removed.
13169         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
13170         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
13171         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
13172         (ipcp_cval_meet): Renamed to ipa_lattice_meet
13173         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
13174         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
13175         (ipcp_get_ith_lattice): Changed parameters.
13176         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
13177         (ipcp_lattice_from_jfunc): Changed parameters.
13178         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
13179         (ipcp_method_cval_print): Added temporary variable info.
13180         (ipcp_redirect): Removed already unused local variable caller.
13181         (ipcp_redirect): New temporary variable orig_callee_info
13182         (ipcp_redirect): Removed newly unused local variable callee.
13183         (ipcp_redirect): Removed (a bit confusing) local variable type.
13184         (ipcp_insert_stage): Added local variable info.
13185         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
13186         renamed too
13187         (ipcp_formal_create): Removed.
13188         (ipcp_method_cval_set): Removed.
13189         (ipcp_propagate_stage): Renamed lattice variables.
13190         (ipcp_method_cval_set_cvalue_type): Removed.
13191         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
13192         (ipcp_print_all_lattices): Changed printed strings to refer to
13193         lattices rather than cvals.
13194         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
13195         (ipcp_propagate_const): Changed formal parameters.
13196         (build_const_val): Changed formal parameters.
13197         (ipcp_insert_stage): Removed useless variable cvalue
13198         (build_const_val): Changed formal parameters.
13199         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
13200         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
13201         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
13202         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
13203         (ipcp_print_func_profile_counts): Changed string from "method" to
13204         "function"
13205         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
13206         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
13207         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
13208         (ipcp_structures_print): Renamed to ipcp_print_all_structures
13209         (ipcp_profile_print): Renamed to ipcp_print_profile_data
13210         (ipcp_lat_is_const): Changed parameters and made inline.
13211         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
13212         (ipcp_redirect): Renamed to ipcp_need_redirect_p
13213         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
13214         the predicate condition directly
13215         (ipcp_propagate_stage): Added local variable args. Removed local
13216         variable callee.  (Both are mere code simplifications.)
13217         (ipcp_method_dont_insert_const): Renamed to
13218         ipcp_node_not_modifiable_p.
13219         (ipcp_node_not_modifiable_p): Made inline.
13220         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
13221         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
13222         (ipcp_print_all_lattices): Removed variable cvalue
13223         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
13224         Updated comments.
13225
13226 2008-05-06  Olivier Hainque  <hainque@adacore.com>
13227
13228         * tree-sra.c (try_instantiate_multiple_fields): Early return
13229         if field has POINTER_TYPE.
13230
13231 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
13232
13233         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
13234         by using 'q' specifier for instruction.
13235         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
13236
13237 2008-05-06  Anatoly Sokolov <aesok@post.ru>
13238
13239         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
13240         Change mode of zero_extract from QImode to HImode.
13241         (sign bit tests peepholes): (Ditto.).
13242
13243 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
13244
13245         * config/i386/mmx.md: Remove double backslashes from asm templates.
13246         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
13247         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
13248         to handle nonimmediate operands.
13249         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
13250         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
13251         to handle nonimmediate operands.
13252         (*mmx_<code>v2sf3_finite): New insn pattern.
13253         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
13254         (mmx_<code>v2sf3): New expander.  Use
13255         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13256         (mmx_<plusminus_insn><mode>3): New expander.  Use
13257         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13258         (*mmx_<plusminus_insn><mode>3): New insn pattern.
13259         (mmx_add<mode>3): Removed.
13260         (mmx_ssadd<mode>3): Ditto.
13261         (mmx_usadd<mode>3): Ditto.
13262         (mmx_sub<mode>3): Ditto.
13263         (mmx_sssub<mode>3): Ditto.
13264         (mmx_ussub<mode>3): Ditto.
13265         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
13266         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
13267         to handle nonimmediate operands.
13268         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
13269         insn pattern.
13270         (mmx_smulv4hi3_highpart): New expander.  Use
13271         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13272         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
13273         insn pattern.
13274         (mmx_umulv4hi3_highpart): New expander.  Use
13275         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13276         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
13277         (mmx_<code>v4hi3): New expander.  Use
13278         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13279         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
13280         (mmx_<code>v8qi3): New expander.  Use
13281         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13282         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
13283         (mmx_<code><mode>3): New expander.  Use
13284         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13285
13286 2008-05-05  Jan Hubicka  <jh@suse.cz>
13287
13288         PR tree-optimization/36118
13289         * passes.c (pass_init_dump_file): Fix dump header.
13290
13291 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13292
13293         PR middle-end/36141
13294         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
13295         VCE for function decls.
13296
13297 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
13298
13299         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
13300
13301 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
13302
13303         * config/i386/i386.md (sat_plusminus): New.
13304         (plusminus_insn): Likewise.
13305         (plusminus_mnemonic): Likewise.
13306         (addsub): Removed.
13307         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
13308         (*<addsub><mode>3_cc_overflow): Renamed to ...
13309         (*<plusminus_insn><mode>3_cc_overflow): This.
13310         (*<addsub>si3_zext_cc_overflow): Renamed to ...
13311         (*<plusminus_insn>si3_zext_cc_overflow): This.
13312
13313         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
13314         (<plusminus_insn><mode>3): This.
13315         (*<addsub><mode>3): Renamed to ...
13316         (*<plusminus_insn><mode>3): This.
13317         (<sse>_vm<addsub><mode>3): Renamed to ...
13318         (<sse>_vm<plusminus_insn><mode>3): This.
13319         (sse3_h<addsub>v4sf3): Renamed to ...
13320         (sse3_h<plusminus_insn>v4sf3): This.
13321         (sse3_h<addsub>v2df3): Renamed to ...
13322         (sse3_h<plusminus_insn>v2df3): This.
13323         (<plusminus_insn><mode>3): New.
13324         (*<plusminus_insn><mode>3): Likewise.
13325         (sse2_<plusminus_insn><mode>3): Likewise.
13326         (add<mode>): Removed.
13327         (*add<mode>3): Likewise.
13328         (sse2_ssadd<mode>3): Likewise.
13329         (sse2_usadd<mode>3): Likewise.
13330         (sub<mode>3): Likewise.
13331         (*sub<mode>3): Likewise.
13332         (sse2_sssub<mode>3): Likewise.
13333         (sse2_ussub<mode>3): Likewise.
13334
13335 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
13336
13337         * gthr-single.h: Add in required interface elements as per gthr.h.
13338         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
13339         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
13340         Generalize UNUSED macro.
13341         (__gthread_once): Add.
13342         (__gthread_key_create): Add.
13343         (__gthread_key_delete): Add.
13344         (__gthread_getspecific): Add.
13345         (__gthread_setspecific): Add.
13346
13347 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
13348
13349         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
13350         the same size types for the indirect reference on the rhs, then
13351         create a VCE.
13352
13353 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
13354
13355         * config/i386/i386.md
13356         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
13357         one insn template instead of template series.
13358         (*xordi_1_rex64): Ditto.
13359         (*xordi_2_rex64): Ditto.
13360
13361 2008-05-05  Ira Rosen  <irar@il.ibm.com>
13362
13363         PR tree-optimization/36119
13364         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
13365         in case of SLP.
13366
13367 2008-06-04  Jan Hubicka  <jh@suse.cz>
13368
13369         tree-optimization/36100
13370         * tree-pass.h (pass_O0_always_inline): Declare.
13371         * ipa-inline.c (inline_transform): Remove dead code.
13372         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
13373         pass_O0_always_inline): New.
13374         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
13375
13376 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
13377
13378         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
13379         mnemonic in this_param move for TARGET_64BIT.
13380
13381 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
13382
13383         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
13384         (*strmovsi_rex_1): Ditto.
13385         (*strsetsi_1): Ditto.
13386         (*strsetsi_rex_1): Ditto.
13387
13388         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
13389         adddicc expanders using SWI mode iterator.
13390
13391 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
13392
13393         PR target/36121
13394         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
13395         argument handling.
13396
13397 2008-05-04  David S. Miller  <davem@davemloft.net>
13398
13399         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
13400         (sparc*-*-linux*): Use linux.h in tm_file.
13401         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
13402         compiler defaulting to 32-bit.
13403         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
13404         no longer needed.
13405         * config/sparc/linux.h: Remove definitions now obtained
13406         properly from linux.h
13407         * config/sparc/linux64.h: Likewise.
13408         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
13409         don't want this setting for 32-bit builds in a biarch compiler.
13410         * doc/install.texi: Add sparc-linux to list of targets
13411         supporting --enable-targets=all.
13412
13413 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
13414
13415         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
13416
13417 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
13418
13419         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
13420         after V4SI_FTYPE_V8HI.
13421         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
13422         case V4SI_FTYPE_V2DF.
13423
13424 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
13425
13426         * doc/invoke.texi (max-flow-memory-locations): Removed.
13427         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
13428
13429 2008-05-03  Richard Guenther  <rguenther@suse.de>
13430
13431         PR middle-end/34973
13432         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
13433
13434 2008-05-02  David S. Miller  <davem@davemloft.net>
13435
13436         * config.gcc (need_64bit_hwint): Document libcpp dependency.
13437
13438 2008-05-02  Simon Baldwin <simonb@google.com>
13439
13440         PR bootstrap/36108
13441         * c-common.h (warn_array_subscript_range): Removed.
13442         * c-common.c (warn_array_subscript_range): Ditto.
13443         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
13444         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
13445
13446 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
13447
13448         * config/i386/i386.c (ix86_special_builtin_type): New.
13449         (bdesc_special_args): Likewise.
13450         (ix86_expand_special_args_builtin): Likewise.
13451         (ix86_init_mmx_sse_builtins): Updated.
13452         (ix86_expand_builtin): Updated.
13453         (ix86_expand_store_builtin): Removed.
13454         (ix86_expand_unop_builtin): Likewise.
13455
13456         * config/i386/mm3dnow.h (__v2sf): Moved to ...
13457         * config/i386/mmintrin.h (__v2sf): Here.
13458
13459         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
13460         const __v2sf.
13461         (_mm_loadl_pi): Likewise.
13462         (_mm_storeh_pi): Replace __v2si with __v2sf.
13463         (_mm_storel_pi): Likewise.
13464
13465         * doc/extend.texi: Correct __builtin_ia32_loadhps,
13466         __builtin_ia32_loadlps, __builtin_ia32_storehps,
13467         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
13468         __builtin_ia32_loadlpd.
13469
13470 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
13471
13472         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
13473         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
13474         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
13475         (ix86_init_mmx_sse_builtins): Updated.
13476         (ix86_expand_args_builtin): Likewise.
13477         (ix86_expand_builtin): Likewise.
13478         (ix86_expand_unop1_builtin): Renamed to ...
13479         (ix86_expand_unop_vec_merge_builtin): This.
13480
13481 2008-05-01  Jan Hubicka  <jh@suse.cz>
13482
13483         PR bootstrap/36100
13484         * ipa-inline.c (inline_generate_summary): Make static.
13485         (inline_transform): Do not call inlining at -O0; make static.
13486         * passes.c (execute_todo): Add sanity check.
13487         (execute_one_ipa_transform_pass): Execute proper flags.
13488
13489 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
13490
13491         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
13492         (DECL_NONADDRESSABLE_P): Likewise.
13493         * alias.c (record_component_aliases): Fix comment.
13494
13495 2008-05-01  Simon Baldwin <simonb@google.com>
13496
13497         * c-common.h (warn_array_subscript_range): New function.
13498         * c-common.c (warn_array_subscript_range): Ditto.
13499         * tree-vrp.c (check_array_ref): Corrected code to agree with
13500         comment, ignoring only arrays of size 0 or size 1.
13501         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
13502
13503 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
13504
13505         * config/i386/i386.c (ix86_builtin_type): Replace
13506         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
13507         (bdesc_args): Updated.
13508         (ix86_init_mmx_sse_builtins): Likewise.
13509         (ix86_expand_args_builtin): Likewise.
13510
13511         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
13512         with __v1di.
13513
13514         * doc/extend.texi: Correct __builtin_ia32_palignr.
13515
13516 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
13517
13518         PR target/36095
13519         * config/i386/i386.c (bdesc_crc32): Removed.
13520         (ix86_expand_crc32): Likewise.
13521         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
13522         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
13523         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
13524         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
13525         UINT_FTYPE_UINT_UCHAR.
13526         (bdesc_args): Updated. Add crc32 builtins.
13527         (ix86_init_mmx_sse_builtins): Updated.
13528         (ix86_expand_args_builtin): Updated to support subreg.
13529
13530         * doc/extend.texi: Correct __builtin_ia32_crc32di.
13531
13532 2008-05-01  Jan Hubicka  <jh@suse.cz>
13533
13534         * tree-pass.h (opt_pass): Add IPA_PASS.
13535         (varpool_node, cgraph_node): Forward declare.
13536         (ipa_opt_pass): Define.
13537         (pass_ipa_inline): Turn into ipa_opt_pass.
13538         (pass_apply_inline): Remove.
13539         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
13540         (apply_inline): Turn into ....
13541         (inline_transform): ... this one.
13542         (inline_generate_summary): New function.
13543         (pass_apply_inline): Remove.
13544         * function.h (ipa_opt_pass): Forward declare structure; typedef;
13545         vector.
13546         (struct function): Add ipa_transforms_to_apply.
13547         * passes.c (register_one_dump_file): Work on IPA_PASS.
13548         (init_optimization_passes): Remove pass_inline_parameters and
13549         pass_apply_inline.
13550         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
13551         (execute_one_pass) ... here; apply transforms when possible.
13552         (add_ipa_transform_pass, execute_ipa_summary_asses,
13553         execute_one_ipa_transform_pass): New.
13554         (execute_ipa_pass_list): Update for IPA_PASS type.
13555
13556 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
13557
13558         * config/i386/i386.c (ix86_builtin_type): Add
13559         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
13560         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
13561         (bdesc_args): Add SSE4a builtins.
13562         (ix86_init_mmx_sse_builtins): Updated.
13563         (ix86_expand_args_builtin): Likewise.
13564         (ix86_expand_builtin): Likewise.
13565
13566 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
13567
13568         * config/i386/i386.c (ix86_builtin_type): Add
13569         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
13570         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
13571         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
13572         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
13573         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
13574         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
13575         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
13576         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
13577         and DI_FTYPE_DI_DI_INT.
13578         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
13579         (ix86_init_mmx_sse_builtins): Updated.
13580         (ix86_expand_args_builtin): Likewise.
13581         (ix86_expand_builtin): Likewise.
13582         (ix86_expand_binop_imm_builtin): Removed.
13583
13584         * doc/extend.texi: Correct __builtin_ia32_palignr128.
13585
13586 2008-04-30  Richard Guenther  <rguenther@suse.de>
13587
13588         PR tree-optimization/32921
13589         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
13590
13591 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
13592
13593         * config/arm/arm.c (arm_unwind_emit): Use
13594         crtl->all_throwers_are_sibcalls instead of
13595         cfun->all_throwers_are_sibcalls.
13596         (arm_output_fn_unwind): Likewise.
13597         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
13598         instead of cfun->uses_pic_offset_table.
13599         (frv_expand_prologue): Likewise.
13600         (frv_frame_pointer_required): Likewise.
13601         (frv_expand_fdpic_call): Likewise.
13602         (frv_emit_movsi): Likewise.
13603         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
13604         cfun->returns_pcc_struct instead of
13605         current_function_returns_pcc_struct.
13606         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
13607         instead of cfun->calls_eh_return.
13608         (m32c_pushm_popm): Likewise.
13609         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
13610         "extern" declaration.
13611
13612 2008-04-30  Richard Guenther  <rguenther@suse.de>
13613
13614         PR tree-optimization/21636
13615         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
13616         constant address.
13617         (evaluate_stmt): Print the likely value.
13618         (ccp_visit_stmt): Avoid excessive vertical spacing.
13619
13620 2008-04-30  Rafael Espindola  <espindola@google.com>
13621
13622         * builtins.c (fold_call_expr): Return realret.
13623         * tree-ssa-threadedge.c
13624         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
13625         __builtin_object_size.
13626
13627 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
13628
13629         * gcc.c (wrapper_string): New variable.
13630         (insert_wrapper): New function.
13631         (execute): New option -wrapper.
13632         * doc/invoke.texi (Overall Options): New driver option -wrapper.
13633
13634 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
13635
13636         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
13637         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
13638         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
13639         from...
13640         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
13641         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
13642         config/rs6000/e500crtres64gprctr.asm,
13643         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
13644         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
13645         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
13646         config/rs6000/e500crtsav64gprctr.asm,
13647         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
13648         config/rs6000/e500crtsavg64gprctr.asm: New files.
13649         * config/rs6000/t-ppccomm: Add build rules for new files.
13650         (LIB2FUNCS_STATIC_EXTRA): Add new files.
13651         * config/rs6000/t-netbsd: Add build rules for new files.
13652         (LIB2FUNCS_STATIC_EXTRA): New variable.
13653         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
13654         (CRTSAVRES_DEFAULT_SPEC): Likewise.
13655         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
13656
13657 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
13658
13659         * config/i386/i386.c (ix86_builtin_type): Add
13660         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
13661         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
13662         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
13663         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
13664         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
13665         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
13666         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
13667         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
13668         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
13669         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
13670         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
13671         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
13672         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
13673         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
13674         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
13675         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
13676         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
13677         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
13678         V1DI_FTYPE_V2SI_V2SI.
13679         (bdesc_2arg): Moved to ...
13680         (bdesc_args): Here.
13681         (ix86_init_mmx_sse_builtins): Updated.
13682         (ix86_expand_args_builtin): Updated.  Take a pointer
13683         to const struct builtin_description.  Handle comparison
13684         builtin functions.
13685         (ix86_expand_sse_compare): Take a new argument for swapping operands.
13686         (ix86_expand_builtin): Updated.
13687
13688         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
13689         (ssse3_pmaddubsw128): This.
13690         (ssse3_pmaddubswv4hi3): Renamed to ...
13691         (ssse3_pmaddubsw): This.
13692
13693         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
13694         (__builtin_ia32_packssdw128): Likewise.
13695         (__builtin_ia32_packuswb128): Likewise.
13696         (__builtin_ia32_pmaddubsw): Likewise.
13697         (__builtin_ia32_pmaddubsw128): Likewise.
13698
13699 2008-04-30  Richard Guenther  <rguenther@suse.de>
13700
13701         PR tree-optimization/14847
13702         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
13703         (recognize_bits_test): Use it.
13704         (recognize_single_bit_test): Likewise.
13705
13706 2008-04-30  Martin Jambor  <mjambor@suse.cz>
13707
13708         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
13709         instead of setting number of formal parameters to zero.
13710         (ipcp_init_stage): Do not set the number of actual parameters to zero
13711         either.
13712         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
13713         which are called with variable number of arguments.
13714         (ipcp_insert_stage): Explicitely skipping all nodes which are
13715         called with variable number of arguments.
13716         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
13717         number of parameters.
13718
13719         * ipa-prop.h (struct ipa_node_params): Added flag
13720         called_with_var_arguments
13721         (ipa_set_param_count): Added.  Changed sole setter to use it.
13722         (ipa_get_param_count): Added.  All readers of param_count
13723         converted to use it instead.
13724         (ipa_set_called_with_variable_arg): Added.
13725         (ipa_is_called_with_var_arguments): Added.
13726         (ipa_get_ith_param): Added.  All readers of param_decls converted
13727         to use it instead.
13728         (ipa_set_cs_argument_count): Added, sole writer to argument_count
13729         changed to use it.
13730         (ipa_get_cs_argument_count): Added, all readers of argument_count
13731         changed to cal it.
13732         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
13733         to use it.
13734
13735         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
13736         (struct ipcp_lattice): Renamed cval_type to type
13737         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
13738
13739         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
13740         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
13741         (ipcp_insert_stage): Changed the type of variable cvalue to tree
13742         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
13743         (build_const_val): Changed the type of parameter cvalue to tree
13744         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
13745         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
13746
13747         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
13748         constant
13749
13750         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
13751         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
13752         (ipa_add_method): Renamed to ipa_push_func_to_list
13753         (ipa_remove_method): Renamed to ipa_pop_func_from_list
13754         (ipa_callsite_param_count): Removed.
13755         (ipa_callsite_param_count_set): Removed.
13756         (ipa_callsite_param): Removed.
13757         (ipa_callsite_callee): Removed.
13758         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
13759         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
13760         (ipa_method_formal_count): Removed.
13761         (ipa_method_formal_count_set): Removed.
13762         (ipa_method_get_tree): Removed.
13763         (ipa_method_tree_map_create): Removed.
13764         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
13765         (ipa_create_param_decls_array): Creates the array itself
13766         (ipa_create_param_decls_array): Temporary variable info instead of
13767         a few dereferences.
13768         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
13769         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
13770         (get_type): Removed.
13771         (ipa_jf_get_info_type): Removed.
13772         (ipa_node_create): Renamed to ipa_create_node_params
13773         (ipa_free): Renamed to ipa_free_all_node_params
13774         (ipa_nodes_create): Renamed to ipa_create_all_node_params
13775         (ipa_edges_create): Renamed to ipa_create_all_edge_args
13776         (ipa_edges_free): Renamed to ipa_free_all_edge_args
13777         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
13778         (ipa_free_all_node_params): Deallocation to jump_functions moved to
13779         ipa_free_all_edge_args
13780         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
13781         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
13782         (ipa_create_methodlist_node): Removed.
13783         (ipa_methodlist_method): Removed.
13784         (ipa_methodlist_method_set): Removed.
13785         (ipa_methodlist_next_method): Removed.
13786         (ipa_methodlist_next_method_set): Removed.
13787         (ipa_method_is_modified): Removed.
13788         (ipa_method_modify_create): Removed.
13789         (ipa_method_modify_init): Temporary variable info instead of a few
13790         dereferences.
13791         (ipa_detect_param_modifications): Temporary variable info instead of
13792         a few dereferences.
13793         (ipa_compute_jump_functions): Temporary variable info instead of
13794         a few dereferences.
13795         (ipa_method_modify_set): Removed.
13796         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
13797         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
13798         than craph_node as the first parameter.
13799         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
13800         (ipa_method_modify_init): Removed.
13801         (ipa_compute_jump_functions): Added a temp variable instead of
13802         repeatadly dereferencing the cgraph_edge.aux pointer
13803         (ipa_callsite_param_set_type): Removed.
13804         (ipa_compute_jump_functions): i renamed to index and moved to
13805         an inner block
13806         (ipa_callsite_param_set_info_type_formal): Removed.
13807         (ipa_callsite_param_set_info_type): Removed.
13808         (ipa_callsite_param_map_create): Removed.
13809         (ipa_callsite_tree): Removed.
13810         (ipa_callsite_caller): Removed.
13811         (ipa_pop_func_from_list): return_method removed to return_func
13812
13813         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
13814         prefixed all values with IPA_. Changed all users.
13815         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
13816         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
13817         and FORMAL_IPATYPE IPA_PASS_THROUGH.
13818         (union parameter_info): Renamed to jump_func_value.
13819         (union jump_func_value): Renamed value to constant
13820         (struct ipa_jump_func): Renamed info_type to value
13821         (struct ipa_node): Renamed to ipa_node_params
13822         (struct ipa_node_params): Renamed ipa_arg_num to param_count
13823         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
13824         (struct ipa_node_params): Renamed ipa_mod to modified_flags
13825         (struct ipa_edge): Renamed to ipa_edge_args
13826         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
13827         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
13828         (struct ipa_methodlist): Renamed to ipa_func_list
13829         (struct ipa_func_list): method_p renamed to node, next_method
13830         renamed to next
13831         (ipa_methodlist_p): Removed, switched all users to struct pointer
13832         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
13833
13834 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
13835
13836         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
13837         (rs6000_emit_epilogue): Use backchain to restore only when we
13838         have a large frame.  Make use of frame pointer to restore if we
13839         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
13840
13841 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
13842
13843         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
13844         Add mode to zero_extract.
13845         (sign bit tests peepholes): (Ditto.).
13846
13847 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
13848
13849         * config/i386/i386.c (ix86_builtins): Replace Prescott New
13850         Instructions in comments with SSE3.
13851         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
13852         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
13853         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
13854         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
13855         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
13856         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
13857         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
13858         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
13859         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
13860         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
13861         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
13862         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
13863         (bdesc_sse_args): Renamed to ...
13864         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
13865         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
13866         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
13867         IX86_BUILTIN_FABSQ.
13868         (bdesc_1arg): Moved to ...
13869         (bdesc_args): Here.
13870         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
13871         Instructions in comments with SSE3.
13872         (ix86_expand_sse_operands_builtin): Renamed to ...
13873         (ix86_expand_args_builtin): This.  Updated.
13874         (ix86_expand_unop1_builtin): Update comments.
13875         (ix86_expand_builtin): Updated.
13876
13877 2008-04-29  Richard Guenther  <rguenther@suse.de>
13878
13879         PR tree-optimization/36078
13880         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
13881         Update virtual SSA form after cleaning up the CFG.
13882
13883 2008-04-29  Richard Guenther  <rguenther@suse.de>
13884
13885         PR middle-end/15255
13886         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
13887
13888 2008-04-29  Richard Guenther  <rguenther@suse.de>
13889
13890         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
13891         (compute_may_aliases): Do not call finalize_ref_all_pointers.
13892         (compute_flow_insensitive_aliasing): Do not treat
13893         PTR_IS_REF_ALL pointers special.
13894         (get_smt_for): Likewise.
13895         (may_alias_p): Re-structure.
13896         (is_escape_site): A ref-all pointer conversion is not an escape site.
13897         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
13898         PTR_IS_REF_ALL pointers special.
13899         * tree-ssa-structalias.h (struct alias_info): Remove
13900         ref_all_symbol_mem_tag field.
13901         (PTR_IS_REF_ALL): Remove.
13902
13903 2008-04-29  Richard Guenther  <rguenther@suse.de>
13904
13905         PR middle-end/36077
13906         * fold-const.c (extract_muldiv_1): In combining division constants
13907         make sure to never overflow.
13908
13909 2008-04-29  Nick Clifton  <nickc@redhat.com>
13910
13911         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
13912
13913 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13914
13915         PR bootstrap/35169
13916         * optc-gen.awk: Work around HP-UX/IA awk bug.
13917
13918 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
13919
13920         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
13921         2008-04-25 commit.
13922
13923 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
13924
13925         PR target/36073
13926         * config/i386/i386.md
13927         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
13928         Change operand 1 predicate to nonimmediate_operand.
13929
13930 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
13931
13932         PR debug/36060
13933         * dwarf2out.c (struct die_struct): Mark as chain_circular through
13934         die_sub field.
13935         * gengtype.c (walk_type, write_func_for_structure): Handle
13936         chain_circular.
13937         * doc/gty.texi: Document chain_circular.
13938
13939 2008-04-28  Richard Guenther  <rguenther@suse.de>
13940
13941         PR tree-optimization/36066
13942         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
13943         SCEV and loop.
13944
13945 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
13946
13947         PR target/36064
13948         * config/i386/i386.md
13949         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
13950         Use match_scratch instead of match_operand for operands 3 and 4.
13951
13952 2008-04-27  Richard Guenther  <rguenther@suse.de>
13953
13954         PR tree-optimization/18754
13955         PR tree-optimization/34223
13956         * tree-pass.h (pass_complete_unrolli): Declare.
13957         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
13958         loop size before and after unconditionally of UL_NO_GROWTH in effect.
13959         Rewrite loop into loop closed SSA form if it is not already.
13960         (tree_unroll_loops_completely): Re-structure to iterate over
13961         innermost loops with intermediate CFG cleanups.
13962         Unroll outermost loops only if requested or the code does not grow
13963         doing so.
13964         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
13965         loops are available.
13966         (tree_vectorize): Instead do so here.
13967         (tree_complete_unroll): Also unroll outermost loops.
13968         (tree_complete_unroll_inner): New function.
13969         (gate_tree_complete_unroll_inner): Likewise.
13970         (pass_complete_unrolli): New pass.
13971         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
13972         uses outside of the loop.
13973         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
13974         form if it is available.
13975         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
13976         * passes.c (init_optimization_passes): Schedule complete inner
13977         loop unrolling pass before the first CCP pass after final inlining.
13978
13979 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
13980
13981         * targhooks.h (default_emutls_var_fields,
13982         default_emutls_var_init): Declare.
13983         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
13984         * target.h (struct gcc_target): Add struct emutls member.
13985         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
13986         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
13987         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
13988         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
13989         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
13990         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
13991         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
13992         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
13993         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
13994         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
13995         emit debug information.
13996         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
13997         * varasm.c: Include targhooks.h.
13998         (emutls_object_section, emutls_tmpl_section): New.
13999         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
14000         (EMUTLS_SEPARATOR): New.
14001         (prefix_name): New.
14002         (get_emutls_object_name): New.
14003         (default_emutls_var_fields): New, broken out of ...
14004         (get_emutls_object_type): ... here.  Adjust to use target hooks.
14005         (get_emutls_init_templ_addr): Adjust to use target hooks.
14006         (emutls_decl): Adjust to use target hooks.
14007         (emutls_finish): Likewise.
14008         (default_emutls_var_init): New, broken out of ...
14009         (assemble_variable): ... here.  Adjust to use target hooks.
14010         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
14011         SECCAT_EMUTLS_TMPL.
14012         * c-common.c (handle_section_attribute): Prevent overriding
14013         sections for emulated tls with special sections.
14014         * config/i386/i386.c (x86_64_elf_select_section): Add
14015         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
14016         (x86_64_elf_unique_section): Likewise.
14017         * config/vxworks.c: Include tree.h.
14018         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
14019         (vxworks_override_options): Set TLS scheme.
14020         * doc/tm.texi (Emulated TLS): New node.
14021
14022 2008-04-26  Simon Baldwin <simonb@google.com>
14023
14024         PR c/35652
14025         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
14026         with propagated string constants.
14027
14028 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
14029
14030         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
14031         constraint for operand 2 when operand 0 is memory operand.
14032         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
14033         operand 0 is memory operand.
14034         (fix_trunc<mode>_i387_with_temp): Ditto.
14035         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
14036         operand 2 when operand 1 is memory operand.
14037         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
14038         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
14039         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
14040         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
14041         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
14042         operands 2,3 and 4 when operand 1 is memory operand.
14043         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
14044         is memory operand.
14045         (fistdi2_floor_with_temp): Ditto.
14046         (fist<mode>2_floor_with_temp): Ditto.
14047         (fistdi2_ceil_with_temp): Ditto.
14048         (fist<mode>2_ceil_with_temp): Ditto.
14049         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
14050
14051 2008-04-26  David Daney  <ddaney@avtrex.com>
14052
14053         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
14054         unspec_volitile.
14055         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
14056         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
14057         UNSPEC_UPDATE_GOT_VERSION): Renumber.
14058         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
14059         (compare_and_swap_12): New insn.
14060         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
14061         * config/mips/mips.c (mips_force_binary): New function.
14062         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
14063         (mips_expand_compare_and_swap_12): New function.
14064         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
14065
14066 2008-04-25  Jan Hubicka  <jh@suse.cz>
14067
14068         PR testsuite/35843
14069         * cfgexpand.c (pass_expand): Turn into RTL pass.
14070         * passes.c (execute_one_pass): Do pass typechecking after execution.
14071         * tree-pass.h (pass_expand): Turn into RTL pass.
14072
14073         * function.h (struct rtl_data): Move here fields
14074         accesses_prior_frames, calls_eh_return, saves_all_registers,
14075         has_nonlocal_goto, has_asm_statement, is_thunk,
14076         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
14077         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
14078         arg_pointer_save_area_init from struct function; turn into bool.
14079         (struct function): Move
14080         calls_eh_return, saves_all_registers, has_nonlocal_goto,
14081         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
14082         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
14083         tail_call_emit, arg_pointer_save_area_init
14084         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
14085         (current_function_returns_struct, current_function_returns_pcc_struct,
14086         current_function_calls_setjmp, current_function_calls_alloca,
14087         current_function_accesses_prior_frames,
14088         current_function_calls_eh_return, current_function_is_thunk,
14089         current_function_stdarg, current_function_profile,
14090         current_function_limit_stack, current_function_uses_pic_offset_table,
14091         current_function_uses_const_pool, current_function_has_nonlocal_label,
14092         current_function_saves_all_registers,
14093         current_function_has_nonlocal_goto,
14094         current_function_has_asm_statement): Remove accesor macros.
14095         * ra-conflict.c (global_conflicts): Update.
14096         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
14097         (suitable_for_tail_call_opt_p): Update.
14098         * builtins.c (expand_builtin_return_addr): Update.
14099         (expand_builtin_setjmp_setup): Update.
14100         (expand_builtin_nonlocal_goto): Update.
14101         * final.c (final_start_function): Update.
14102         (profile_function): Update.
14103         (leaf_function_p): Update.
14104         (only_leaf_regs_used): Update.
14105         * df-scan.c (df_get_exit_block_use_set): Update.
14106         * dojump.c (clear_pending_stack_adjust): Update.
14107         * tree-stdarg.c (gate_optimize_stdarg): Update.
14108         * gimple-low.c (lower_function_body): Update.
14109         * global.c (compute_regsets): Update.
14110         (global_alloc): Update.
14111         * dwarf2out.c (dwarf2out_begin_prologue): Update.
14112         * expr.c (expand_assignment): Update.
14113         * dse.c (dse_step0): Update.
14114         (dse_step1): Update.
14115         * c-decl.c (store_parm_decls): Update.
14116         * local-alloc.c (combine_regs): Update.
14117         (find_free_reg): Update.
14118         * function.c (assign_parms_augmented_arg_list): Update.
14119         (assign_parm_find_data_types): Update.
14120         (assign_parms): Update.
14121         (allocate_struct_function): Update.
14122         (expand_function_start): Update.
14123         (expand_function_end): Update.
14124         (get_arg_pointer_save_area): Update.
14125         (thread_prologue_and_epilogue_insns): Update.
14126         (rest_of_match_asm_constraints): Update.
14127         * stor-layout.c (variable_size): Update.
14128         * gcse.c (gcse_main): Update.
14129         (bypass_jumps): Update.
14130         * gimplify.c (gimplify_function_tree): Update.
14131         * calls.c (emit_call_1): Update.
14132         (expand_call): Update.
14133         * bt-load.c (compute_defs_uses_and_gen): Update.
14134         * except.c (sjlj_assign_call_site_values): Update.
14135         (sjlj_emit_function_enter): Update.
14136         (can_throw_external): Update.
14137         (set_nothrow_function_flags): Update.
14138         (expand_builtin_unwind_init): Update.
14139         (expand_eh_return): Update.
14140         (convert_to_eh_region_ranges): Update.
14141         (output_function_exception_table): Update.
14142         * emit-rtl.c (gen_tmp_stack_mem): Update.
14143         * cfgexpand.c (expand_used_vars): Update.
14144         (tree_expand_cfg): Update.
14145         * cfgcleanup.c (rest_of_handle_jump): Update.
14146         * explow.c (allocate_dynamic_stack_space): Update.
14147         * varasm.c (assemble_start_function): Update.
14148         (force_const_mem): Update.
14149         (mark_constant_pool): Update.
14150         * tree-optimize.c (tree_rest_of_compilation): Update.
14151         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
14152         * tree-cfg.c (notice_special_calls): Update.
14153         (is_ctrl_altering_stmt): Update.
14154         (tree_can_make_abnormal_goto): Update.
14155         (tree_purge_dead_abnormal_call_edges): Update.
14156         * config/alpha/predicates.md: Update.
14157         * config/alpha/alpha.c (alpha_sa_mask): Update.
14158         (alpha_sa_size): Update.
14159         (alpha_does_function_need_gp): Update.
14160         (alpha_expand_prologue): Update.
14161         (alpha_start_function): Update.
14162         (alpha_output_function_end_prologue): Update.
14163         (alpha_expand_epilogue): Update.
14164         * config/frv/frv.c (frv_stack_info): Update.
14165         (frv_expand_epilogue): Update.
14166         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
14167         (s390_register_info): Update.
14168         (s390_frame_info): Update.
14169         (s390_init_frame_layout): Update.
14170         (s390_can_eliminate): Update.
14171         (save_gprs): Update.
14172         * config/spu/spu.c (spu_split_immediate): Update.
14173         (need_to_save_reg): Update.
14174         (spu_expand_prologue): Update.
14175         (spu_expand_epilogue): Update.
14176         * config/sparc/sparc.md: Update.
14177         * config/sparc/sparc.c (eligible_for_return_delay): Update.
14178         (sparc_tls_got): Update.
14179         (legitimize_pic_address): Update.
14180         (sparc_emit_call_insn): Update.
14181         (sparc_expand_prologue): Update.
14182         (output_return): Update.
14183         (print_operand): Update.
14184         (sparc_function_ok_for_sibcall): Update.
14185         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
14186         * config/m32r/m32r.md: Update.
14187         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
14188         (m32r_compute_frame_size): Update.
14189         (m32r_expand_prologue): Update.
14190         (m32r_expand_epilogue): Update.
14191         (m32r_legitimize_pic_address): Update.
14192         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
14193         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
14194         * config/i386/i386.c (ix86_frame_pointer_required): Update.
14195         (gen_push): Update.
14196         (ix86_save_reg): Update.
14197         (ix86_compute_frame_layout): Update.
14198         (ix86_expand_prologue): Update.
14199         (ix86_expand_epilogue): Update.
14200         * config/sh/sh.c (output_stack_adjust): Update.
14201         (calc_live_regs): Update.
14202         (sh5_schedule_saves): Update.
14203         (sh_expand_prologue): Update.
14204         (sh_expand_epilogue): Update.
14205         (sh_setup_incoming_varargs): Update.
14206         (sh_allocate_initial_value): Update.
14207         (sh_get_pr_initial_val): Update.
14208         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
14209         * config/sh/sh.md (label:): Update.
14210         * config/avr/avr.c (out_movhi_mr_r): Update.
14211         * config/crx/crx.h (enum): Update.
14212         * config/xtensa/xtensa.h (along): Update.
14213         * config/stormy16/stormy16.c Update.
14214         (xstormy16_compute_stack_layout): Update.
14215         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
14216         (fr30_expand_prologue): Update.
14217         * config/cris/cris.c (cris_conditional_register_usage): Update.
14218         (cris_reg_saved_in_regsave_area): Update.
14219         (cris_initial_frame_pointer_offset): Update.
14220         (cris_simple_epilogue): Update.
14221         (cris_expand_prologue): Update.
14222         (cris_expand_epilogue): Update.
14223         (cris_expand_pic_call_address): Update.
14224         (cris_asm_output_symbol_ref): Update.
14225         (cris_asm_output_label_ref): Update.
14226         * config/cris/cris.md Update.
14227         * config/iq2000/iq2000.c (compute_frame_size): Update.
14228         (iq2000_expand_epilogue): Update.
14229         * config/mt/mt.h (save_direction): Update.
14230         * config/mn10300/mn10300.c (mn10300_function_value): Update.
14231         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
14232         (ia64_secondary_reload_class): Update.
14233         * config/m68k/m68k.c (m68k_save_reg): Update.
14234         (m68k_expand_prologue): Update.
14235         (m68k_expand_epilogue): Update.
14236         (legitimize_pic_address): Update.
14237         * config/rs6000/rs6000.c (rs6000_got_register): Update.
14238         (first_reg_to_save): Update.
14239         (first_altivec_reg_to_save): Update.
14240         (compute_vrsave_mask): Update.
14241         (compute_save_world_info): Update.
14242         (rs6000_stack_info): Update.
14243         (spe_func_has_64bit_regs_p): Update.
14244         (rs6000_ra_ever_killed): Update.
14245         (rs6000_emit_eh_reg_restore): Update.
14246         (rs6000_emit_allocate_stack): Update.
14247         (rs6000_emit_prologue): Update.
14248         (rs6000_emit_epilogue): Update.
14249         (rs6000_output_function_epilogue): Update.
14250         (output_profile_hook): Update.
14251         (rs6000_elf_declare_function_name): Update.
14252         * config/rs6000/rs6000.h (rs6000_args): Update.
14253         * config/rs6000/rs6000.md: Update.
14254         * config/mcore/mcore.c (mcore_expand_prolog): Update.
14255         * config/arc/arc.c (arc_output_function_epilogue): Update.
14256         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
14257         * config/darwin.c (machopic_function_base_name): Update.
14258         * config/score/score3.c (score3_compute_frame_size): Update.
14259         (rpush): Update.
14260         (rpop): Update.
14261         (score3_epilogue): Update.
14262         * config/score/score7.c (score7_compute_frame_size): Update.
14263         (score7_prologue): Update.
14264         (score7_epilogue): Update.
14265         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
14266         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
14267         * config/arm/arm.c (use_return_insn): Update.
14268         (require_pic_register): Update.
14269         (arm_load_pic_register): Update.
14270         (arm_compute_save_reg0_reg12_mask): Update.
14271         (arm_compute_save_reg_mask): Update.
14272         (thumb1_compute_save_reg_mask): Update.
14273         (output_return_instruction): Update.
14274         (arm_output_function_prologue): Update.
14275         (arm_output_epilogue): Update.
14276         (arm_get_frame_offsets): Update.
14277         (arm_expand_prologue): Update.
14278         (thumb_pushpop): Update.
14279         (thumb_exit): Update.
14280         (thumb1_expand_prologue): Update.
14281         (thumb1_expand_epilogue): Update.
14282         (arm_unwind_emit): Update.
14283         (arm_output_fn_unwind): Update.
14284         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
14285         * config/arm/arm.md: Update.
14286         * config/pa/pa.md: Update.
14287         * config/pa/pa.c (legitimize_pic_address): Update.
14288         (compute_frame_size): Update.
14289         (hppa_expand_prologue): Update.
14290         (hppa_expand_epilogue): Update.
14291         (borx_reg_operand): Update.
14292         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
14293         (HARD_REGNO_RENAME_OK): Update.
14294         * config/mips/mips.c (mips_global_pointer): Update.
14295         (mips_save_reg_p): Update.
14296         (mips_compute_frame_info): Update.
14297         (mips_frame_pointer_required): Update.
14298         (mips_expand_prologue): Update.
14299         (mips_expand_epilogue): Update.
14300         (mips_can_use_return_insn): Update.
14301         (mips_reorg_process_insns): Update.
14302         * config/v850/v850.c (compute_register_save_size): Update.
14303         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
14304         * config/mmix/mmix.c (along): Update.
14305         (mmix_expand_epilogue): Update.
14306         * config/bfin/bfin.c (legitimize_pic_address): Update.
14307         (must_save_p): Update.
14308         (stack_frame_needed_p): Update.
14309         (add_to_reg): Update.
14310         (bfin_expand_prologue): Update.
14311         * stmt.c (expand_asm_operands): Update.
14312         * reload1.c (reload): Update.
14313         (init_elim_table): Update.
14314
14315 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
14316
14317         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
14318
14319 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
14320
14321         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
14322         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
14323         (mov<mode>): Removed.
14324         (*movv4sf_internal): Likewise.
14325         (*movv2df_internal): Likewise.
14326
14327 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
14328
14329         * config.gcc (crx-*-elf): Remove deprecation.
14330
14331 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
14332
14333         * config/i386/cygming-crtend.c (register_frame_ctor): Register
14334         __gcc_deregister_frame with atexit.
14335         (deregister_frame_dtor): Remove.
14336
14337 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
14338             Nathan Sidwell  <nathan@codesourcery.com>
14339
14340         * config/rs6000/rs6000.opt (mspe): Remove Var property.
14341         (misel): Likewise.
14342         * config/rs6000/rs6000.h (rs6000_spe): Declare.
14343         (rs6000_isel): Likewise.
14344         * config/rs6000/rs6000.c (rs6000_spe): New variable.
14345         (rs6000_isel): New variable.
14346         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
14347
14348 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
14349
14350         PR c++/35758
14351         * c-common.c (handle_vector_size_attribute): Call
14352         lang_hooks.types.reconstruct_complex_type instead of
14353         reconstruct_complex_type.
14354         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
14355         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
14356         * langhooks.h (struct lang_hooks_for_types): Add
14357         reconstruct_complex_type hook.
14358         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
14359         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
14360
14361 2008-04-24  Richard Guenther  <rguenther@suse.de>
14362
14363         * c-common.h (check_builtin_function_arguments): Declare.
14364         * c-common.c (validate_nargs): New function.
14365         (check_builtin_function_arguments): Likewise.
14366         * c-typeck.c (build_function_call): Call
14367         check_builtin_function_arguments.
14368         * builtins.c (fold_builtin_classify): Remove error reporting code.
14369         (fold_builtin_unordered_cmp): Likewise.
14370         (fold_builtin_1): Likewise.
14371         (fold_builtin_n): Likewise.
14372
14373 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
14374
14375         PR tree-optimization/36008
14376         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
14377         the original op1, rather than delta by step.
14378
14379 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
14380             Sebastian Pop  <sebastian.pop@amd.com>
14381
14382         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
14383         eliminate_local_variables_stmt, eliminate_local_variables,
14384         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
14385         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
14386         of code delimited by two edges in the CFG.
14387         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
14388         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
14389         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
14390         the case of parallelisation of reductions.
14391         (expr_invariant_in_region_p): New.
14392
14393         * tree-flow.h (gather_blocks_in_sese_region): Declared.
14394         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
14395
14396 2008-04-24  Ira Rosen  <irar@il.ibm.com>
14397             Richard Guenther  <rguenther@suse.de>
14398
14399         PR tree-optimization/36034
14400         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
14401         incapable of dealing with loads with gaps.
14402
14403 2008-04-24  Rafael Espindola  <espindola@google.com>
14404
14405         * tree-flow.h (vrp_evaluate_conditional): Change signature.
14406         * tree-ssa-propagate.c (fold_predicate_in): Update call to
14407         vrp_evaluate_conditional.
14408         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
14409         (vrp_evaluate_conditional): Split the cond argument.
14410         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
14411         (simplify_stmt_for_jump_threading): Update call to
14412         vrp_evaluate_conditional.
14413
14414 2008-04-24  Ira Rosen  <irar@il.ibm.com>
14415
14416         PR tree-optimization/35982
14417         * tree-vect-analyze.c (vect_check_interleaving): Check that the
14418         interleaved data-refs are of the same type.
14419
14420 2008-04-24  Danny Smith  <dannysmith@users.net>
14421
14422         * c-format.c (check_format_info_main): Use strncmp rather than a
14423         magic prefix to handle multichar length specs.
14424         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
14425         Don't prefix "I64" and "I32" with '\0'.
14426
14427 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
14428
14429         PR target/36015
14430         * config/i386/i386.c (init_cumulative_args): Don't pass anything
14431         in registers for -m32 only if stdarg_p (fntype).
14432
14433 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
14434
14435         PR rtl-optimization/36006
14436         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
14437         temp to op0 in order to avoid invalid rtx sharing.
14438
14439 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
14440
14441         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
14442         check TREE_INVARIANT.
14443         * tree-gimple.c (is_gimple_address): New.
14444         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
14445         * tree-gimple.h (is_gimple_address): New.
14446         * tree.h (decl_address_invariant_p): New.
14447         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
14448         (build_string): Likewise.
14449         (decl_address_invariant_p): New, from is_gimple_invariant_address.
14450         (tree_invariant_p_1): Likewise.
14451         (save_expr): Use it.
14452         (tree_invariant_p): New.
14453         (skip_simple_arithmetic): Use it.
14454         (stabilize_reference_1): Use it.
14455         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
14456         simplify.
14457         (build1_stat): Drop code to compute TREE_INVARIANT.
14458         (build2_stat): Drop code to compute TREE_INVARIANT.
14459         (build3_stat): Drop code to compute TREE_INVARIANT.
14460         (build4_stat): Drop code to compute TREE_INVARIANT.
14461         (build5_stat): Drop code to compute TREE_INVARIANT.
14462         (build7_stat): Drop code to compute TREE_INVARIANT.
14463         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
14464         * tree.h (struct tree_base): Remove invariant_flag.
14465         (TREE_INVARIANT): Remove.
14466         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
14467         (fold_builtin_expect): Check TREE_CONSTANT.
14468         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
14469         * c-tree.h (c_expr_to_decl): Drop third parameter.
14470         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
14471         (build_c_cast): Don't set TREE_INVARIANT.
14472         (pop_init_level): Don't set TREE_INVARIANT.
14473         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
14474         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
14475         TREE_CONSTANT.
14476         (gimplify_init_constructor): Don't set TREE_INVARIANT.
14477         (gimplify_addr_expr): Adjust comment.
14478         * tree-mudflap.c (mf_build_string):
14479         * print-tree.c (print_node): Don't print TREE_INVARIANT.
14480         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
14481         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
14482         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
14483         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
14484         * langhooks.h (struct lang_hooks): Drop third parameter from
14485         expr_to_decl.
14486
14487 2008-04-23  Richard Guenther  <rguenther@suse.de>
14488
14489         PR tree-optimization/27799
14490         PR tree-optimization/32921
14491         PR tree-optimization/32624
14492         * tree-ssa-structalias.c (merge_smts_into): Only merge the
14493         SMTs aliases and the tag itself into the solution.
14494         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
14495         merge the points-to solution back into the SMT aliases.
14496         (may_alias_p): Use alias_set_subset_of instead of
14497         aliases_conflict_p.  A pointer which points to
14498         memory with alias set zero may access any variable.
14499
14500 2008-04-23  Richard Guenther  <rguenther@suse.de>
14501
14502         * alias.c (alias_set_subset_of): Correctly handle asking
14503         if zero is a subset of an alias set with zero child.
14504         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
14505         (compute_flow_insensitive_aliasing): Correctly walk all
14506         pointers.  Do not unnecessarily union sets.
14507
14508 2008-04-23  Richard Guenther  <rguenther@suse.de>
14509
14510         PR middle-end/36021
14511         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
14512
14513 2008-04-22  Tomas Bily  <tbily@suse.cz>
14514
14515         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
14516         unreachable case.
14517         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
14518         NON_LVALUE_EXPR.
14519         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
14520         * tree-ssa-structalias.c (get_constraint_for): Likewise.
14521         * tree-inline.c (estimate_num_insns_1): Likewise.
14522         * varasm.c (const_hash_1, compare_constant, copy_constant)
14523         (compute_reloc_for_constant, output_addressed_constants): Likewise.
14524         * emit-rtl.c (component_ref_for_mem_expr)
14525         (set_mem_attributes_minus_bitpos): Likewise.
14526         * expr.c (highest_pow2_factor, expand_expr_real_1, )
14527         (is_aligning_offset): Likewise.
14528         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
14529         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
14530         * dojump.c (do_jump): Likewise.
14531         * builtins.c (get_pointer_alignment, get_memory_rtx)
14532         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
14533         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
14534
14535 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
14536
14537         PR rtl-optimization/36017
14538         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
14539         expanding the library call.
14540
14541 2008-04-22  Ian Lance Taylor  <iant@google.com>
14542
14543         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
14544         than size_in_bytes.
14545
14546 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
14547
14548         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
14549         of LR/CTR moves for Power6.
14550
14551 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
14552
14553         PR middle-end/36003
14554         * passes.c (init_optimization_passes): Remove
14555         pass_fast_rtl_byte_dce.
14556
14557 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
14558
14559         PR target/29096
14560         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
14561         builtin functions to generate faster code.
14562         (_mm_cvtpu16_ps): Ditto.
14563         (_mm_cvtpi32x2_ps): Ditto.
14564
14565 2008-04-22  Nick Clifton  <nickc@redhat.com>
14566
14567         * common.opt (ftree-loop-distribution): Add Optimization
14568         attribute.
14569
14570         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
14571         (frv_expand_builtin_va_start): Likewise.
14572
14573         * config/arm/arm.c (thumb_find_work_register): Fix location of
14574         argument register count.
14575
14576 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
14577
14578         Support scheduling for ColdFire V1 and V3 microarchitecture.
14579         Improve scheduling of multiplication instructions.
14580
14581         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
14582         (mac): New instruction attribute.
14583         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
14584         (m68k_sched_mac): New variable.
14585         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
14586         Handle cfv1 and cfv3.
14587         (max_insn_size): New static variable.
14588         (struct _sched_ib): New type.
14589         (sched_ib): New static variable.
14590         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
14591         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
14592         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
14593         Update.
14594         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
14595         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
14596         new variables.  Update.
14597         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
14598         Add modeling of cfv3 instruction buffer.  Update.
14599         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
14600         * config/m68k/m68k.h (TUNE_CFV3): New macro.
14601         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
14602         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
14603         a particular reservation applies to.
14604         (type2): Reorganize attribute values.  Rename alu to alu_reg,
14605         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
14606         to mul_l and mul_w.
14607         (cf_ib_*): Simplify description of instruction buffer.
14608         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
14609         (cf_mem): Split into cf_mem1 and cf_mem2.
14610         (cf_v2_move_??): Rename to cfv12_alu_??.
14611         (cf_v2_move_l_??): Rename to cfv12_omove_??.
14612         (cf_v2_mul_??): Remove reservations.
14613         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
14614         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
14615         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
14616         appropriate place.
14617         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
14618         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
14619         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
14620         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
14621         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
14622         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
14623         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
14624         expansions of the above reservations for instructions of sizes
14625         1, 2 and 3 words.
14626
14627 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
14628
14629         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
14630
14631 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
14632
14633         * coverage.c: Include tree-pass.h.
14634         (coverage_counter_alloc): Print da_file_name to the dump file.
14635
14636 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
14637
14638         * sbitmap.c (sbitmap_range_empty_p): New function.
14639         * sbitmap.h (sbitmap_range_empty_p): New function.
14640         * bitmap.h: Now includes obstack.h.
14641
14642 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
14643             Kenneth Zadeck  <zadeck@naturalbridge.com>
14644
14645         * dbgcnt.def (ra_byte_scan): Added.
14646         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
14647         when the last hit happens for a counter.
14648         * timevar.def (TV_DF_BYTE_LR): New variable.
14649         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
14650         * passes.c (pass_fast_rtl_byte_dce): New pass.
14651         * fwprop.c (update_df): Added mode to call df_ref_create.
14652         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
14653         DF_REF_EXTRACT_OFFSET.
14654         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
14655         DF_BYTE_LR_OUT, df_byte_lr): New macro.
14656         (df_mm): New enum.
14657         (df_ref_extract): Added mode field.
14658         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
14659         DF_REF_EXTRACT_OFFSET.
14660         (DF_REF_EXTRACT_MODE): New macro.
14661         (df_byte_lr_bb_info): New structure.
14662         (df_print_byte_regset, df_compute_accessed_bytes,
14663         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
14664         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
14665         df_byte_lr_simulate_uses,
14666         df_byte_lr_simulate_artificial_refs_at_top,
14667         df_byte_lr_simulate_artificial_refs_at_end,
14668         df_compute_accessed_bytes): New function.
14669         (df_ref_create): Add parameter.
14670         (df_byte_lr_get_bb_info): New inline function.
14671         * df-scan.c (df_ref_record, df_uses_record,
14672         df_ref_create_structure): Added mode parameter.
14673         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
14674         df_defs_record, df_uses_record, df_get_conditional_uses,
14675         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
14676         df_entry_block_defs_collect, df_exit_block_uses_collect):
14677         Added mode parameter to calls to df_ref_record, df_uses_record,
14678         df_ref_create_structure.
14679         (df_ref_equal_p, df_ref_compare): Added test for modes.
14680         (df_ref_create_structure): Added code to set mode.  Renamed
14681         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
14682         DF_REF_EXTRACT_OFFSET.
14683         * df-core.c (df_print_byte_regset): New function.
14684         * df-byte-scan.c: New file.
14685         * df-problems.c (df_rd_transfer_function): Removed unnecessary
14686         calls to BITMAP_FREE.
14687         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
14688         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
14689         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
14690         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
14691         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
14692         df_byte_lr_local_compute, df_byte_lr_init,
14693         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
14694         df_byte_lr_transfer_function, df_byte_lr_free,
14695         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
14696         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
14697         df_byte_lr_simulate_uses,
14698         df_byte_lr_simulate_artificial_refs_at_top,
14699         df_byte_lr_simulate_artificial_refs_at_end): New function.
14700         * dce.c (byte_dce_process_block): New function.
14701         (dce_process_block): au is now passed in rather than computed
14702         locally.  Changed loops that look at artificial defs to not look
14703         for conditional or partial ones, because there never are any.
14704         (fast_dce): Now is able to drive byte_dce_process_block or
14705         dce_process_block depending on the kind of dce being done.
14706         (rest_of_handle_fast_dce): Add parameter to fast_dce.
14707         (rest_of_handle_fast_byte_dce): New function.
14708         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
14709         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
14710
14711 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
14712
14713         PR fortran/35019
14714         * gcc.h: Added fortran options that take arguments to
14715         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
14716         macros.
14717
14718 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
14719
14720         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
14721         scalarization if on the LHS and not a full access.
14722
14723 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14724
14725         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
14726
14727 2008-04-18  Rafael Espindola  <espindola@google.com>
14728
14729         * tree-vrp.c (find_case_label_index): Fix the binary search.
14730         (find_case_label_range): New.
14731         (vrp_visit_switch_stmt): Use find_case_label_range.
14732         (simplify_switch_using_ranges): Use find_case_label_range.
14733
14734 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
14735
14736         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
14737         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
14738
14739 2008-04-18  Tom Tromey  <tromey@redhat.com>
14740
14741         PR libcpp/15500:
14742         * doc/cpp.texi (Implementation-defined behavior): Mention
14743         -finput-charset.
14744
14745 2008-04-18  Ian Lance Taylor  <iant@google.com>
14746
14747         * fold-const.c (pointer_may_wrap_p): New static function.
14748         (fold_comparison): Add another test for pointer overflow.  Use
14749         pointer_may_wrap_p to disable some false positives.
14750
14751 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
14752
14753         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
14754         (fname_as_string): Match updated cpp_interpret_string prototype.
14755         (fix_string_type): Support char16_t* and char32_t*.
14756         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
14757         derivative) nodes.  Register as builtin if C++0x.
14758         (c_parse_error): Support CPP_CHAR{16,32}.
14759         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
14760         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
14761         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
14762         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
14763         CTI_CHAR32_ARRAY_TYPE>: New elements.
14764         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
14765         char32_type_node, signed_char32_type_node, char16_array_type_node,
14766         char32_array_type_node): New defines.
14767         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
14768         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
14769         (lex_string): Support CPP_STRING{16,32}, match updated
14770         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
14771         (lex_charconst): Support CPP_CHAR{16,32}.
14772         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
14773         and CPP_STRING{16,32}.
14774
14775 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
14776
14777         PR bootstrap/35457
14778         * aclocal.m4: Regenerate.
14779         * configure: Regenerate.
14780
14781 2008-04-18  Jan Hubicka  <jh@suse.cz>
14782
14783         * except.c (dw2_size_of_call_site_table,
14784         sjlj_size_of_call_site_table): Use vector API for call_site_record.
14785
14786         * cgraphbuild.c (build_cgraph_edges): Update.
14787         * tree-pass.h: Update comment.
14788         * final.c (leaf_function_p): Update.
14789         (leaf_renumber_regs): Update.
14790         (rest_of_clean_state): Update.
14791         * omp-low.c (expand_omp_parallel): Update.
14792         * ipa-reference.c (analyze_function): Update.
14793         * reorg.c (find_end_label): Update.
14794         (optimize_skip): Update.
14795         (fill_simple_delay_slots): Update.
14796         (fill_simple_delay_slots): Update.
14797         (make_return_insns): Update.
14798         (dbr_schedule): Update.
14799         * gimple-low.c (record_vars_into): Update.
14800         * cfgbuild.c (make_edges): Update.
14801         * function.c (assign_stack_local): Update.
14802         (assign_parm_adjust_stack_rtl): Update.
14803         (locate_and_pad_parm): Update.
14804         (allocate_struct_function): Do not initialize stack_alignment_needed
14805         and preferred_stack_boundary here.
14806         (stack_protect_prologue): Update.
14807         (stack_protect_epilogue): Update.
14808         (expand_function_start): Initialize stack_alignment_needed,
14809         preferred_stack_boundary and max_jumptable_ents.
14810         (expand_function_end): Update.
14811         (free_after_compilation): Do not NULLify epilogue_delay_list.
14812         * function.h (struct rtl_data): Add stack_protect_guard,
14813         stack_alignment_needed,
14814         preferred_stack_boundary, epilogue_delay_list.
14815         (struct function): Remove value_histograms, stack_alignment_needed,
14816         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
14817         last_label_uid,
14818         unexpanded_var_list, stack_protect_guard.
14819         (current_function_epilogue_delay_list): Remove.
14820         * ipa-type-escape.c (analyze_function): Update.
14821         * gimplify.c (pop_gimplify_context): Update comment.
14822         * calls.c (expand_call): Update.
14823         (emit_library_call_value_1): Update.
14824         * except.c (set_nothrow_function_flags): Update.
14825         * cfgexpand.c (get_decl_align_unit): Update.
14826         (create_stack_guard): Update.
14827         (estimated_stack_frame_size): Update.
14828         (expand_used_vars): Update.
14829         (tree_expand_cfg): Free histogram earliers, init expansion variables.
14830         * explow.c (allocate_dynamic_stack_space): Update.
14831         * tree-ssa-live.c (remove_unused_locals): Update.
14832         * varasm.c (mark_constant_pool): Update.
14833         * tree-inline.c (remap_decls): Update.
14834         (initialize_cfun): Update.
14835         (declare_return_variable): Update.
14836         (inline_forbidden_p): Update.
14837         (expand_call_inline): Update.
14838         (declare_inline_vars): Update.
14839         (tree_function_versioning): Update.
14840         * tree-flow.h (value_histograms): New.
14841         (VALUE_HISTOGRAMS): New macro.
14842         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
14843         last_label_uid.
14844         * tree-cfg.c (set_bb_for_stmt): Update.
14845         (replace_by_duplicate_decl): Update.
14846         (move_block_to_fn): Update.
14847         (new_label_mapper): Update.
14848         (dump_function_to_file): Update.
14849         * ipa-struct-reorg.c (build_data_structure): Update.
14850         * cfgrtl.c (print_rtl_with_bb): Update.
14851         * reload1.c (reload): Update.
14852         (reload): Update.
14853         * config/i386/i386.c (setup_incoming_varargs_64,
14854         ix86_compute_frame_layout): Update.
14855         * config/arc/arc.c (arc_output_function_epilogue): Update.
14856
14857 2008-04-18  Marius Strobl <marius@FreeBSD.org>
14858
14859         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
14860         for FreeBSD as well.
14861         * gthr-posix95.h: Likewise.
14862
14863 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
14864
14865         PR rtl-optimization/35838
14866         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
14867         out the byte offset of the first subreg.
14868
14869 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
14870
14871         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
14872         to split_ti instead of three separate calls with single member arrays.
14873         (subti3 splitter): Ditto.
14874         (adddi3 splitter): Ditto with split_di.
14875         (subdi3 splitter): Ditto.
14876         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
14877         two separate calls with single member arrays.  Swap match_dup
14878         operands 1 and 2 to better fit into the array.
14879         (negdi2 splitter): Ditto with split_di.
14880         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
14881         two separate calls with single member arrays.  Swap match_dup operands
14882         6 and 7 to better fit into the array.
14883
14884 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
14885
14886         * config/i386/i386.c (sse_builtin_type): New.
14887         (bdesc_sse_args): Likewise.
14888         (bdesc_sse_3arg): Removed.
14889         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
14890         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
14891         IX86_BUILTIN_ROUNDPS.
14892         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
14893         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
14894         IX86_BUILTIN_ROUNDPS.
14895         (ix86_expand_sse_4_operands_builtin): Removed.
14896         (ix86_expand_sse_operands_builtin): New.
14897         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
14898         and CODE_FOR_sse4_1_roundps.
14899         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
14900         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
14901
14902 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
14903
14904         PR target/35907
14905         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
14906         regs before frame pop when needed.  If use_backchain_to_restore_sp
14907         then load backchain into a temp reg to restore vr and vrsave.  Add
14908         code to restore vr after frame pop if possible.
14909
14910 2008-04-17  Richard Guenther  <rguenther@suse.de>
14911
14912         * tree-vn.c (expressions_equal_p): Do not check type
14913         equality or compatibility before calling operand_equal_p.
14914         * fold-const.c (operand_equal_p): Check equivalence of
14915         integer constants before bailing out due to signedness or
14916         precision differences.
14917         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
14918         spurious differences in type qualification.  Ignore types
14919         for COMPONENT_REFs at all.
14920
14921 2008-04-17  Christian Bruel  <christian.bruel@st.com>
14922
14923         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
14924         msw_skip comparison.
14925
14926 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
14927
14928         PR c/35739
14929         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
14930         reg type.
14931
14932         PR tree-optimization/35899
14933         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
14934         rather than TREE_OPERAND.
14935
14936 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
14937
14938         PR target/35944
14939         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
14940         temporary registers.  Change operand predicate to general_operand.
14941         (remainderxf3): Ditto.
14942
14943 2008-04-16  Richard Guenther  <rguenther@suse.de>
14944
14945         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
14946         * tree-affine.c (aff_combination_expand): Look through some
14947         conversions.
14948
14949 2008-04-15  Doug Kwan  <dougkwan@google.com>
14950
14951         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
14952         for hex printing.
14953         * tree-pretty-print.c (dump_generic_node): Ditto.
14954         * final.c (output_addr_const): Ditto.
14955         * dwarf2out.c (output_cfi): Ditto.
14956         * c-pretty-print.c (pp_c_integer_constant): Ditto.
14957         * print-rtl.c (print_rtx): Ditto.
14958         * print-tree.c (print_node_brief, print_node): Ditto.
14959         * c-common.c (match_case_to_enum_1): Ditto.
14960         * sched-vis.c (print_value): Ditto.
14961         * config/i386/i386.c (print_operand): Cast to long unsigned int
14962         for hex printing.
14963
14964 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
14965         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
14966         MS Windows VirtualProtect function.
14967
14968 2008-04-15  Jan Hubicka  <jh@suse.cz>
14969
14970         * gengtype.c (write_root): Param_is argument is OK.
14971         * expr.c (expand_expr_real_1): Update call of get_exception_*.
14972         * function.h: Include varray.h
14973         (rtl_eh): New stucture based on except.c one.
14974         (call_site_record): New forward declaration and vector type.
14975         * calls.c (emit_call_1): Do not call
14976         note_current_region_may_contain_throw.
14977         * except.c (eh_status): Remove cur_region, try_region since they are
14978         unused.
14979         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
14980         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
14981         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
14982         Remove call_site_data_used, call_site_data_size.
14983         Turn call_site_record into vector in function.h.
14984         (note_current_region_may_contain_throw): Remove.
14985         (get_exception_pointer, get_exception_filter): Do not take struct
14986         function argument; update.
14987         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
14988         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
14989         build_post_landing_pads, dw2_build_landing_pads,
14990         sjlj_assign_call_site_values, sjlj_mark_call_sites,
14991         sjlj_emit_function_enter, sjlj_emit_function_enter,
14992         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
14993         sjlj_build_landing_pads, finish_eh_generation,
14994         remove_exception_handler_label, remove_eh_handler,
14995         maybe_remove_eh_handler, add_reachable_handler,
14996         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
14997         add_action_record, collect_one_action_chain, add_call_site,
14998         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
14999         sjlj_output_call_site_table, output_function_exception_table,
15000         * except.h (note_current_region_may_contain_throw): Remove
15001         (get_exception_pointer, get_exception_filter): Do not take struct
15002         function argument.
15003         * Makefile.in (GTFILES): Put varargs before struct function.
15004
15005 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
15006
15007         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
15008         punt for STRING_CST.
15009         (get_constraint_for): Deal with STRING_CST here instead.
15010
15011 2008-04-15  Richard Guenther  <rguenther@suse.de>
15012
15013         * tree-ssa-propagate.c (substitute_and_fold): Substitute
15014         statements in a basic-block with a backward walk.  Do not
15015         substitute into dead statements but instead remove those.
15016
15017 2008-04-15  Richard Guenther  <rguenther@suse.de>
15018
15019         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
15020         to zero, thus disable creation of SFTs.
15021
15022 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
15023
15024         * tree-predcom.c (suitable_reference_p): Return false if the
15025         reference can throw.
15026
15027 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
15028
15029         PR c/35751
15030         * c-decl.c (finish_decl): If extern or static var has variable
15031         size, set TREE_TYPE (decl) to error_mark_node.
15032
15033 2008-04-15  Rafael Espindola  <espindola@google.com>
15034
15035         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
15036         variable arg1.
15037
15038 2008-04-15  Richard Guenther  <rguenther@suse.de>
15039
15040         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
15041         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
15042         (visit_reference_op_load): Do walk vuse-vdef chains on
15043         vn_reference_lookup.
15044         (visit_reference_op_store): But do not here.
15045         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
15046         vn_reference_lookup.
15047         (vn_lookup_with_vuses): But do so here.
15048
15049 2008-04-14  Ian Lance Taylor  <iant@google.com>
15050
15051         * fold-const.c (fold_overflow_warning): Remove assertion.
15052
15053 2008-04-15  Ben Elliston  <bje@au.ibm.com>
15054
15055         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
15056         temp1 local variables.
15057
15058 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
15059
15060         PR target/35661
15061         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
15062         ".text.unlikely" section as executable.
15063
15064 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
15065
15066         * config/ia64/ia64.c (rtx_needs_barrier): Handle
15067         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
15068         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
15069         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
15070         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
15071         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
15072         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
15073
15074 2008-04-14  Ian Lance Taylor  <iant@google.com>
15075
15076         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
15077         * fold-const.c (fold_comparison): If appropriate, test
15078         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
15079         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
15080         reassociating a pointer type.
15081         * doc/invoke.texi (Optimize Options): Document that
15082         -fstrict-overflow applies to pointer wraparound.
15083
15084 2008-04-13  Jan Hubicka  <jh@suse.cz>
15085
15086         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
15087
15088 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
15089
15090         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
15091         we are going to "save the world".
15092
15093 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
15094
15095         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
15096         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
15097         operand 0 constraint, not "=".
15098
15099 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
15100
15101         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
15102
15103 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
15104
15105         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
15106         of size of positions_needed * CHAR_BIT.
15107
15108 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
15109
15110         PR middle-end/35897
15111         * dse.c (store_info): Change positions_needed to unsigned
15112         HOST_WIDE_INT.
15113         (lowpart_bitmask): New.
15114         (record_store): Cast to unsigned HOST_WIDE_INT for
15115         positions_needed.  Assert width <= size of positions_needed *
15116         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
15117         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
15118         lowpart_bitmask to set mask.
15119
15120 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
15121
15122         * config/bfin/constraints.md: New file.
15123         * config/bfin/bfin.md: Include it.
15124         (adddi3): Use satisfies_constraint functions instead of the old macros.
15125         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
15126         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
15127         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
15128         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
15129         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
15130         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
15131         EXTRA_CONSTRAINT): Delete.
15132         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
15133         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
15134         of the old macros.
15135         * config/bfin/bfin.c: Include "tm-constrs.h".
15136         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
15137         Use satisfies_constraint functions instead of the old macros.
15138         * doc/md.texi (Blackfin Constraints): Update file name reference.
15139
15140 2008-04-11  Richard Guenther  <rguenther@suse.de>
15141
15142         PR tree-optimization/35869
15143         * tree-vrp.c (execute_vrp): Move switch statement update after
15144         jump threading.  Schedule another cfg cleanup run.
15145
15146 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
15147
15148         PR c/35744
15149         * attribs.c (decl_attributes): Return early on errorneous node.
15150
15151 2008-04-10  Oleg Ryjkov  <olegr@google.com>
15152
15153         * tree.h (struct tree_base): Added a new flag default_def_flag.
15154         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
15155
15156 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
15157
15158         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
15159
15160 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15161
15162         PR target/35768
15163         * pa.md: Define mode iterator P.  Define mode attribute dwc.
15164         (dcacheflush): Update pattern to use iterator P and attribute dwc.
15165         (icacheflush): Likewise.
15166         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
15167         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
15168
15169 2008-04-11  Ben Elliston  <bje@au.ibm.com>
15170
15171         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
15172
15173 2008-04-10  Rafael Espindola  <espindola@google.com>
15174
15175         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
15176         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
15177         (extract_range_from_expr): The same.
15178
15179 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
15180
15181         * config/mips/mips.md (GPR2): New mode iterator.
15182         (seq): Add comment.
15183         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
15184         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
15185         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
15186         Rewrite these to take two modes, the mode of comparison and the
15187         mode of the destination.
15188         * config/mips/mips.c (mips_expand_scc): Instead of having
15189         paradoxical subreg as destination, expand "narrowing" scc if mode
15190         of comparison is SI and target is requested in DI mode.
15191         (mips_emit_int_order_test): Update comment.  Make mode of
15192         comparison match CMP0 rather than TARGET.  When creating inverse
15193         target use mode of TARGET.
15194
15195 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
15196
15197         * gcov-dump.c (tag_summary): Only print summaries for the first
15198         GCOV_COUNTERS_SUMMABLE counters.
15199
15200 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
15201
15202         * config/i386/i386.md (absneg): New code iterator.
15203         (absnegprefix): New code attribute.
15204         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
15205         patterns using absneg code iterator.
15206         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
15207         using absneg code iterator.
15208         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
15209         *neg<mode>2 patterns using absneg code iterator.
15210         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
15211         *negextendsfdf2 patterns using absneg code iterator.
15212         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
15213         *negextendsfxf2 patterns using absneg code iterator.
15214         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
15215         *negextendsfdf2 patterns using absneg code iterator.
15216         * config/i386/sse.md (<code><mode>2): Macroize expander from
15217         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
15218
15219 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
15220
15221         * config/s390/s390.h: Remove the remains of the recent search
15222         & replace action of current_function_outgoing_args_size.
15223
15224 2008-04-10  Ira Rosen  <irar@il.ibm.com>
15225
15226         PR tree-optimization/35821
15227         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
15228         NEW_STMT_LIST is not NULL.
15229
15230 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
15231
15232         PR libstdc++/35597
15233         * toplev.c (process_options): Remove -ffunction-sections debugging
15234         warning.
15235
15236 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
15237
15238         PR middle-end/PR28690
15239         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
15240         than gen_rtx_fmt_ee to perform more canonicalizations.
15241
15242 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15243
15244         PR driver/35665
15245         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
15246
15247 2008-04-09  Richard Guenther  <rguenther@suse.de>
15248
15249         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
15250         (dump_function_to_file): Dump function arguments with types.
15251
15252 2008-04-08  Richard Guenther  <rguenther@suse.de>
15253
15254         * fold-const.c (fold_widened_comparison): Do not allow
15255         sign-changes that change the result.
15256
15257 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
15258
15259         PR target/35839
15260         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
15261         kinds of indirect references.
15262
15263 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
15264
15265         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
15266         GNU Fortran language string.
15267
15268 2008-04-08  Rafael Espindola  <espindola@google.com>
15269
15270         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
15271         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
15272         * tree.h (tree_call_nonnegative_warnv_p): New.
15273
15274 2008-04-08  Jan Hubicka  <jh@suse.cz>
15275
15276         * function.c (free_after_compilation): Clear out regno_reg_rtx
15277         pointer.
15278
15279 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
15280
15281         Revert
15282         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
15283
15284         PR middle-end/PR28690
15285         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
15286         same precedence as REG_POINTER and MEM_POINTER operands.
15287
15288 2008-04-08  Richard Guenther  <rguenther@suse.de>
15289
15290         PR middle-end/35834
15291         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
15292         for adding index to base.
15293
15294 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
15295
15296         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
15297         (MINGW_ENABLE_EXECUTE_STACK): New.
15298         (IN_LIBGCC2): For libgcc include windows.h file for
15299         function declarations.
15300
15301 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
15302
15303         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
15304         and tem2 if tem1 is not a REG or MULT.
15305
15306 2008-04-08  Jan Hubicka  <jh@suse.cz>
15307
15308         * function.h (incomming_args): Break out of struct function.
15309         (function_subsections): Break out of struct function.
15310         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
15311         return_rtx and hard_reg_initial_vals from struct function.
15312         Kill inl_max_label_num.
15313         (current_function_pops_args, current_function_args_info,
15314         current_function_args_size, current_function_args_size,
15315         current_function_pretend_args_size,
15316         current_function_outgoing_args_size,
15317         current_function_internal_arg_pointer, current_function_return_rtx):
15318         Kill compatibility accestor macros.
15319         * builtins.c (expand_builtin_apply_args_1): Update.
15320         (expand_builtin_next_arg): Update.
15321         * df-scan.c (df_get_call_refs): Update.
15322         * dbxout.c (dbxout_function_end): Update.
15323         * dwarf2out.c (dwarf2out_switch_text_section): Update.
15324         (output_line_info): Update.
15325         (secname_for_decl): Update.
15326         (dwarf2out_var_location): Update.
15327         * function.c (free_after_compilation): Update.
15328         (assign_parm_find_stack_rtl): Update.
15329         (assign_parms): Update.
15330         (expand_dummy_function_end): Update.
15331         (expand_function_end): Update.
15332         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
15333         (expand_call): Update.
15334         (emit_library_call_value_1): Update.
15335         (store_one_arg): Update.
15336         * varasm.c (initialize_cold_section_name): Update.
15337         (unlikely_text_section): Update.
15338         (unlikely_text_section_p): Update.
15339         (assemble_start_function): Update.
15340         (assemble_end_function): Update.
15341         (default_section_type_flags): Update.
15342         (switch_to_section): Update.
15343         * integrate.c (set_decl_abstract_flags): Update.
15344         (get_hard_reg_initial_val): Update.
15345         (has_hard_reg_initial_val): Update.
15346         (allocate_initial_values): Update.
15347         * resource.c (init_resource_info): Update.
15348         * config/alpha/alpha.c (NUM_ARGS): Update.
15349         (direct_return): Update.
15350         (alpha_va_start): Update.
15351         (alpha_sa_size): Update.
15352         (alpha_initial_elimination_offset): Update.
15353         (alpha_expand_prologue): Update.
15354         (alpha_start_function): Update.
15355         (alpha_expand_epilogue): Update.
15356         (unicosmk_initial_elimination_offset):
15357         * config/alpha/alpha.md (call expander): Update.
15358         * config/s390/s390.c (s390_register_info): Update.
15359         (s390_register_info): Update.
15360         (s390_frame_info): Update.
15361         (s390_initial_elimination_offset): Update.
15362         (s390_build_builtin_va_list): Update.
15363         (s390_va_start): Update.
15364         * config/spu/spu.c (direct_return): Update.
15365         (spu_expand_prologue): Update.
15366         (spu_initial_elimination_offset): Update.
15367         (spu_build_builtin_va_list): Update.
15368         (spu_va_start): Update.
15369         * config/sparc/sparc.c (sparc_init_modes): Update.
15370         (sparc_compute_frame_size): Update.
15371         (function_value): Update.
15372         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
15373         * config/i386/i386.md (return expander): Update.
15374         * config/i386/i386.c (ix86_va_start): Update.
15375         (ix86_can_use_return_insn_p): Update.
15376         (ix86_compute_frame_layout): Update.
15377         (ix86_expand_epilogue): Update.
15378         * config/sh/sh.c (output_stack_adjust): Update.
15379         (calc_live_regs): Update.
15380         (sh_expand_prologue): Update.
15381         (sh_builtin_saveregs): Update.
15382         (sh_va_start): Update.
15383         (initial_elimination_offset): Update.
15384         (sh_allocate_initial_value): Update.
15385         (sh_function_ok_for_sibcall): Update.
15386         (sh_get_pr_initial_val): Update.
15387         * config/sh/sh.md (return expander): Update.
15388         * config/avr/avr.c (frame_pointer_required_p): UPdate.
15389         * config/crx/crx.c (crx_compute_frame): UPdate.
15390         (crx_initial_elimination_offset): UPdate.
15391         * config/xtensa/xtensa.c (compute_frame_size): Update
15392         (xtensa_builtin_saveregs): Update.
15393         (xtensa_va_start): Update.
15394         (order_regs_for_local_alloc): Update.
15395         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
15396         (xstormy16_expand_builtin_va_start): Update.
15397         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
15398         * config/m68hc11/m68hc11.md (return expanders): Update.
15399         * config/m68hc11/m68hc11.c (expand_prologue): Update.
15400         (expand_epilogue): Update.
15401         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
15402         (cris_simple_epilogue): Update.
15403         (cris_expand_prologue): Update.
15404         (cris_expand_epilogue): Update.
15405         * config/iq2000/iq2000.c (iq2000_va_start): Update.
15406         (compute_frame_size): Update.
15407         * config/mt/mt.c (mt_compute_frame_size): Update.
15408         * config/mn10300/mn10300.c (expand_prologue): Update.
15409         (expand_epilogue): Update.
15410         (initial_offset): Update.
15411         (mn10300_builtin_saveregs):
15412         * config/mn10300/mn10300.md (return expander): Update.
15413         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
15414         (ia64_initial_elimination_offset): Update.
15415         (ia64_initial_elimination_offset): Update.
15416         (ia64_expand_prologue): Update.
15417         * config/m68k/m68k.md (return expander): Update.
15418         * config/rs6000/rs6000.c (rs6000_va_start): Update.
15419         (rs6000_stack_info): Update.
15420         * config/mcore/mcore.c (layout_mcore_frame): Update.
15421         (mcore_expand_prolog): Update.
15422         * config/arc/arc.c (arc_compute_frame_size): Update.
15423         * config/score/score3.c (score3_compute_frame_size): Update.
15424         * config/score/score7.c (score7_compute_frame_size): Update.
15425         * config/arm/arm.c (use_return_insn): Update.
15426         (thumb_find_work_register): Update.
15427         (arm_compute_save_reg_mask): Update.
15428         (arm_output_function_prologue): Update.
15429         (arm_output_epilogue): Update.
15430         (arm_size_return_regs): Update.
15431         (arm_get_frame_offsets): Update.
15432         (arm_expand_prologue): Update.
15433         (thumb_exit): Update.
15434         (thumb_unexpanded_epilogue): Update.
15435         (thumb1_output_function_prologue): Update.
15436         * config/pa/pa.md (return expander): Update.
15437         * config/pa/pa.c (compute_frame_size): Update.
15438         (hppa_builtin_saveregs): Update.
15439         * config/mips/mips.c (mips_va_start): Update.
15440         (mips16_build_function_stub): Update.
15441         (mips_compute_frame_info): Update.
15442         (mips_restore_gp): Update.
15443         (mips_output_function_prologue): Update.
15444         (mips_expand_prologue): Update.
15445         * config/v850/v850.c (compute_frame_size): Update.
15446         (expand_prologue): * config/mmix/mmix.c (along): update.
15447         (mmix_initial_elimination_offset): update.
15448         (mmix_reorg): update.
15449         (mmix_use_simple_return): update.
15450         (mmix_expand_prologue): update.
15451         (mmix_expand_epilogue): Update.
15452         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
15453         (emit_link_insn): Update.
15454
15455 2008-04-08  Anatoly Sokolov <aesok@post.ru>
15456
15457         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
15458         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
15459         instructions.
15460         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
15461         atmega103 device.
15462
15463 2008-04-07  Jan Hubicka  <jh@suse.cz>
15464
15465         * function.h (rtl): Rename to x_rtl.
15466         (crtl): New define.
15467         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
15468         frame_offset, stack_check_probe_note, arg_pointer_save_area,
15469         used_temp_slots avail_temp_slots, temp_slot_level,
15470         nonlocal_goto_handler_labels): Update accesstors.
15471         (rtl): New global variable.
15472         (struct function): Move some fileds to rtl_data.
15473         (get_arg_pointer_save_area): Update prototype.
15474         * builtins.c (expand_builtin_setjmp_receiver): Update call of
15475         get_arg_pointer_save_area.
15476         * expr.c (init_expr): Update
15477         * function.c (get_frame_size): Update
15478         (assign_stack_local): Update
15479         (expand_function_end): Update.
15480         (get_art_pointer_save_area): Update
15481         * function.h
15482         * emit-rtl.c (rtl): Declare.
15483         (regno_reg_rtx): Declare.
15484         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
15485         Update.
15486         (gen_reg_rtx): Update.
15487         * varasm.c (n_deferred_constatns): Update accestor.
15488         (init_varasm_status): Do not allocate varasm_status.
15489         (force_const_mem, get_pool_size, output_constant_pool): Update.
15490         * stmt.c (force_label_rtx): Do not use x_ prefixes.
15491         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
15492         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
15493         * sparc/sparc.h (INIT_EXPANDERS): Update.
15494         * ia64/ia64.h (INIT_EXPANDERS): Update.
15495
15496 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
15497
15498         * reload.c (push_secondary_reload): Add missing break to for loop.
15499
15500 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
15501
15502         PR middle-end/PR28690
15503         * rtlanal.c: Update copyright years.
15504         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
15505         as REG_POINTER and MEM_POINTER operands.
15506         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
15507         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
15508         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
15509         * gcse.c: Update copyright years.
15510         (pre_delete): Call gen_reg_rtx_and_attrs.
15511         (hoist_code): Likewise.
15512         (build_store_vectors): Likewise.
15513         (delete_store): Likewise.
15514         * loop-invariant.c (move_invariant_reg): Likewise.
15515         Update copyright years.
15516
15517 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
15518
15519         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
15520         control string instead of quoted.
15521
15522 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
15523
15524         * doc/rtl.texi: Rewrite of subreg section.
15525
15526 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
15527
15528         PR/35842
15529         * config/i386/i386.c (legitimize_pic_address): Add treating
15530         of dllimport SYM_REF's.
15531         (legitimize_dllimport_symbol): Add prototype.
15532
15533 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
15534
15535         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
15536         reference in constructor with non self-referential type.
15537
15538 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
15539
15540         Removal of Return with Depressed Stack Pointer support
15541         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
15542         (ECF_SP_DEPRESSED): Likewise.
15543         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
15544         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
15545         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
15546         (expand_call): Do not test ECF_SP_DEPRESSED.
15547         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
15548         * function.c (keep_stack_depressed): Delete.
15549         (handle_epilogue_set): Likewise.
15550         (update_epilogue_consts): Likewise.
15551         (emit_equiv_load): Likewise.
15552         (thread_prologue_and_epilogue_insns): Remove support for Return with
15553         Depressed Stack Pointer.
15554         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
15555
15556 2008-04-06  Richard Guenther  <rguenther@suse.de>
15557
15558         PR tree-optimization/35400
15559         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
15560         information from SSA_NAMEs.
15561
15562 2008-04-06  Anatoly Sokolov <aesok@post.ru>
15563
15564         * config/avr/avr.h (avr_mega_p): Remove declaration.
15565         (AVR_MEGA): Remove macro.
15566         * config/avr/avr.c (avr_mega_p): Remove variable.
15567         (avr_override_options): Remove inicializion of avr_mega_p.
15568         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
15569         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
15570         (avr_jump_mode): (Ditto.).
15571         (avr_output_progmem_section_asm_op): (Ditto.).
15572         (avr_asm_init_sections): (Ditto.).
15573         (avr_asm_init_sections): (Ditto.).
15574         (avr_rtx_costs): (Ditto.).
15575         * config/avr/avr.md: (Ditto.).
15576         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
15577         '__AVR_MEGA__'.
15578
15579 2008-04-06  Richard Guenther  <rguenther@suse.de>
15580
15581         PR tree-optimization/35842
15582         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
15583         is_gimple_invariant_address.
15584
15585 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
15586
15587         * gcc.c (default_compilers): Sync Fortran extensions list with
15588         that in fortran/lang-specs.h.
15589         * doc/invoke.texi: Likewise.
15590         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
15591         * dwarf2out.c (gen_compile_unit_die): Likewise.
15592
15593 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
15594
15595         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
15596
15597 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
15598
15599         PR target/12329
15600         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
15601         attribute is used for nested functions.
15602
15603 2008-04-05  Jan Hubicka  <jh@suse.cz>
15604
15605         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
15606
15607         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
15608         letter argument.
15609         (dump_files): Update.
15610         (enable_rtl_dump_file): Do not accept letter argument.
15611         * tree-pass.h (dump_file_info): Remove letter argument.
15612         * toplev.c (decode_d_option): Update -da handling.
15613         * toplev.h (enable_rtl_dump_file): Update prototype.
15614         * passes.c (register_one_dump_file): Do not accept IPA argument; work
15615         it out based on pass type.
15616         (register_dump_files_1): Likewise.
15617         (init_optimization_passes): Update register_one_dump_file calls.
15618         (execute_one_pass): Sanity check that IPA passes are called at IPA
15619         level and RTL passes at RTL level.
15620         (execute_pass_list): IPA pass can not be after or subpass of
15621         GIMPLE/RTL pass.
15622         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
15623         disallov RTL subpasses of IPA subpasses.
15624
15625 2008-04-05  Ben Elliston  <bje@au.ibm.com>
15626
15627         * tree-cfg.c (need_fake_edge_p): Return false for calls to
15628         builtins that return exactly once and do not throw. Cache call to
15629         call_expr_flags.
15630
15631 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
15632
15633         PR rtl-optimization/34916
15634         PR middle-end/35519
15635         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
15636         between instruction pairs.
15637
15638 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
15639
15640         * doc/invoke.texi: Document -mbitops for SH.
15641         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
15642         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
15643         * config/sh/sh.c (print_operand): Add %t operand code.
15644         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
15645         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
15646         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
15647         (extendqihi2): Likewise.
15648         (movqi_i): Likewise.
15649         (insv): Use bset, bclr and bst instructions for SH2A if possible.
15650         (extv): Use bld instruction for SH2A if possible.
15651         (extzv): Likewise.
15652         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
15653         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
15654         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
15655         (bset.b, bclr.b): Define peepholes.
15656         * config/sh/sh.opt (mbitops): New option.
15657
15658 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
15659
15660         PR target/35620
15661         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
15662         and view convert expression.
15663
15664 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
15665
15666         PR target/35364
15667         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
15668
15669 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
15670
15671         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
15672
15673         * config/i386/cpuid.h (bit_AES): New.
15674         (bit_PCLMUL): Likewise.
15675
15676         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
15677         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
15678         SSE2 if AES or PCLMUL is enabled.
15679         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
15680         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
15681         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
15682         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
15683         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
15684         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
15685         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
15686         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
15687         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
15688         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
15689         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
15690         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
15691         __builtin_ia32_aeskeygenassist128 and
15692         __builtin_ia32_pclmulqdq128.
15693         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
15694         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
15695         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
15696
15697         * config/i386/i386.h (TARGET_AES): New.
15698         (TARGET_PCLMUL): Likewise.
15699         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
15700
15701         * config/i386/i386.md (UNSPEC_AESENC): New.
15702         (UNSPEC_AESENCLAST): Likewise.
15703         (UNSPEC_AESDEC): Likewise.
15704         (UNSPEC_AESDECLAST): Likewise.
15705         (UNSPEC_AESIMC): Likewise.
15706         (UNSPEC_AESKEYGENASSIST): Likewise.
15707         (UNSPEC_PCLMUL): Likewise.
15708
15709         * config/i386/i386.opt (maes): New.
15710         (mpclmul): Likewise.
15711
15712         * config/i386/sse.md (aesenc): New pattern.
15713         (aesenclast): Likewise.
15714         (aesdec): Likewise.
15715         (aesdeclast): Likewise.
15716         (aesimc): Likewise.
15717         (aeskeygenassist): Likewise.
15718         (pclmulqdq): Likewise.
15719
15720         * config/i386/wmmintrin.h: New.
15721
15722         * doc/extend.texi: Document AES and PCLMUL built-in function.
15723
15724         * doc/invoke.texi: Document -maes and -mpclmul.
15725
15726 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
15727
15728         * function.c (free_after_parsing): Replace with
15729         cxx_push_function_context from C++ front-end.
15730         (allocate_struct_function): Don't call langhook.
15731         * langhooks.h (struct lang_hooks_for_functions): Delete.
15732         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
15733         member "function".
15734         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
15735         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
15736         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
15737         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
15738         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
15739         remove LANG_HOOKS_FUNCTION_INITIALIZER.
15740         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
15741
15742         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
15743         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
15744
15745 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
15746
15747         PR c/35440
15748         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
15749         for all types.
15750
15751 2008-04-04  Richard Guenther  <rguenther@suse.de>
15752
15753         PR middle-end/35823
15754         * fold-const.c (optimize_minmax_comparison): Use the correct
15755         type for the constant in the simplified comparison.
15756
15757 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
15758
15759         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
15760         Pass L2 size as "--param l2-cache-size" to the compiler.
15761         (decode_l2_cache): New function to decode L2 cache parameters using
15762         0x8000006 extended cpuid function.
15763         (detect_caches_amd): Determine parameters of L2 cache using
15764         decode_l2_caches function.
15765         (decode_caches_intel): Decode L2 cache parameters.
15766         (detect_caches_intel): Determine L2 cache parameters using
15767         decode_caches_intel and decode_l2_caches functions.
15768
15769 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
15770
15771         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
15772         secondary input reload for subword loads from the constant pool.
15773
15774 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
15775
15776         PR target/35713
15777         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
15778           constants of the appropriate size for runtime calculations.
15779
15780         PR c/35712
15781         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
15782           decimal-float literal constant zero.
15783
15784 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
15785
15786         PR c/35738
15787         * c-parser.c (c_parser_omp_atomic): Call
15788         default_function_array_conversion on the RHS.
15789
15790         PR middle-end/35818
15791         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
15792         call is_variable_sized if decl has incomplete type.
15793
15794 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
15795
15796         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
15797
15798 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
15799
15800         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
15801         iterators.
15802         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
15803         (sgt<u>): Merge sgt and sgtu into new expander.
15804         (sgt, sgtu): Remove expanders.
15805         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
15806         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
15807         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
15808         *sgtu_<mode>_mips16 into new pattern.
15809         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
15810         (sge<u>): Merge sge and sgeu into new expander.
15811         (sge, sgeu): Remove expanders.
15812         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
15813         new pattern.
15814         (*sge_<mode>, second *sge_<mode>): Remove patterns.
15815         (slt<u>): Merge slt and sltu into new expander.
15816         (slt, sltu): Remove expanders.
15817         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
15818         (*slt_<mode>, *sltu_<mode>): Remove patterns.
15819         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
15820         *sltu_<mode>_mips16 into new pattern.
15821         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
15822         (sle<u>): Merge sle and sleu into new expander.
15823         (sle, sleu): Remove expanders.
15824         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
15825         (*sle_<mode>, *sleu_<mode>): Remove patterns.
15826         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
15827         *sleu_<mode>_mips16 into new pattern.
15828         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
15829
15830 2008-04-03  Jan Hubicka  <jh@suse.cz>
15831
15832         PR tree-optimization/35795
15833         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
15834         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
15835         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
15836         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
15837         * score/score3.c (score3_output_mi_thunk): Likewise.
15838         * score/score7.c (score7_output_mi_thunk): Likewise.
15839         * mips/mips.c (mips_output_mi_thunk): Likewise.
15840
15841 2008-04-03  Richard Guenther  <rguenther@suse.de>
15842
15843         * tree-vrp.c (extract_range_from_unary_expr): Handle all
15844         conversions.  Simplify code.
15845
15846 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
15847
15848         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
15849
15850 2008-04-03  Tom Tromey  <tromey@redhat.com>
15851             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15852
15853         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
15854         * config/bfin/t-bfin-linux (generated_files): Add
15855         linux-sysroot-suffix.h.
15856         * doc/install.texi (Prerequisites): Require make 3.80.
15857         * doc/sourcebuild.texi (Front End Directory): Document new
15858         variable.
15859         * Makefile.in (generated_files): New variable.
15860         (ALL_HOST_OBJS): New variable.
15861         ($(ALL_HOST_OBJS)): New target.
15862
15863 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
15864
15865         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
15866         (remap_block): Call id->transform_lang_insert_block instead
15867         of langhook.
15868         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
15869         Set id.transform_lang_insert_block to NULL.
15870         (clone_body): Move to cp/optimize.c
15871         * tree-inline.h (struct copy_body_data): Change
15872         transform_lang_insert_block to function pointer.
15873         (copy_generic_body, copy_decl_no_change): Export.
15874         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
15875         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
15876         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
15877
15878         * c-tree.h (insert_block): Kill.
15879         * c-decl.c (insert_block): Kill.
15880
15881 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
15882
15883         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
15884         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
15885         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
15886         argument.
15887         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
15888         argument, call {push,pop}_function_context from here.
15889         * c-parser.c: Use c_{push,pop}_function_context.
15890
15891         * function.c (push_function_context_to): Move meat ...
15892         (push_function_context): ... here.  Simplify.
15893         * function.c (pop_function_context_from): Move meat ...
15894         (pop_function_context): ... here.  Simplify.
15895         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
15896         leave_nested).
15897         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
15898         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
15899         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
15900         * tree.h (push_function_context_to, pop_function_context_from): Remove.
15901
15902 2008-04-03  Ben Elliston  <bje@au.ibm.com>
15903
15904         * expmed.c (extract_force_align_mem_bit_field): Remove.
15905
15906 2008-04-03  Richard Guenther  <rguenther@suse.de>
15907
15908         PR middle-end/35800
15909         * expr.h (try_casesi): Adjust prototype.
15910         * expr.c (try_casesi): Take fallback label as extra parameter.
15911         Use that for gen_casesi if default_label is NULL.
15912         * stmt.c (expand_case): Pass fallback label to try_casesi,
15913         make sure to fill gaps with a fallback label if default_label
15914         is not present.
15915
15916 2008-04-03  Dominique d'Humieres <dominiq@lps.ens.fr>
15917
15918         PR target/35801
15919         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
15920
15921 2008-04-03  Ben Elliston  <bje@au.ibm.com>
15922
15923         * expmed.c (extract_split_bit_field): Remove if (0) code.
15924         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
15925         (do_ds_constraint): Likewise.
15926
15927 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
15928
15929         * doc/cppopts.texi (-dU): Document.
15930         * c-common.h (flag_dump_macros): Update comment.
15931         * c-opts.c (handle_OPT_d): Handle -dU.
15932         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
15933         dump_queued_macros, cb_used_define, cb_used_undef): New.
15934         (init_pp_output): Handle -dU.
15935         (cb_line_change): Call dump_queued_macros.
15936         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
15937
15938 2008-04-02  Anatoly Sokolov <aesok@post.ru>
15939
15940         * config/avr/predicates.md (io_address_operand): New predicate.
15941         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
15942         * config/avr/avr.c (avr_io_address_p): Remove function.
15943         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
15944         'avr_io_address_p' function.
15945         (out_movhi_r_mr): (Ditto.).
15946         (out_movqi_mr_r): (Ditto.).
15947         (out_movhi_mr_r): (Ditto.).
15948         (avr_address_cost): (Ditto.).
15949
15950 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
15951
15952         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
15953         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
15954         in 32bit mode when XMM registers are available to avoid store
15955         forwarding stalls.
15956         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
15957         corresponding post-reload splitters.
15958
15959 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
15960
15961         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
15962         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
15963         __builtin_ia32_roundss.
15964         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
15965         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
15966         __builtin_ia32_roundss.
15967         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
15968         IX86_BUILTIN_SHUFPD here.
15969
15970 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
15971
15972         * config/i386/i386.md (plogic): New.
15973         (plogicprefix): Likewise.
15974
15975         * config/i386/mmx.md (mmx_<code><mode>3): New.
15976         (mmx_and<mode>3): Removed.
15977         (mmx_ior<mode>3): Likewise.
15978         (mmx_xor<mode>3): Likewise.
15979
15980         * config/i386/sse.md (<code><mode>3): New.
15981         (*<code><mode>3): Likewise.
15982         (*<code><mode>3): Likewise.
15983         (<code><mode>3): Likewise.
15984         (*sse_<code><mode>3): Likewise.
15985         (*sse2_<code><mode>3): Likewise.
15986         (<code>tf3): Likewise.
15987         (*<code>tf3): Likewise.
15988         (and<mode>3): Likewise.
15989         (*and<mode>3): Likewise.
15990         (ior<mode>3): Removed.
15991         (*ior<mode>3): Likewise.
15992         (xor<mode>3): Likewise.
15993         (*xor<mode>3): Likewise.
15994         (*and<mode>3): Likewise.
15995         (*ior<mode>3): Likewise.
15996         (*xor<mode>3): Likewise.
15997         (and<mode>3): Likewise.
15998         (*sse_and<mode>3): Likewise.
15999         (*sse2_and<mode>3): Likewise.
16000         (andtf3): Likewise.
16001         (*andtf3): Likewise.
16002         (ior<mode>3): Likewise.
16003         (*sse_ior<mode>3): Likewise.
16004         (*sse2_ior<mode>3): Likewise.
16005         (iortf3): Likewise.
16006         (*iortf3): Likewise.
16007         (xor<mode>3): Likewise.
16008         (*sse_xor<mode>3): Likewise.
16009         (*sse2_xor<mode>3): Likewise.
16010         (xortf3): Likewise.
16011         (*xortf3): Likewise.
16012
16013 2008-04-02  Richard Guenther  <rguenther@suse.de>
16014
16015         PR tree-optimization/14495
16016         PR tree-optimization/34793
16017         * tree-vrp.c (struct switch_update): New structure.
16018         (to_remove_edges, to_update_switch_stmts): New VECs.
16019         (simplify_switch_using_ranges): New function.  Remove not taken
16020         case labels and edges.
16021         (simplify_stmt_using_ranges): Call it.
16022         (identify_jump_threads): Mark edges we have queued for removal
16023         so we don't thread them.
16024         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
16025         case label vector.
16026         * tree-cfg.c (group_case_labels): Deal with missing default label.
16027         (tree_verify_flow_info): Allow missing default label.
16028         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
16029         (emit_case_nodes): Likewise.
16030         (expand_case): Do not rely on the default label to be present.
16031         * expr.c (try_casesi): Deal with NULL default_label.
16032         (do_tablejump): Likewise.
16033
16034 2008-04-02  Richard Guenther  <rguenther@suse.de>
16035
16036         PR tree-optimization/14495
16037         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
16038         SWITCH_EXPR here ...
16039         (vrp_visit_switch_stmt): ... but here (new function).
16040         (find_case_label_index): New helper function.
16041         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
16042
16043 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
16044
16045         * fwprop.c: Fix ISO-C99ism.
16046
16047 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
16048
16049         PR bootstrap/35752
16050         * Makefile.in (objdir): Set it here.
16051         * configure.ac: Not here.  Find dynamic linker characteristics.
16052         * exec-tool.in: Use them.
16053         * aclocal.m4: Regenerate.
16054         * configure: Regenerate.
16055
16056 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
16057
16058         * expr.c (expand_var): Delete it.
16059         * expr.h (expand_var): Delete prototype.
16060         * function.c (expand_function_start): Use expand_decl instead.
16061         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
16062         langhook.
16063
16064 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
16065
16066         PR rtl-optimization/35542
16067         * fwprop.c (forward_propagate_and_simplify): Replace
16068         loc_reg_mentioned_in_p with reg_mentioned_p.
16069
16070 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
16071
16072         PR rtl-optimization/35281
16073         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
16074         (propagate_rtx_1): Handle PR_HANDLE_MEM.
16075         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
16076         (varying_mem_p): Move above propagate_rtx.
16077         (all_uses_available_at): Do not check MEMs.
16078
16079 2008-04-02  Rafael Espindola  <espindola@google.com>
16080
16081         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
16082         (register_edge_assert_for_2): Split the cond argument.
16083         (register_edge_assert_for_1): Adjust for the change in
16084         register_edge_assert_for_2.
16085         (register_edge_assert_for): Split the cond argument.
16086         (find_switch_asserts): Adjust for the change in
16087         register_edge_assert_for.
16088
16089 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
16090
16091         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
16092         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
16093         offsets for 64-bit mingw.
16094         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
16095         abi for x86_64-pc-mingw.
16096
16097 2008-04-02  Richard Guenther  <rguenther@suse.de>
16098
16099         * tree-vrp.c (extract_range_from_assert): Make sure to not
16100         produce range min/max with TREE_OVERFOW set.
16101         If merging a anti-range and a range keep the anti-range if
16102         the range covers all values of the type.
16103         (register_edge_assert_for_2): Only allow sign-changing
16104         conversions in detecting canonical range checks.  Also
16105         register an assert for the unsigned name if useful.
16106
16107         PR tree-optimization/35787
16108         * tree-vrp.c (vrp_val_max): New function.
16109         (vrp_val_min): Likewise.
16110         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
16111         (vrp_val_is_min): Likewise.
16112         (supports_overflow_infinity): Use vrp_val_{min,max}.
16113         (negative_overflow_infinity): Likewise.
16114         (positive_overflow_infinity): Likewise.
16115         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
16116         (is_positive_overflow_infinity): Likewise.
16117         (is_overflow_infinity): Likewise.
16118         (avoid_overflow_infinity): Use vrp_val_{min,max} and
16119         vrp_val_is_{min,max}.
16120         (set_and_canonicalize_value_range): Canonicalize anti-ranges
16121         to ranges if possible.  Avoid empty ranges.
16122
16123 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16124
16125         PR middle-end/35705
16126         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
16127         the expression is a function address.
16128
16129 2008-04-01  George Helffrich  <george@gcc.gnu.org>
16130
16131         PR fortran/35154, fortran/23057
16132         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
16133         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
16134         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
16135         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
16136         in common.
16137         (dbxout_syms): Check for COMMON-based symbol and wrap in
16138         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
16139         in bracket for efficiency.
16140
16141         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
16142         using DW_TAG_common_block + member offset.
16143         (add_pubname_string): New function.
16144         (dw_expand_expr): New function to find block name and offset for
16145         COMMON var.
16146         (common_check): New function to check whether symbol in Fortran COMMON.
16147         (gen_variable_die): If COMMON, use DW_TAG_common_block.
16148
16149 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
16150
16151         PR c/35436
16152         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
16153
16154 2008-04-02  Ben Elliston  <bje@au.ibm.com>
16155
16156         * config/v850/v850.md (casesi): Remove if (0) code.
16157         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
16158         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
16159
16160 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
16161
16162         * config/i386/i386.md (rex64suffix): New mode attribute.
16163         (floathi<mode>2): Disable expander for SSE math.
16164         (*floathi<mode>2_1): New insn insn_and_split pattern.
16165         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
16166         corresponding post-reload splitters.
16167         (*floathi<mode>2_i387): New macroized insn pattern.
16168         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
16169         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
16170         insn_and_split pattern.
16171         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
16172         New macroized instruction patterns and corresponding post-reload
16173         splitters.
16174         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
16175         and corresponding post-reload splitters.
16176         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
16177         New macroized instruction patterns.
16178         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
16179         macroized instruction patterns and corresponding post-reload splitters.
16180         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
16181         corresponding post-reload splitters.
16182         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
16183         New macroized instruction patterns.
16184         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
16185         corresponding post-reload splitters.
16186         (*floatsi<mode>2_i387): New macroized instruction patterns.
16187
16188 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
16189
16190         * config/i386/i386.md (smaxmin): New.
16191         (umaxmin): Likewise.
16192         (maxminiprefix): Likewise.
16193         (maxminfprefix): Likewise.
16194         (<code><mode>3): Likewise.
16195         (smin<mode>3): Removed.
16196         (smax<mode>3): Likewise.
16197
16198         * config/i386/mmx.md (mmx_<code>v2sf3): New.
16199         (mmx_<code>v4hi3): Likewise.
16200         (mmx_<code>v8qi3): Likewise.
16201         (mmx_smaxv2sf3): Removed.
16202         (mmx_sminv2sf3): Likewise.
16203         (mmx_umaxv8qi3): Likewise.
16204         (mmx_smaxv4hi3): Likewise.
16205         (mmx_uminv8qi3): Likewise.
16206         (mmx_sminv4hi3): Likewise.
16207
16208         * config/i386/sse.md (<addsub><mode>3): New.
16209         (*<addsub><mode>3): Likewise.
16210         (<sse>_vm<addsub><mode>3): Likewise.
16211         (<maxmin><mode>3): Likewise.
16212         (*<maxmin><mode>3_finite): Likewise.
16213         (*<maxmin><mode>3): Likewise.
16214         (<sse>_vm<maxmin><mode>3): Likewise.
16215         (sse3_h<addsub>v4sf3): Likewise.
16216         (sse3_h<addsub>v2df3): Likewise.
16217         (<maxmin>v16qi3): Likewise.
16218         (*<maxmin>v16qi3): Likewise.
16219         (<maxmin>v8hi3): Likewise.
16220         (*<maxmin>v8hi3): Likewise.
16221         (*sse4_1_<maxmin><mode>3): Likewise.
16222         (*sse4_1_<maxmin><mode>3): Likewise.
16223         (add<mode>3): Removed.
16224         (*add<mode>3): Likewise.
16225         (<sse>_vmadd<mode>3): Likewise.
16226         (sub<mode>3): Likewise.
16227         (*sub<mode>3): Likewise.
16228         (<sse>_vmsub<mode>3): Likewise.
16229         (smin<mode>3): Likewise.
16230         (*smin<mode>3_finite): Likewise.
16231         (*smin<mode>3): Likewise.
16232         (<sse>_vmsmin<mode>3): Likewise.
16233         (smax<mode>3): Likewise.
16234         (*smax<mode>3_finite): Likewise.
16235         (*smax<mode>3): Likewise.
16236         (<sse>_vmsmax<mode>3): Likewise.
16237         (sse3_haddv4sf3): Likewise.
16238         (sse3_haddv2df3): Likewise.
16239         (sse3_hsubv4sf3): Likewise.
16240         (sse3_hsubv2df3): Likewise.
16241         (umaxv16qi3): Likewise.
16242         (*umaxv16qi3): Likewise.
16243         (smaxv8hi3): Likewise.
16244         (*smaxv8hi3): Likewise.
16245         (*sse4_1_smax<mode>3): Likewise.
16246         (*sse4_1_umax<mode>3): Likewise.
16247         (uminv16qi3): Likewise.
16248         (*uminv16qi3): Likewise.
16249         (sminv8hi3): Likewise.
16250         (*sminv8hi3): Likewise.
16251         (*sse4_1_smin<mode>3): Likewise.
16252         (*sse4_1_umin<mode>3): Likewise.
16253
16254 2008-04-01  Rafael Espindola  <espindola@google.com>
16255
16256         * tree-cfg.c (verify_expr): remove in_phi.
16257         (verify_stmt): Don't call walk_tree with verify_expr. Use
16258         is_gimple_min_invariant instead of is_gimple_val.
16259
16260 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
16261
16262         * doc/include/gpl_v3.texi: Update for manpage generation.
16263         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
16264         gpl.texi.
16265         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
16266         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
16267         gpl_v3.texi instead of gpl.texi.
16268         (gpl.pod): New.
16269
16270 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
16271
16272         PR pch/13675
16273         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
16274
16275 2008-04-01  Rafael Espindola  <espindola@google.com>
16276
16277         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
16278         (extract_code_and_val_from_cond): Use
16279         extract_code_and_val_from_cond_with_ops.
16280
16281 2008-04-01  Jan Hubicka  <jh@suse.cz>
16282
16283         * function.c (free_after_compilation): Free epilogue_delay_list.
16284         (prepare_function_start): Assert that previous compilation was freed.
16285
16286 2008-04-01  Jan Hubicka  <jh@suse.cz>
16287             Jim Wilson  <wilson@tuliptree.org>
16288             Andreas Tobler <andreast@gcc.gnu.org>
16289
16290         PR middle-end/35781
16291         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
16292         rtl.emit instead cfun->emit.
16293         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
16294         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
16295
16296 2008-04-01  Ben Elliston  <bje@au.ibm.com>
16297
16298         * doc/c-tree.texi (Function Basics): Fix grammatical error.
16299
16300 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
16301
16302         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
16303         New options
16304         (fprofile-use): Add var flag_profile_use
16305         * coverage.c (coverage_begin_output): Do not open a gcno file for
16306         output only if -ftest-coverage is set.
16307         Do not add getpwd() to gcda file path.
16308         (build_gcov_info): Check the new flag
16309         flag_profile_datafile_relative_path.
16310         (coverage_init): Use profile_data_prefix.
16311         Read profile counter only if flag_profile_use is set.
16312         * opts.c (common_handle_option): New option fprofile-use=,
16313         fprofile-dir=, fprofile-generate=.
16314         * toplev.c (profile_data_prefix): New variable definition.
16315         * toplev.h (profile_data_prefix): New declaration.
16316         * doc/invoke.tex (Option Summary, Optimization Options):
16317         Add new options.
16318
16319 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
16320
16321         * varasm.c (output_constant_pool_1): In LABEL_REF check,
16322         use tmp consistently.
16323
16324         PR target/35695
16325         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
16326         * config/ia64/ia64.c (rtx_needs_barrier): Handle
16327         UNSPEC_FR_RECIP_APPROX_RES.
16328         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
16329
16330 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
16331
16332         PR c/35750
16333         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
16334
16335 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16336
16337         PR middle-end/30186
16338         * fold-const.c (fold_indirect_ref_1): Support accessing non first
16339         element of the vector via a pointer.
16340
16341 2008-03-31  Ian Lance Taylor  <iant@google.com>
16342
16343         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
16344
16345 2008-03-31  Jan Hubicka  <jh@suse.cz>
16346
16347         * builtins.c (expand_builtin_setjmp_receiver): Update call of
16348         get_arg_pointer_save_area.
16349         * expr.c (init_expr): Just clear out rtl.expr.
16350         * function.c (free_after_compilation): Clear out whole RTL structure.
16351         (get_func_frame_size): Merge into ...
16352         (get_frame_size): ... this one.
16353         (assign_stack_local_1): Merge into ...
16354         (assign_stack_local): ... this one.
16355         (expand_function_end): Update call of get_arg_pointer_save_area.
16356         (get_art_pointer_save_area): Remove cfun argument.
16357         * function.h (emit_status): regno_pointer_align does not need length
16358         attribute. Move x_regno_reg_rtx to ...
16359         (regno_reg_rtx): ... new global array.
16360         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
16361         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
16362         apply_args_value, forced_labels, stack_pointer_delta):
16363         Update accestors.
16364         (struct varasm_status): Move here from varasm.c
16365         (struct rtl_data): New. Move here some fields from struct function.
16366         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
16367         frame_offset, stack_check_probe_note, arg_pointer_save_area,
16368         used_temp_slots avail_temp_slots, temp_slot_level,
16369         nonlocal_goto_handler_labels): Update accesstors.
16370         (rtl): New global variable.
16371         (struct function): Move some fileds to rtl_data.
16372         (get_arg_pointer_save_area): Update prototype.
16373         * emit-rtl.c (rtl): Declare.
16374         (regno_reg_rtx): Declare.
16375         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
16376         Update.
16377         (gen_reg_rtx): Update.
16378         (init_virtual_regs): Do not tate emit_status argument.
16379         (init_emit): Do not allocate emit.
16380         * varasm.c (varasm_statuc): Move to function.h.
16381         (n_deferred_constatns): Update accestor.
16382         (init_varasm_status): Do not allocate varasm_status.
16383         (force_const_mem, get_pool_size, output_constant_pool): Update.
16384         * stmt.c (force_label_rtx): Do not use x_ prefixes.
16385         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
16386
16387 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
16388
16389         PR rtl-optimization/35729
16390         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
16391         references.
16392
16393 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
16394
16395         PR target/32000
16396         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
16397         load/store if memory is unaligned.
16398         (*movti_rex64): Likewise.
16399
16400         * config/i386/predicates.md (misaligned_operand): New.
16401
16402 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
16403
16404         PR tree-opt/35431
16405         * tree-ssa-phiopt.c (conditional_replacement): Return early for
16406         complex types.
16407
16408 2008-03-31  Jan Beulich  <jbeulich@novell.com>
16409
16410         * config/ia64/constraints.md: Add 'j' constraint.
16411         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
16412         (movdi_internal): Likewise.
16413
16414 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
16415
16416         PR c/35748
16417         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
16418
16419 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
16420
16421         PR target/35757
16422         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
16423         proper error message for the third argument on blendpd and
16424         blendps.
16425
16426         * config/i386/sse.md (blendbits): New.
16427         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
16428
16429 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
16430
16431         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
16432
16433 2008-03-30  Richard Guenther  <rguenther@suse.de>
16434
16435         PR middle-end/31023
16436         * fold-const.c (fold_sign_changed_comparison): Do leave
16437         conversions to base-types alone.
16438
16439 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16440
16441         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
16442         the link register if one altivec register is be saved.
16443
16444 2008-03-30  Ben Elliston  <bje@au.ibm.com>
16445
16446         * final.c (final_scan_insn): Remove if (0) code.
16447
16448 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
16449
16450         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
16451
16452 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
16453
16454         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
16455         of V4SFmode to ix86_binary_operator_ok.
16456
16457 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
16458
16459         * config/i386/i386.c (override_options): Initialize
16460         ix86_veclib_handler to ix86_veclibabi_svml when
16461         -mveclibabi=svml is used.
16462         (ix86_veclibabi_svml): New function for SVML ABI style
16463         vectorization support.
16464         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
16465
16466 2008-03-28  Rafael Espindola  <espindola@google.com>
16467
16468         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
16469         (tree_binary_nonnegative_warnv_p): Make it public.
16470         (tree_single_nonnegative_warnv_p): Make it public.
16471         (tree_invalid_nonnegative_warnv_p): Make it public.
16472         (tree_unary_nonzero_warnv_p): Make it public.
16473         (tree_binary_nonzero_warnv_p): Make it public
16474         (tree_single_nonzero_warnv_p): Make it public.
16475         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
16476         (extract_range_from_binary_expr): Split the expr argument.
16477         (extract_range_from_unary_expr): Split the expr argument.
16478         (extract_range_from_comparison): Split the expr argument.
16479         (extract_range_from_expr): Use the new aux functions.
16480         (vrp_evaluate_conditional_warnv): Use
16481         vrp_evaluate_conditional_warnv_with_ops.
16482         * tree.h (tree_unary_nonzero_warnv_p): Declare.
16483         (tree_binary_nonzero_warnv_p): Declare.
16484         (tree_single_nonzero_warnv_p): Declare.
16485         (tree_expr_nonzero_warnv_p): Declare.
16486         (tree_unary_nonnegative_warnv_p): Declare.
16487         (tree_binary_nonnegative_warnv_p): Declare.
16488         (tree_single_nonnegative_warnv_p): Declare.
16489         (tree_invalid_nonnegative_warnv_p): Declare.
16490
16491 2008-03-28  Richard Guenther  <rguenther@suse.de>
16492
16493         PR tree-optimization/30317
16494         PR tree-optimization/30911
16495         PR tree-optimization/34793
16496         * tree-vrp.c (set_and_canonicalize_value_range): New function.
16497         (struct assert_locus_d): New member EXPR.
16498         (register_new_assert_for): Add EXPR parameter to support
16499         ASSERT_EXPR <name, expr OP limit>.
16500         (register_edge_assert_for_1): Adjust callers.
16501         (find_assert_locations): Likewise.
16502         (process_assert_insertions_for): Build condition from expression.
16503         (extract_range_from_assert): Handle ASSERT_EXPRs
16504         of the form ASSERT_EXPR <name, expr OP limit>.
16505         (register_edge_assert_for_2): New helper registering
16506         asserts for comparisons.  Recognize range tests of the form
16507         (unsigned)i - CST1 OP CST2.
16508         (register_edge_assert_for_1): Use it.
16509         (register_edge_assert_for): Likewise.
16510         (needs_overflow_infinity): Integer sub-types
16511         do not need overflow infinities.
16512         (vrp_val_is_max): The extreme values of integer sub-types
16513         are those of the base type.
16514         (vrp_val_is_min): Likewise.
16515         * tree.def (ASSERT_EXPR): Document extra allowed conditional
16516         expressions.
16517
16518 2008-03-28  Nick Clifton  <nickc@redhat.com>
16519
16520         PR target/31110
16521         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
16522         Return GENERAL_REGS for stack adjustment reloads.
16523
16524 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16525
16526         PR target/31334
16527         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
16528         const_vector when all the vectors are constant.
16529
16530 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
16531
16532         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
16533         comparisons.
16534         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
16535         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
16536         (scc_sf): New.
16537         (s<code>_sf): Use new scc_sf attribute for opcode names.
16538
16539 2008-03-27  Tom Tromey  <tromey@redhat.com>
16540
16541         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
16542         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
16543         config/spu/t-spu-elf, config/i386/t-interix,
16544         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
16545         config/i386/x-darwin, config/i386/x-mingw32,
16546         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
16547         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
16548         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
16549         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
16550         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
16551         config/rs6000/x-darwin, config/rs6000/t-rs6000,
16552         config/score/t-score-elf, config/arm/t-strongarm-pe,
16553         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
16554         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
16555         Revert automatic dependency patch.
16556
16557 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
16558
16559         PR target/35657
16560         * config/i386/i386.c (ix86_function_arg_boundary): Align
16561         decimal floating point to its natural boundary.
16562
16563 2008-03-27  Richard Guenther  <rguenther@suse.de>
16564
16565         PR middle-end/35716
16566         * fold-const.c (fold_comparison): Restrict distinct decl
16567         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
16568         solely rely on operand_equal_p.
16569
16570 2008-03-27  Richard Guenther  <rguenther@suse.de>
16571
16572         PR c/32511
16573         * c-common.c (handle_weak_attribute): Reject combination of
16574         weak and inline.
16575
16576 2008-03-27  Richard Guenther  <rguenther@suse.de>
16577
16578         PR tree-optimization/32810
16579         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
16580         conversions from DECL_INITIAL.
16581         (fold_const_aggregate_ref): Likewise from constructor elements.
16582
16583 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
16584
16585         * tree-affine.h (aff_combination_expand): Declare.
16586         (get_inner_reference_aff): Likewise.
16587         * tree-affine.c (aff_combination_expand): Split out from
16588         tree_to_aff_combination_expand.
16589         (get_inner_reference_aff): New function.
16590         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
16591         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
16592         (struct lim_aux_data): sm_done field removed.
16593         (mem_ref_loc_p, mem_ref_locs_p): New types.
16594         (struct mem_ref): Added id, stored, accesses_in_loop,
16595         indep_loop, dep_loop, indep_ref, dep_ref fields.
16596         Removed is_stored, locs and next fields.
16597         (memory_accesses): New variable.
16598         (movement_possibility): Do not allow moving statements
16599         that store to memory.
16600         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
16601         New functions.
16602         (determine_max_movement): For statements with memory references,
16603         find the outermost loop in that the reference is independent.
16604         (move_computations_stmt): Mark the virtual operands for renaming.
16605         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
16606         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
16607         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
16608         add_vop_ref_mapping, create_vop_ref_mapping_loop,
16609         create_vop_ref_mapping, analyze_memory_references,
16610         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
16611         get_all_locs_in_loop, ref_always_accessed_p,
16612         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
16613         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
16614         store_motion_loop, store_motion): New functions.
16615         (struct vop_to_refs_elt): New type.
16616         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
16617         memref_hash, memref_eq, hoist_memory_references): Rewritten.
16618         (schedule_sm): Replaced by...
16619         (execute_sm): ... this.
16620         (determine_lsm_ref, hoist_memory_references,
16621         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
16622         find_more_ref_vops, free_mem_ref, free_mem_refs,
16623         determine_lsm_loop, determine_lsm): Removed.
16624         (tree_ssa_lim_finalize): Free data structures used by store motion.
16625         (tree_ssa_lim): Call analyze_memory_references.  Use
16626         store_motion instead of determine_lsm.
16627
16628 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
16629
16630         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
16631         rename tmake_file to m68hc11/t-m68hc11.
16632         (mcore): Set inhibit_libc to true.
16633         * config.host (alpha*-dec-*vms*): Set extra_programs.
16634         (interix3*): Don't use host_xmake_file.
16635         * configure.ac: Let config.gcc override inhibit_libc.
16636         * configure: Regenerate.
16637
16638         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
16639         * config/t-openbsd-thread: Remove commented out lines.
16640
16641         * config/x-interix: Remove.
16642
16643         * config/m68hc11/t-m68hc11-gas: Rename to...
16644         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
16645
16646         * config/mcore/t-mcore: Remove T_CFLAGS.
16647         * config/mcore/t-mcore-pe: Likewise.
16648
16649 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
16650
16651         * configure.ac: Replace custom __GNU_SOURCE test with
16652         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
16653         * aclocal.m4: Regenerate.
16654         * configure: Regenerate.
16655         * config.in: Regenerate.
16656
16657 2008-03-27  Richard Guenther  <rguenther@suse.de>
16658
16659         * fold-const.c (target.h): Include.
16660         (fold_comparison): Fold comparison of addresses of decls
16661         that bind locally or of constants.  Consolidate address folding code.
16662         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
16663         results from fold_binary_to_constant.
16664         (compare_values_warnv): Likewise.
16665
16666 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
16667
16668         PR middle-end/35429
16669         * fold-const.c (fold_truthop): Check for integeral types when folding
16670         a == 0 && b == 0 and a != 0 || b != 0 .
16671
16672 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
16673
16674         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
16675
16676 2008-03-26  Andreas Schwab  <schwab@suse.de>
16677
16678         * doc/invoke.texi: Fix use of @item vs. @itemx.
16679
16680 2008-03-26  Tom Tromey  <tromey@redhat.com>
16681
16682         * Makefile.in (build/gensupport.o, build/print-rtl.o,
16683         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
16684         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
16685         build/gencodes.o, build/genconditions.o, build/genconfig.o,
16686         build/genconstants.o, build/genemit.o, build/genextract.o,
16687         build/genflags.o, build/genmddeps.o, build/genopinit.o,
16688         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
16689         options.h.
16690
16691 2008-03-26  Richard Guenther  <rguenther@suse.de>
16692
16693         Revert
16694         2008-03-26  Richard Guenther  <rguenther@suse.de>
16695
16696         * fold-const.c (target.h): Include.
16697         (fold_comparison): Fold comparison of addresses of two decls
16698         that bind locally.  Consolidate address folding code.
16699
16700 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16701
16702         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
16703         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
16704         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
16705         dconstsqrt2, dconstthird, dconste and/or dconst10.
16706         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
16707         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
16708         dconstsqrt2, dconste): Delete.
16709         (init_emit_once): Likewise.  Simplify initializing dconstm1.
16710         Constify variable.
16711         * real.c (get_real_const): New.
16712         * real.h (dconst3, dconst10, dconstm2, dconstthird,
16713         dconstsqrt2, dconste): Delete.
16714         (real_value_const, get_real_const): New.
16715
16716 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
16717
16718         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
16719
16720         * config/i386/i386.c (ix86_function_arg_boundary): Check
16721         BIGGEST_ALIGNMENT instead of 128.
16722         (setup_incoming_varargs_64): Likewise.
16723
16724 2008-03-26  Tom Tromey  <tromey@redhat.com>
16725
16726         * Makefile.in (DEPFILES): Add missing '/'.
16727
16728 2008-03-26  Richard Guenther  <rguenther@suse.de>
16729
16730         * fold-const.c (target.h): Include.
16731         (fold_comparison): Fold comparison of addresses of two decls
16732         that bind locally.  Consolidate address folding code.
16733
16734 2008-03-26  Nick Clifton  <nickc@redhat.com>
16735
16736         PR target/31232
16737         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
16738         not allow INT+INT as a legitimate addressing mode.
16739
16740 2008-03-26  Richard Guenther  <rguenther@suse.de>
16741
16742         * tree-flow.h (widen_bitfield): Remove declaration.
16743         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
16744         (widen_bitfield): Remove function.
16745         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
16746         code.
16747
16748 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16749
16750         PR target/31558
16751         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
16752         error_mark_node's.
16753
16754 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
16755
16756         PR rtl-optimization/35232
16757         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
16758         (forget_old_reloads_1, forget_marked_reloads): Don't clear
16759         reg_reloaded_call_part_clobbered here.
16760         (reload_regs_reach_end_p): New function.
16761         (reload_reg_rtx_for_input): New variable.
16762         (reload_reg_rtx_for_output): Likewise.
16763         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
16764         when reassigning a pseudo register.  Load reloadreg from
16765         reload_reg_rtx_for_input, moving the mode and register
16766         calculation to...
16767         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
16768         instead of the original when deciding whether an input reload
16769         would be a no-op or whether an output reload can be deleted.
16770         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
16771         when setting up new_spill_reg_store.  Load it from
16772         reload_reg_rtx_for_output, moving the mode and register
16773         calculation to...
16774         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
16775         instead of the original when deciding whether an output reload
16776         would be a no-op.  Do the same when modifying insn notes.
16777         Use rtx_equal_p instead of == to compare the registers.
16778         (inherit_piecemeal_p): Take a mode and two register numbers
16779         as argument.
16780         (emit_reload_insns): Clear new_spill_reg_store for every hard
16781         register in the reload register.  Remove spill registers
16782         from reg_reloaded_valid before considering whether to record
16783         inheritance information for them.  Use reload_reg_rtx_for_output
16784         instead of reg_rtx when recording output reloads.  Use
16785         reload_reg_rtx_for_input instead of reg_rtx when recording
16786         input reloads.  Set or clear reg_reloaded_call_part_clobbered
16787         at the same time as setting reg_reloaded_valid.
16788         (delete_output_reload): Add a new_reload_reg parameter and use it
16789         instead of rld[j].reg_rtx.
16790         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
16791         calls accordingly.
16792
16793 2008-03-25  Tom Tromey  <tromey@redhat.com>
16794
16795         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
16796         (build/genattr.o): Likewise.
16797         (build/genattrtab.o): Likewise.
16798         (build/gencodes.o): Likewise.
16799         (build/genconfig.o): Likewise.
16800         (build/genconstants.o): Likewise.
16801         (build/genemit.o): Likewise.
16802         (build/genextract.o): Likewise.
16803         (build/genflags.o): Likewise.
16804
16805 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
16806
16807         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
16808         instead of size_int for integer types.
16809         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
16810         to match type of MINUS_EXPR.
16811
16812 2008-03-25  Tom Tromey  <tromey@redhat.com>
16813
16814         * configure: Rebuilt.
16815         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
16816         Makefile.
16817
16818 2008-03-25  Tom Tromey  <tromey@redhat.com>
16819
16820         * config/x-solaris (host-solaris.o): Update.
16821         * config/x-linux (host-linux.o): Update.
16822         * config/x-hpux (host-hpux.o): Update.
16823         * config/x-darwin (host-darwin.o): Update.
16824         * config/v850/t-v850e (v850-c.o): Update.
16825         * config/v850/t-v850 (v850-c.o): Update.
16826         * config/t-vxworks (vxworks.o): Update.
16827         * config/t-sol2 (sol2-c.o, sol2.o): Update.
16828         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
16829         * config/spu/t-spu-elf (spu-c.o): Update.
16830         (spu.o): Remove.
16831         * config/sh/t-symbian (sh-c.o): Update.
16832         (symbian.o): Update.
16833         * config/sh/t-sh (sh-c.o): Update.
16834         * config/score/t-score-elf (score7.o, score3.o): Update.
16835         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
16836         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
16837         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
16838         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
16839         (rs6000.o): Remove.
16840         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
16841         * config/m32c/t-m32c (m32c-pragma.o): Update.
16842         * config/ia64/t-ia64 (ia64-c.o): Update.
16843         * config/i386/x-mingw32 (host-mingw32.o): Update.
16844         * config/i386/x-i386 (driver-i386.o): Update.
16845         * config/i386/x-darwin (host-i386-darwin.o): Update.
16846         * config/i386/x-cygwin (host-cygwin.o): Update.
16847         * config/i386/t-nwld (nwld.o): Update.
16848         * config/i386/t-netware (netware.o): Update.
16849         * config/i386/t-interix (winnt.o): Update.
16850         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
16851         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
16852         msformat-c.o): Update.
16853         * config/bfin/t-bfin-linux (generated_files): Add
16854         linux-sysroot-suffix.h.
16855         * config/arm/t-wince-pe (pe.o): Update.
16856         * config/arm/t-strongarm-pe (pe.o): Update.
16857         * config/arm/t-pe (pe.o): Update.
16858         * config/arm/t-arm (arm-c.o): Update.
16859         * doc/install.texi (Prerequisites): Require make 3.80.
16860         * Makefile.in: Remove .o targets.
16861         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
16862         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
16863         (simple_generated_h, simple_generated_c): Move earlier.
16864         (generated_files): New variable.
16865         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
16866         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
16867         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
16868         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
16869         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
16870         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
16871         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
16872         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
16873         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
16874         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
16875         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
16876         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
16877         (.c.o): Remove.
16878         (COMPILE.base, COMPILE): New variables.
16879         (%.o): New pattern rule.
16880         (ALL_HOST_OBJS): New variable.
16881         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
16882         (dummy-checksum.o, cc1-checksum.o): Remove.
16883         (DRIVER_SHLIB): New variable.
16884         (DRIVER_DEFINES): Use it.
16885         (gencondmd.c): Move out of build/.
16886         (s-conditions): Update.
16887         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
16888         (ALL_BUILD_OBJS): Likewise.
16889         (build/%.o): Use BUILDCOMPILE.
16890         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
16891         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
16892         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
16893         build/gencheck.o, build/gencodes.o, build/genconditions.o,
16894         build/genconfig.o, build/genconstants.o, build/genemit.o,
16895         build/genextract.o, build/genflags.o, build/genmddeps.o,
16896         build/genopinit.o, build/genoutput.o, build/genpeep.o,
16897         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
16898         build/gen-protos.o, build/scan.o, build/fix-header.o,
16899         build/scan-decls.o): Simplify.
16900         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
16901         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
16902         prefix.o, toplev.o): Reduce to variable setting.
16903         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
16904         ($(out_object_file), gcc-options.o): New targets.
16905         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
16906         * configure: Rebuilt.
16907         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
16908         * doc/sourcebuild.texi (Front End Directory): Document new variable.
16909
16910 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
16911
16912         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
16913         complain when we hit an error, return ERROR_MARK_NODE.
16914
16915 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
16916
16917         * config/sh/constraints.md (Pso, Psz): New constraints.
16918         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
16919         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
16920
16921 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
16922
16923         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
16924         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
16925
16926 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
16927
16928         * config/sh/sh.md (prefetch): Add condition for SH2A target.
16929         (prefetch_sh2a): New.
16930
16931 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
16932             Naveen.H.S  <naveen.hs@kpitcummins.com>
16933
16934         * config/sh/constraints.md (I28): New constraint.
16935         * config/sh/sh.c (broken_move): Add support for movi20s.
16936         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
16937
16938 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
16939             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
16940             Naveen.H.S  <naveen.hs@kpitcummins.com>
16941
16942         * config/sh/sh.c (SH_ATTRIBUTES): Define.
16943         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
16944         (print_operand): Handle resbank in %@ operand code.
16945         (sh_encode_section_info): New.
16946         (push_regs): Add conditions for resbank.
16947         (sh_expand_epilogue): Likewise.
16948         (sh_insert_attributes): Likewise.
16949         (sh_attribute_table): Likewise.
16950         (sh_handle_resbank_handler_attribute): New.
16951         (sh2a_handle_function_vector_handler_attribute): New.
16952         (sh2a_is_function_vector_call): New.
16953         (sh2a_get_function_vector_number): New.
16954         (sh2a_function_vector_p): New.
16955         (sh_cfun_resbank_handler_p): New.
16956         * config/sh/sh.md (calli): Emit jsr/n if possible.
16957         (calli_tbr_rel): New.
16958         (calli_pcrel): Emit jsr/n if possible.
16959         (return_i): Emit rts/n if possible.
16960         (call_valuei_tbr_rel): New.
16961         (call_valuei_pcrel): Add condition for SH2A target.
16962         (call_value): Likewise.
16963         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
16964         (sh2a_get_function_vector_number): Likewise.
16965         (sh2a_is_function_vector_call): Likewise.
16966         * doc/extend.texi: Document TBR relative addressing of SH2A.
16967         (resbank): Add description for SH2A.
16968
16969 2008-03-24  Richard Guenther  <rguenther@suse.de>
16970
16971         PR c/22371
16972         * gimplify.c (gimplify_modify_expr): For frontend type-correct
16973         pointer assignments change conversions according to middle-end rules.
16974         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
16975         * configure.ac: Include type checking in yes.
16976         * configure: Regenerate.
16977
16978 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16979
16980         * diagnostic.c (diagnostic_count_diagnostic): Delete.
16981         (diagnostic_report_diagnostic): Update. Handle ICEs here.
16982
16983 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
16984
16985         * gthr-vxworks.h (UNUSED): Define.
16986
16987 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
16988
16989         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
16990
16991 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
16992
16993         * doc/extend.texi (Function Attributes): Add missing comma in the
16994         example of the "alloc_size" attribute.
16995
16996 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
16997
16998         Revert:
16999         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
17000
17001         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
17002         32bit host.
17003
17004         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
17005
17006         PR target/35496
17007         * stor-layout.c (update_alignment_for_field): Set minimum alignment
17008         of the underlying type of a MS bitfield layout to the natural
17009         alignment of the type.
17010
17011         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
17012
17013         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
17014         to their natural alignment to avoid store forwarding stalls.
17015
17016 2008-03-22  Richard Guenther  <rguenther@suse.de>
17017
17018         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
17019         For PHI nodes verify the address is invariant.
17020         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
17021         (get_symbol_constant_value): Use is_gimple_min_invariant.
17022         (maybe_fold_stmt_indirect): Likewise.
17023
17024 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
17025
17026         PR rtl-optimization/33927
17027         * Makefile.in (dse.o): Depend on $(TM_P_H).
17028         * expr.h (extract_low_bits): Declare.
17029         * expmed.c (extract_low_bits): New function.
17030         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
17031         * dse.c: Include tm_p.h.
17032         (find_shift_sequence): Remove the read_reg argument and return the
17033         read value.  Emit the instructions instead of returning them.
17034         Iterate on new_mode rather than calculating it each time.
17035         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
17036         source to NEW_MODE and extract_low_bits to convert the shifted
17037         value to READ_MODE.
17038         (replace_read): Allow the load and store to have different mode
17039         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
17040         or extraction instructions before trying the replacement.  Update
17041         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
17042
17043 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
17044
17045         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
17046         to their natural alignment to avoid store forwarding stalls.
17047
17048 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17049
17050         PR target/27946
17051         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
17052         encouraging but not allowing gprs for input;
17053         change the input constraint to !f#r.
17054         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
17055         gprs for output;
17056         change the output constraint to !f#r.
17057
17058 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
17059
17060         PR target/13958
17061         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
17062         corresponding post-reload splitters.
17063         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
17064         when x87 FP math is selected.
17065         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
17066         New function prototype.
17067         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
17068         unreachable function to ease macroization of insn patterns.
17069
17070 2008-03-21  Martin Jambor  <mjambor@suse.cz>
17071
17072         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
17073         reference dumps if ddr is NULL or dependence is unknown.
17074
17075 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
17076
17077         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
17078         unsigned extension into account.
17079         (ATOMIC_COMPARE_AND_SWAP): Likewise.
17080         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
17081         Do computations on a scratch register.
17082
17083 2008-03-21  Richard Guenther  <rguenther@suse.de>
17084
17085         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
17086         Use is_gimple_min_invariant instead of TREE_INVARIANT.
17087         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
17088         * tree-ssa-dom.c (record_equality): Likewise.
17089         * tree-inline.c (copy_body_r): Likewise.
17090         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
17091         TREE_INVARIANT.
17092
17093 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
17094
17095         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
17096         as 'delete_unused' argument.
17097
17098 2008-03-20  Richard Guenther  <rguenther@suse.de>
17099
17100         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
17101         special casing of constant qualifiers.
17102         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
17103         care about them in general.
17104         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
17105         regardless of their type.
17106         (fold_stmt_r): Forcefully fold *& if we end up with that.
17107
17108 2008-03-20  Paul Brook  <paul@codesourcery.com>
17109
17110         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
17111         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
17112         linker flags.
17113         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
17114         definition.
17115         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
17116         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
17117
17118 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
17119
17120         * common.opt (Wmudflap): New option.
17121         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
17122         (mx_register_decls): Likewise.
17123         (mudflap_finish_file): Likewise.
17124         * doc/invoke.texi: Document -Wno-mudflap.
17125
17126 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
17127
17128         * c-format.c (replace_format_name_to_system_name): New.
17129         (cmp_attribs): New.
17130         (convert_format_name_to_system_name): New.
17131         (decode_format_attr): Add use of convert_format_name_to_system_name.
17132         (format_types_orig): Add gnu_ prefix to names.
17133         (check_format_info_main): Special treating of \0 escaped names for
17134         supporting multi-character format specifiers as I32, I64.
17135         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
17136         (gnu_target_overrides_format_attributes): New.
17137         * c-format.h: Add structure target_ovr_attr to hold
17138         system specific formatter names.
17139         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
17140         msformat-c.o file to c_target_objs and cxx_target_objs.
17141         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
17142         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
17143         (TARGET_N_FORMAT_TYPES): New.
17144         * config/i386/msformat-c.c: New.
17145         * config/i386/t-cygming: Add build rule for msformat-c.o.
17146         * doc/extend.texi: Add new format names gnu_* and ms_* and
17147         further details.
17148         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
17149
17150 2008-03-20  Ira Rosen  <irar@il.ibm.com>
17151
17152         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
17153         optimizations turned on under -O3.
17154         (ftree-vectorize): Add that the flag is turned on with -O3.
17155
17156 2008-03-20  Ben Elliston  <bje@au.ibm.com>
17157
17158         * regmove.c (try_auto_increment): Fix spelling error in comment.
17159         * final.c (final_scan_insn): Likewise.
17160
17161 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
17162
17163         PR target/14552
17164         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
17165         allocator preferences for "y" and "r" class registers.
17166         ("*mov<mode>_internal"): Ditto.
17167         ("*movv2sf_internal_rex64"): Ditto.
17168         ("*movv2sf_internal"): Ditto.
17169
17170 2008-03-19  Michael Matz  <matz@suse.de>
17171
17172         PR middle-end/35616
17173         * calls.c (expand_call): Check overlap of arguments with call
17174         address for sibcalls.
17175
17176 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
17177
17178         PR target/35496
17179         * stor-layout.c (update_alignment_for_field): Set minimum alignment
17180         of the underlying type of a MS bitfield layout to the natural
17181         alignment of the type.
17182
17183 2008-03-19  Jan Hubicka  <jh@suse.cz>
17184
17185         PR other/35094
17186         * toplev.c (decode_d_option): Handle all CPP flags.
17187         * tree-vrp.c: Update tree_pass descriptors.
17188         * regrename.c: Update tree_pass descriptors.
17189         * fwprop.c: Update tree_pass descriptors.
17190         * doc/invoke.texi: Remove documentation of dropped -d? flags.
17191         * tree-into-ssa.c: Update tree_pass descriptors.
17192         * tree-dump.c: Update tree_pass descriptors.
17193         * tree-complex.c: Update tree_pass descriptors.
17194         * tree-dump.h: Update tree_pass descriptors.
17195         * see.c: Update tree_pass descriptors.
17196         * cgraphbuild.c: Update tree_pass descriptors.
17197         * tracer.c: Update tree_pass descriptors.
17198         * tree-loop-distribution.c: Update tree_pass descriptors.
17199         * cgraph.c: Update tree_pass descriptors.
17200         * postreload-gcse.c: Update tree_pass descriptors.
17201         * postreload.c: Update tree_pass descriptors.
17202         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
17203         * tree-tailcall.c: Update tree_pass descriptors.
17204         * tree-pass.h (tree_opt_pass): Rename to ...
17205         (opt_pass) ... this one; add "type" field and remove letter field.
17206         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
17207         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
17208         all_lowering_passes): Update declaration.
17209         * ipa-cp.c: Update tree_pass descriptors.
17210         * final.c: Update tree_pass descriptors.
17211         * omp-low.c: Update tree_pass descriptors.
17212         * tree-ssa-dse.c: Update tree_pass descriptors.
17213         * ipa-reference.c: Update tree_pass descriptors.
17214         * tree-ssa-uncprop.c: Update tree_pass descriptors.
17215         * auto-inc-dec.c: Update tree_pass descriptors.
17216         * reorg.c: Update tree_pass descriptors.
17217         * cgraphunit.c: Update tree_pass descriptors.
17218         * tree-ssa-copyrename.c: Update tree_pass descriptors.
17219         * tree-ssa-ccp.c: Update tree_pass descriptors.
17220         * df-core.c: Update tree_pass descriptors.
17221         * mode-switching.c: Update tree_pass descriptors.
17222         * tree-nomudflap.c: Update tree_pass descriptors.
17223         * modulo-sched.c: Update tree_pass descriptors.
17224         * ipa-pure-const.c: Update tree_pass descriptors.
17225         * cse.c: Update tree_pass descriptors.
17226         * web.c: Update tree_pass descriptors.
17227         * tree-stdarg.c: Update tree_pass descriptors.
17228         * tree-ssa-math-opts.c: Update tree_pass descriptors.
17229         * tree-ssa-dom.c: Update tree_pass descriptors.
17230         * tree-nrv.c: Update tree_pass descriptors.
17231         * tree-ssa-alias.c: Update tree_pass descriptors.
17232         * loop-init.c: Update tree_pass descriptors.
17233         * gimple-low.c: Update tree_pass descriptors.
17234         * ipa-inline.c: Update tree_pass descriptors.
17235         * tree-ssa-sink.c: Update tree_pass descriptors.
17236         * global.c: Update tree_pass descriptors.
17237         * ifcvt.c: Update tree_pass descriptors.
17238         * jump.c: Update tree_pass descriptors.
17239         * predict.c: Update tree_pass descriptors.
17240         * tree-ssa-loop.c: Update tree_pass descriptors.
17241         * recog.c: Update tree_pass descriptors.
17242         * dse.c: Update tree_pass descriptors.
17243         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
17244         * tree-eh.c: Update tree_pass descriptors.
17245         * regmove.c: Update tree_pass descriptors.
17246         * local-alloc.c
17247         * function.c: Update tree_pass descriptors.
17248         * tree-vectorizer.c: Update tree_pass descriptors.
17249         * gcse.c: Update tree_pass descriptors.
17250         * ipa-type-escape.c: Update tree_pass descriptors.
17251         * tree-if-conv.c: Update tree_pass descriptors.
17252         * init-regs.c: Update tree_pass descriptors.
17253         * ipa.c: Update tree_pass descriptors.
17254         * tree-ssa-phiopt.c: Update tree_pass descriptors.
17255         * rtl-factoring.c: Update tree_pass descriptors.
17256         * lower-subreg.c: Update tree_pass descriptors.
17257         * bt-load.c: Update tree_pass descriptors.
17258         * tree-dfa.c: Update tree_pass descriptors.
17259         * except.c: Update tree_pass descriptors.
17260         * emit-rtl.c: Update tree_pass descriptors.
17261         * cfgexpand.c: Update tree_pass descriptors.
17262         * tree-cfgcleanup.c: Update tree_pass descriptors.
17263         * cfgcleanup.c: Update tree_pass descriptors.
17264         * tree-ssa-pre.c: Update tree_pass descriptors.
17265         * tree-sra.c: Update tree_pass descriptors.
17266         * tree-mudflap.c: Update tree_pass descriptors.
17267         * tree-ssa-copy.c: Update tree_pass descriptors.
17268         * cfglayout.c: Update tree_pass descriptors.
17269         * tree-ssa-forwprop.c: Update tree_pass descriptors.
17270         * tree-ssa-dce.c: Update tree_pass descriptors.
17271         * tree-ssa.c: Update tree_pass descriptors.
17272         * regclass.c: Update tree_pass descriptors.
17273         * integrate.c: Update tree_pass descriptors.
17274         * tree-optimize.c: Update tree_pass descriptors.
17275         * tree-ssa-phiprop.c: Update tree_pass descriptors.
17276         * tree-object-size.c: Update tree_pass descriptors.
17277         * combine.c: Update tree_pass descriptors.
17278         * tree-outof-ssa.c: Update tree_pass descriptors.
17279         * bb-reorder.c: Update tree_pass descriptors.
17280         * stack-ptr-mod.c: Update tree_pass descriptors.
17281         * var-tracking.c: Update tree_pass descriptors.
17282         * tree-profile.c: Update tree_pass descriptors.
17283         * tree-vect-generic.c: Update tree_pass descriptors.
17284         * reg-stack.c: Update tree_pass descriptors.
17285         * sched-rgn.c: Update tree_pass descriptors.
17286         * tree-ssa-structalias.c: Update tree_pass descriptors.
17287         * tree-cfg.c: Update tree_pass descriptors.
17288         * passes.c (current_pass): Update declaration.
17289         (finish_optimization_passes): Update.
17290         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
17291         (register_one_dump_file, register_dump_files_1, next_pass_1):
17292         Update arguments.
17293         (init_optimization_passes): Update handling of new types.
17294         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
17295         * ipa-struct-reorg.c: Update tree_pass descriptors.
17296         * tree-ssa-reassoc.c: Update tree_pass descriptors.
17297         * combine-stack-adj.c: Update tree_pass descriptors.
17298         * cfgrtl.c: Update tree_pass descriptors.
17299         * dce.c: Update tree_pass descriptors.
17300         * tree-ssanames.c: Update tree_pass descriptors.
17301
17302 2008-03-19  Richard Guenther  <rguenther@suse.de>
17303
17304         PR middle-end/35609
17305         * tree-ssa.c (walk_data): New structure.
17306         (warn_uninitialized_var): If not always_executed warn with "maybe"
17307         instead of "is".
17308         (execute_early_warn_uninitialized): Compute post-dominators.
17309         Initialize always_executed before processing each basic block.
17310
17311 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
17312
17313         PR target/35504
17314         * config/i386/i386.c (x86_this_parameter): Calculate correct location
17315         of "this" pointer when "regparm = N" or "fastcall" is in effect.
17316
17317 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17318
17319         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
17320
17321 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
17322
17323         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
17324         is true.
17325         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
17326         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
17327         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
17328         target after ignore has been set, and move there also the commputation
17329         of subtarget and original_target.
17330         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
17331         (LANG_HOOKS_INITIALIZER): Remove it.
17332         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
17333
17334 2008-03-18  Richard Guenther  <rguenther@suse.de>
17335
17336         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
17337         found an expression with constants, note that in the VN for the lhs.
17338         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
17339         fold them to constants if possible.  Run cleanup_cfg if done so.
17340         (execute_pre): Return todo.
17341         (do_pre): Likewise.
17342         (execute_fre): Likewise.
17343         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
17344         of constants.
17345         (get_prop_source_stmt): Look through pointer conversions.
17346
17347 2008-03-18  Jan Hubicka  <jh@suse.cz>
17348
17349         * tree-pretty-print.c: Include predict.h.
17350         (dump_generic_node): Dump predictor.
17351         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
17352         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
17353         * gimple-low.c (lower_stmt): Likewise.
17354         * expr.c (expand_expr_real): Likewise.
17355         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
17356         them.
17357         (build_predict_expr, build_predict_expr): New.
17358         * predict.h (predictor_name, build_predict_expr): Update.
17359         * c-typeck.c (c_finish_bc_stmt): Add prediction.
17360         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
17361         * predict.def (PRED_CONTINUE): Update hitrate.
17362         * tree.def (PREDICT_EXPR): Define.
17363         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
17364         do not handle BIND_EXPR.
17365         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
17366         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
17367         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
17368         operands.
17369
17370 2008-03-18  Michael Matz  <matz@suse.de>
17371
17372         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
17373
17374 2008-03-18  Richard Guenther  <rguenther@suse.de>
17375
17376         * tree-gimple.h (is_gimple_invariant_address): Declare.
17377         (is_gimple_constant): Likewise.
17378         * tree-gimple.c (is_gimple_constant): New function.
17379         (is_gimple_invariant_address): Likewise.
17380         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
17381         and is_gimple_invariant_address.
17382         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
17383         previous change.
17384         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
17385         an addressable base.
17386
17387 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
17388
17389         PR middle-end/35611
17390         * gimplify.c (gimplify_expr): Gimplify second operand of
17391         OMP_ATOMIC_LOAD.
17392
17393 2008-03-17  Richard Guenther  <rguenther@suse.de>
17394
17395         PR tree-optimization/19637
17396         * fold-const.c (fold_unary): Remove restrictions of removing
17397         intermediate pointer-conversions (P2)(P1)P0.
17398         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
17399         conversion to void pointer.
17400         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
17401
17402 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
17403
17404         PR debug/31510
17405         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
17406         emulated thread local variables.
17407
17408 2008-03-16  Richard Guenther  <rguenther@suse.de>
17409
17410         PR middle-end/35607
17411         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
17412         expand TREE_INVARIANT operations that are not gimple invariant.
17413
17414 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
17415
17416         * doc/extend.texi (Alignment): Say that the ABI controls
17417         the __alignof__ for non-strict-alignment targets rather
17418         than being a recommendation.
17419
17420 2008-03-15  Paul Brook  <paul@codesourcery.com>
17421
17422         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
17423         annotations.
17424         (arm_output_fn_unwind): Mark functions that can not be unwound.
17425
17426 2008-03-15  Paul Brook  <paul@codesourcery.com>
17427
17428         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
17429         extension instructions.
17430
17431 2008-03-15  Richard Guenther  <rguenther@suse.de>
17432
17433         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
17434         and fold constant aggregate refs.
17435         (fold_const_aggregate_ref): Handle string constants
17436         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
17437         (evaluate_stmt): Simplify now that ccp_fold folds constant
17438         aggregate refs.
17439
17440 2008-03-15  Paul Brook  <paul@codesourcery.com>
17441
17442         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
17443         (extzv): Use gen_extzv_t2.
17444         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
17445
17446 2008-03-15  Richard Guenther  <rguenther@suse.de>
17447
17448         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
17449         (fold_const_aggregate_ref): Likewise.
17450         (get_value): Return NULL if we don't have any values.
17451         (ccp_finalize): Set const_val to NULL after freeing it.
17452         * tree-flow.h (get_symbol_constant_value): Declare.
17453         (fold_const_aggregate_ref): Likewise.
17454         * tree-ssa-sccvn.c (try_to_simplify): Use them.
17455
17456 2008-03-15  Richard Guenther  <rguenther@suse.de>
17457
17458         PR middle-end/35593
17459         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
17460         to not produce negative array indices if not allowed.  Add
17461         parameter to indicate that.
17462         (maybe_fold_offset_to_component_ref): Allow negative array
17463         indices only for the first member of a structure.
17464         (maybe_fold_offset_to_reference): Allow negative array indices.
17465         (maybe_fold_stmt_addition): Likewise.
17466
17467 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
17468             Anatoly Sokolov <aesok@post.ru>
17469
17470         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
17471         (avr_arch): Add ARCH_AVR6.
17472         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
17473         (initial_elimination_offset): Initialize and use 'avr_pc_size'
17474         instead of fixed value 2.
17475         (print_operand_address): Use gs() asm specifier instead of pm().
17476         (avr_assemble_integer): (Ditto.).
17477         (avr_output_addr_vec_elt): (Ditto.).
17478         (print_operand): Handle "!" code.
17479         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
17480         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
17481         (AVR_HAVE_EIJMP_EICALL): Define.
17482         (AVR_3_BYTE_PC): Redefine.
17483         (AVR_2_BYTE_PC): (Ditto.).
17484         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
17485         (LINK_SPEC): Add atmega2560 and atmega2561.
17486         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
17487         (crtm2561.o).
17488         * config/avr/avr.md (call_insn): Use eicall instead of icall
17489         for 3 byte PC devices.
17490         (call_value_insn): (Ditto.).
17491         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
17492         (indirect_jump): Use only for for 2 byte PC devices.
17493         (*tablejump): (Ditto.).
17494         (*indirect_jump_avr6): Add insn.
17495         (*tablejump_rjmp): Don't use for 3 byte PC devices.
17496         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
17497         instead of ijmp for 3 byte PC devices.
17498         (__tablejump2__): (Ditto.).
17499         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
17500         (MULITLIB_DIRNAMES): (Ditto.).
17501         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
17502
17503 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
17504
17505         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
17506         "sse2_umulsidi3".  Use V1DI mode for operand 0.
17507         ("mmx_psadbw"): Use V1DI mode for operand 0.
17508         * config/i386/i386-modes.def (V1SI): New vector mode.
17509         * config/i386/i386.c (struct builtin_description)
17510         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
17511         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
17512         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
17513         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
17514         v1di_ftype_v8qi_v8qi type.
17515         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
17516
17517         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
17518         __builtin_ia32_pmuludq]: Fix the mode of return value.
17519
17520 2008-03-15  Richard Guenther  <rguenther@suse.de>
17521
17522         PR middle-end/35595
17523         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
17524         being a PHI_NODE.
17525
17526 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
17527
17528         * doc/invoke.texi (Option Summary, Xtensa Options): Document
17529         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
17530         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
17531         unless TARGET_SERIALIZE_VOLATILE is enabled.
17532         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
17533         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
17534         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
17535
17536 2008-03-14  Richard Guenther  <rguenther@suse.de>
17537
17538         PR tree-optimization/34172
17539         * tree-flow.h (refs_may_alias_p): Declare.
17540         (get_single_def_stmt): Likewise.
17541         (get_single_def_stmt_from_phi): Likewise.
17542         (get_single_def_stmt_with_phi): Likewise.
17543         * tree-dfa.c (refs_may_alias_p): New function.
17544         (get_single_def_stmt): Likewise.
17545         (get_single_def_stmt_from_phi): Likewise.
17546         (get_single_def_stmt_with_phi): Likewise.
17547         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
17548         (vn_reference_lookup_1): New helper function.
17549         (vn_reference_lookup): Walk the virtual use-def chain to
17550         continue searching for a match if the def does not alias the
17551         reference we are looking for.
17552
17553 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
17554
17555         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
17556         archive and Perzl.  Update The Written Word listing.
17557
17558 2008-03-14  Richard Guenther  <rguenther@suse.de>
17559
17560         PR tree-optimization/34043
17561         PR tree-optimization/33989
17562         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
17563         when doing FRE.
17564         (bitmap_find_leader): Use extra argument to verify dominance
17565         relationship inside a basic-block.
17566         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
17567         (find_leader_in_sets): Adjust.
17568         (create_component_ref_by_pieces): Take extra argument for
17569         dominance check, handle lookup failures.
17570         (find_or_generate_expression): Likewise.
17571         (create_expression_by_pieces): Likewise.
17572         (insert_into_preds_of_block): Adjust.
17573         (create_value_expr_from): If asked for, verify all operands
17574         are in the blocks AVAIL_OUT set.
17575         (make_values_for_stmt): Check for SSA_NAMEs that are life
17576         over an abnormal edge.
17577         (compute_avail): Remove such check.
17578         (do_SCCVN_insertion): New function.
17579         (eliminate): If we do not find a leader suitable for replacement
17580         insert a replacement expression from SCCVN if available.
17581         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
17582         (struct vn_ssa_aux): Add needs_insertion flag.
17583         * tree-ssa-sccvn.c (may_insert): New global flag.
17584         (copy_reference_ops_from_ref): Value-number union member access
17585         based on its size, not type and member if insertion is allowed.
17586         (visit_reference_op_load): For a weak match from union type
17587         punning lookup a view-converted value and insert a SSA_NAME
17588         for that value if that is not found.
17589         (visit_use): Make dumps shorter.  Do not disallow value numbering
17590         SSA_NAMEs that are life over an abnormal edge to constants.
17591         (free_scc_vn): Release inserted SSA_NAMEs.
17592         (run_scc_vn): New flag to specify whether insertion is allowed.
17593         Process SSA_NAMEs in forward order.
17594         * tree-ssa-loop-im.c (for_each_index): Handle invariant
17595         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
17596         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
17597         pointer type to/from integral types that do not change the
17598         precision to regular conversions.
17599
17600 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
17601
17602         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
17603         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
17604         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
17605         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
17606         input arguments and the mode of return value.  Built-in functions
17607         that operate on whole 64-bit MMX register now use V1DI mode.
17608
17609 2008-03-13  Alon Dayan  <alond@il.ibm.com>
17610             Olga Golovanevsky  <olga@il.ibm.com>
17611
17612         PR tree-optimization/35041
17613         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
17614         to locate the right position in a statement.
17615
17616 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
17617
17618         PR target/34000
17619         PR target/35553
17620         * config/i386/xmmintrin.h:  Change all static inline functions to
17621         extern inline and add __gnu_inline__ attribute.
17622         * config/i386/bmintrin.h: Ditto.
17623         * config/i386/smmintrin.h: Ditto.
17624         * config/i386/tmmintrin.h: Ditto.
17625         * config/i386/mmintrin-common.h: Ditto.
17626         * config/i386/ammintrin.h: Ditto.
17627         * config/i386/emmintrin.h: Ditto.
17628         * config/i386/pmmintrin.h: Ditto.
17629         * config/i386/mmintrin.h: Ditto.
17630         * config/i386/mm3dnow.h: Ditto.
17631
17632 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
17633
17634         PR middle-end/35185
17635         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
17636         (lower_omp_2): New function.
17637         (lower_omp_1, lower_omp): Rewritten.
17638
17639 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
17640
17641         PR 35054
17642         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
17643         with the phrase "Microsoft Windows compilers".
17644         (Push/Pop Macro Pragmas): New subsection. Document
17645         #pragma push_macro and pragma pop_macro.
17646
17647 2008-03-12  Paul Brook  <paul@codesourcery.com>
17648
17649         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
17650
17651 2008-03-12  Paul Brook  <paul@codesourcery.com>
17652
17653         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
17654         (thumb2_alusi3_short): Exclude PLUS and MINUS.
17655         (thumb2_addsi_shortim): Rename ...
17656         (thumb2_addsi_short): ... to this.  Allow register operands.
17657         (thumb2_subsi_short): New pattern.
17658         (thumb2_one_cmplsi2_short,
17659         thumb2_negsi2_short): New patterns and peepholes.
17660
17661 2008-03-12  Paul Brook  <paul@codesourcery.com>
17662
17663         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
17664
17665 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
17666
17667         * config/i386/i386.md (int_cond): New code iterator.
17668         (fp_cond): Ditto.
17669         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
17670         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
17671         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
17672         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
17673         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
17674         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
17675         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
17676         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
17677
17678 2008-03-12  Paul Brook  <paul@codesourcery.com>
17679
17680         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
17681         instead of {arm,thumb}_compute_save_reg_mask.
17682         (output_return_instruction): Ditto.
17683         (thumb_unexpanded_epilogue): Ditto.
17684         (thumb1_expand_prologue): Ditto.
17685         (thumb1_output_function_prologue): Ditto.
17686         (arm_set_return_address): Ditto.
17687         (thumb_set_return_address): Ditto.
17688         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
17689         regs to achieve stack alignment.
17690         (thumb1_compute_save_reg_mask): Fix compiler warning.
17691         (arm_output_epilogue): Use offsets->saved_regs_mask.
17692         Adjust stack pointer by poping call clobered registers.
17693         (arm_expand_prologue): Use offsets->saved_regs_mask.
17694         Adjust stack pointer by pushing extra registers.
17695         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
17696
17697 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
17698
17699         PR tree-opt/35422
17700         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
17701         conversion to the operands of a multiplication.
17702
17703 2008-03-12  Richard Guenther  <rguenther@suse.de>
17704
17705         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
17706         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
17707         * timevar.def (TV_TREE_PHIPROP): Add.
17708         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
17709         pass description.  Use TV_TREE_PHIPROP.
17710         * tree-ssa-forwprop.c: Remove phiprop code.
17711
17712 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
17713
17714         PR middle-end/35549
17715         * omp-low.c (maybe_lookup_decl): Constify first argument.
17716         (use_pointer_for_field): Change last argument from bool to
17717         omp_context *.  Disallow shared copy-in/out in nested
17718         parallel if decl is shared in outer parallel too.
17719         (build_outer_var_ref, scan_sharing_clauses,
17720         lower_rec_input_clauses, lower_copyprivate_clauses,
17721         lower_send_clauses, lower_send_shared_vars): Adjust callers.
17722
17723 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
17724             Ira Rosen  <irar@il.ibm.com>
17725
17726         * tree-vectorizer.c (free_stmt_vec_info): New function.
17727         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
17728         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
17729         * tree-vectorizer.h (free_stmt_vec_info): Declare.
17730         * tree-vect-transform.c (vectorizable_conversion): Free
17731         vec_oprnds0 if it was allocated.
17732         (vect_permute_store_chain): Remove unused VECs.
17733         (vectorizable_store): Free VECs that are allocated in the..
17734         function.
17735         (vect_transform_strided_load, vectorizable_load): Likewise.
17736         (vect_remove_stores): Simplify the code.
17737         (vect_transform_loop): Move code to vect_remove_stores().
17738         Call vect_remove_stores() and free_stmt_vec_info().
17739
17740 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17741
17742         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
17743         TARGET_HPUX.  Revise comment.
17744         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
17745         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
17746         Use sr4 variant of `be' instruction when not generating PIC code.
17747         (attr_length_call): Adjust for above change.
17748
17749 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17750
17751         * ipa-reference.c (static_execute): Remove module_statics_const and
17752         associated setting code.
17753
17754 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
17755
17756         PR target/35540
17757         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
17758         predicate for operand 1.
17759         (paritysi2_cmp): Use register_operand predicate for operand 2.
17760         Use earlyclobber modifier for operand 1.  Remove support for
17761         memory operands.
17762         (paritydi2_cmp): Use register_operand predicate for operand 3.
17763         Use earlyclobber modifier for operand 1.  Remove support for
17764         memory operands.
17765
17766 2008-03-11  Paul Brook  <paul@codesourcery.com>
17767             Vladimir Prus  <vladimir@codesourcery.com>
17768
17769         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
17770         (arm_compute_save_reg0_reg12_mask): Always
17771         check if register 11 must be saved.  Always safe hard frame pointer
17772         when frame_pointer_needeed.
17773         (arm_compute_save_reg_mask): Save IP and PC
17774         only with apcs frames.
17775         (arm_output_epilogue): Adjust Thumb2 codepath to
17776         be also invoked and work for ARM non-apcs frames.
17777         (arm_expand_prologue): Don't bother saving IP
17778         for non-apcs frame, since it's not clobbered by
17779         prologue code.  Implement non-apcs frame
17780         layout.
17781
17782 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
17783
17784         PR rtl-optimization/35281
17785         * expr.c (convert_move): Use a new pseudo for the intermediate
17786         from_mode->word_mode result.
17787
17788 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
17789
17790         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
17791         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
17792         * toplev.c (compile_file): Don't call it.
17793
17794 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
17795
17796         PR middle-end/35526
17797         * expr.c (store_expr): Call emit_block_move if the mode
17798         of "temp" RTX is BLKmode.
17799
17800 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17801             Richard Guenther  <rguenther@suse.de>
17802
17803         PR tree-optimization/31358
17804         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
17805         the step with a NULL_TREE.
17806         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
17807         to sizetype if type is a pointer type.
17808         (add_candidate_1): Don't convert the base and step to
17809         the generic type if the orginal type is a pointer type.
17810         (add_iv_value_candidates): Use sizetype for the step
17811         if type is a pointer type.
17812         (cand_value_at): Likewise.
17813         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
17814         for pointer types.
17815         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
17816         Don't convert the tem affine to the type.
17817         (add_elt_to_tree): Use sizetype for the step if a pointer.
17818         Use POINTER_PLUS_EXPR for pointers.
17819         (aff_combination_to_tree): Use sizetype for the step if a
17820         pointer.
17821
17822 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
17823
17824         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
17825         Remove commutativity hint.
17826
17827 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
17828
17829         PR c/35438
17830         PR c/35439
17831         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
17832         errorneous type.  Check that v is a VAR_DECL.
17833
17834         PR middle-end/35099
17835         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
17836
17837 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
17838
17839         PR tree-optimization/35494
17840         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
17841         may be overriden at link and run time.
17842
17843 2008-03-10  Richard Guenther  <rguenther@suse.de>
17844
17845         PR tree-optimization/34677
17846         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
17847         (poolify_tree): Likewise.
17848         (modify_expr_template): Likewise.
17849         (poolify_modify_stmt): Likewise.
17850         (insert_fake_stores): Handle all component-ref style stores
17851         in addition to INDIRECT_REF.  Also handle complex types.
17852         Do not poolify the inserted load.
17853         (realify_fake_stores): Do not rebuild the tree but only
17854         make it a SSA_NAME copy.
17855         (init_pre): Remove initialzation of modify_expr_template.
17856         Do not allocate modify_expr_node_pool.
17857         (fini_pre): Do not free modify_expr_node_pool.
17858
17859 2008-03-10  Paul Brook  <paul@codesourcery.com>
17860
17861         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
17862         to avoid conflicts.
17863
17864 2008-03-10  Paul Brook  <paul@codesourcery.com>
17865             Mark Shinwell  <shinwell@codesourcery.com>
17866
17867         * config/arm/cortex-r4.md: New.
17868         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
17869         insn attributes.
17870         * config/arm/arm.md: Include cortex-r4.md.
17871         (insn): Add smmls, sdiv and udiv values.
17872         (generic_sched): Don't use generic scheduling for Cortex-R4.
17873         (arm_issue_rate): New function.
17874         (TARGET_SCHED_ISSUE_RATE): Define.
17875
17876 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
17877
17878         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
17879
17880 2008-03-10  Richard Guenther  <rguenther@suse.de>
17881
17882         * tree-ssa-pre.c (get_sccvn_value): Simplify.
17883         (compute_avail): Do not add stmt uses to AVAIL_OUT.
17884
17885 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
17886
17887         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
17888         Set default to true.
17889
17890 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17891
17892         * c.opt (Wsynth): Deprecate.
17893         * doc/invoke.texi (Option Summary, Warning Options): Document
17894         -Wno-format-contains-nul.
17895
17896 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
17897
17898         PR target/35496
17899         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
17900         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
17901
17902 2008-03-09  Ira Rosen  <irar@il.ibm.com>
17903
17904         * config/rs6000/rs6000.c (builtin_description): Rename vector
17905         left shift operations.
17906         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
17907         (altivec_vsl<VI_char>): Rename to ...
17908         (ashl<mode>3): ... new name.
17909         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
17910         gen_ashlv4si3.
17911         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
17912
17913 2008-03-08  Richard Guenther  <rguenther@suse.de>
17914
17915         * coverage.h (tree_coverage_counter_addr): Declare.
17916         * coverage.c (tree_coverage_counter_addr): New function.
17917         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
17918         before using again.
17919         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
17920         (tree_gen_one_value_profiler): Likewise.
17921         (tree_gen_ic_profiler): Likewise.
17922         (tree_gen_average_profiler): Likewise.
17923         (tree_gen_ior_profiler): Likewise.
17924
17925 2008-03-08  Richard Guenther  <rguenther@suse.de>
17926
17927         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
17928         (vn_binary_op_insert): Likewise.
17929         (vn_unary_op_lookup): Likewise.
17930         (vn_unary_op_insert): Likewise.
17931         (vn_nary_op_lookup): Declare.
17932         (vn_nary_op_insert): Likewise.
17933         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
17934         and binary hashes, use a single obstack for unary_op_pool
17935         and binary_op_pool.
17936         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
17937         a single struct vn_nary_op_s.  Store tree code length and
17938         a variable number of operands.
17939         (struct vn_reference_op_struct): Remove unused op2.
17940         (vn_reference_op_eq): Do not compare op2.
17941         (vn_reference_op_compute_hash): Do not compute hash of op2.
17942         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
17943         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
17944         with vn_nary_op_compute_hash.
17945         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
17946         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
17947         vn_nary_op_lookup.
17948         (vn_unary_op_insert, vn_binary_op_insert): Replace with
17949         vn_nary_op_insert.
17950         (visit_unary_op): Call nary functions.
17951         (visit_binary_op): Likewise.
17952         (process_scc): Adjust for struct vn_tables_s changes.
17953         (allocate_vn_table): Likewise.
17954         (free_vn_table): Likewise.
17955         * tree-vn.c (vn_add): Call nary functions.
17956         (vn_lookup): Likewise.
17957
17958 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
17959
17960         PR target/35498
17961         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
17962         wdst back after sync_compare_and_swapqhi_internal.
17963
17964 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
17965
17966         PR target/22152
17967         * config/i386/i386-modes.def (V1DI): New vector mode.
17968         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
17969         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
17970         (MMXMODE248): Ditto.
17971         (MMXMODE): Add V1DI mode.
17972         (mmxvecsize): Change DI mode to V1DI mode.
17973         ("mov<mode>): Use MMXMODEI8 mode iterator.
17974         ("*mov<mode>_internal_rex64"): Ditto.
17975         ("*mov<mode>_internal"): Ditto.
17976         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
17977         ("mmx_sub<mode>3"): Ditto.
17978         ("mmx_adddi3"): Remove insn pattern.
17979         ("mmx_subdi3"): Ditto.
17980         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
17981         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
17982         ("mmx_ashl<mode>3"): Ditto.
17983         ("mmx_lshrdi3"): Remove insn pattern.
17984         ("mmx_ashldi3"): Ditto.
17985         * config/i386/i386.c (classify_argument): Handle V1DImode.
17986         (function_arg_advance_32): Ditto.
17987         (function_arg_32): Ditto.
17988         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
17989         mmx_addv1di3 insn pattern.
17990         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
17991         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
17992         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
17993         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
17994         Remove definitions of built-in functions.
17995         (V1DI_type_node): New node.
17996         (v1di_ftype_v1di_int): Ditto.
17997         (v1di_ftype_v1di_v1di): Ditto.
17998         (v2si_ftype_v2si_si): Ditto.
17999         (v4hi_ftype_v4hi_di): Remove node.
18000         (v2si_ftype_v2si_di): Ditto.
18001         (ix86_init_mmx_sse_builtins): Handle V1DImode.
18002         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
18003         Redefine builtins using def_builtin_const with *_ftype_*_int node.
18004         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
18005         Add new builtins using def_builtin_const.
18006         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
18007         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
18008         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
18009         * config/i386/mmintrin.h (__v1di): New typedef.
18010         (_mm_add_si64): Cast arguments to __v1di type.
18011         (_mm_sub_si64): Ditto.
18012         (_mm_sll_pi16): Cast __count to __v4hi type.
18013         (_mm_sll_pi32): Cast __count to __v2si type.
18014         (_mm_sll_si64): Cast arguments to __v1di type.
18015         (_mm_srl_pi16): Cast __count to __v4hi type.
18016         (_mm_srl_pi32): Cast __count to __v2si type.
18017         (_mm_srl_si64): Cast arguments to __v1di type.
18018         (_mm_sra_pi16): Cast __count to __v4hi type.
18019         (_mm_sra_pi32): Cast __count to __v2si type.
18020         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
18021         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
18022         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
18023         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
18024         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
18025         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
18026         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
18027         (_mm_srai_pi32): Use __builtin_ia32_psradi.
18028         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
18029         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
18030         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
18031         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
18032
18033 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
18034
18035         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
18036
18037 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
18038
18039         PR target/35373
18040         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
18041         reg+const addressing for Altivec modes.  Don't generate reg+reg
18042         addressing for TFmode or TDmode quantities.
18043
18044 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
18045
18046         * c-common.c (vector_types_convertible_p): Call langhook
18047         instead of comptypes.
18048
18049 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18050
18051         PR tree-opt/35402
18052         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
18053         integral and scalar float variables which have a
18054         NULL DECL_INITIAL.
18055
18056 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
18057
18058         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
18059         dwarf_register_span hook when emitting unwind information for
18060         register-to-memory saves.
18061         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
18062         (rs6000_frame_related): Remove call to spe_synthesize_frame.
18063
18064 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
18065
18066         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
18067         for the same VAR_DECL.
18068
18069 2008-03-06  Tom Tromey  <tromey@redhat.com>
18070
18071         * treelang: Delete.
18072         * doc/standards.texi (Standards): Don't mention treelang.
18073         * doc/invoke.texi (Overall Options): Don't mention treelang.
18074         * doc/install.texi (Prerequisites): Don't mention bison or
18075         treelang.
18076         (Configuration): Don't mention treelang.
18077         (Building): Likewise.
18078         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
18079
18080 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
18081
18082         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
18083         word-extractions out of a multi-word object.
18084
18085 2008-03-06  Richard Guenther  <rguenther@suse.de>
18086
18087         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
18088         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
18089         result type and precision.
18090         * expr.c (get_inner_reference): Set unsignedp based on the result
18091         type of BIT_FIELD_REF.
18092         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
18093         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
18094         (try_instantiate_multiple_fields): Likewise.  Use the correct type
18095         for BIT_FIELD_REF.
18096         (sra_build_assignment): Likewise.
18097         (sra_build_elt_assignment): Likewise.
18098         (sra_explode_bitfield_assignment): Likewise.
18099         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
18100         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
18101         set BIT_FIELD_REF_UNSIGNED.
18102         (vectorizable_load): Likewise.
18103
18104 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
18105
18106         * cse.c (cse_extended_basic_block): Invalidate artificial defs
18107         at bb start.
18108
18109 2008-03-06  Richard Guenther  <rguenther@suse.de>
18110
18111         * alias.c (struct alias_set_entry): Move has_zero_child field
18112         to pack with alias_set.
18113
18114 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
18115
18116         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
18117         32bit host.
18118
18119 2008-03-05  Ian Lance Taylor  <iant@google.com>
18120
18121         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
18122
18123 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
18124
18125         * fwprop.c (update_df): Support width and offset parameters of
18126         df_ref_create.
18127         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
18128         global_conflicts): Change DF_REF_EXTRACT to either
18129         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
18130         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
18131         * df-scan.c (df_ref_record, df_defs_record,
18132         df_ref_create_structure, df_def_record_1, df_uses_record,
18133         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
18134         df_bb_refs_collect, df_entry_block_defs_collect,
18135         df_exit_block_uses_collect): Support new width and offset fields.
18136         (ref_extract_pool): New storage pool.
18137         (df_free_ref): New function.
18138         (df_reg_chain_unlink, df_free_collection_rec,
18139         df_sort_and_compress_refs): Call df_free_ref.
18140         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
18141         of df_ref_extract.
18142         (df_ref_create_structure): Allocate df_ref_extract if offset and
18143         width fields are used.
18144         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
18145         (df_uses_record): Get offset and width from ZERO_EXTRACT
18146         and SIGN_EXTRACT.
18147         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
18148         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
18149         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
18150         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
18151         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
18152         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
18153         (df_ref_extract): New structure.
18154         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
18155         (df_ref_create): Add width and offset parameters.
18156
18157 2008-03-05  Richard Guenther  <rguenther@suse.de>
18158
18159         * tree-ssa-structalias.c (get_constraint_for_component_ref):
18160         Use ranges_overlap_p.
18161         (offset_overlaps_with_access): Rename
18162         to ranges_overlap_p and move ...
18163         * tree-flow-inline.h (ranges_overlap_p): ... here.
18164
18165         * tree.h (get_inner_reference, handled_component_p): Update
18166         comments.
18167
18168         * tree.h (record_component_aliases, get_alias_set,
18169         alias_sets_conflict_p, alias_sets_must_conflict_p,
18170         objects_must_conflict_p): Move declarations ...
18171         * alias.h (record_component_aliases, get_alias_set,
18172         alias_sets_conflict_p, alias_sets_must_conflict_p,
18173         objects_must_conflict_p): ... here.
18174         Include coretypes.h.
18175         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
18176
18177 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
18178
18179         * cfg.c: Include tree-flow.h.
18180         (remove_edge_raw): Call redirect_edge_var_map_clear.
18181         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
18182         * tree-flow-inline.h (redirect_edge_var_map_def): New.
18183         (redirect_edge_var_map_result): New.
18184         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
18185         PENDING_STMT use with redirect_edge_var_map_*.
18186         * tree-ssa.c (edge_var_maps): New definition.
18187         (redirect_edge_var_map_add): New.
18188         (redirect_edge_var_map_clear): New.
18189         (redirect_edge_var_map_dup): New.
18190         (redirect_edge_var_map_vector): New.
18191         (redirect_edge_var_map_destroy): New.
18192         (ssa_redirect_edge): Replace PENDING_STMT use with
18193         redirect_edge_var_map_*.
18194         (flush_pending_stmts): Same.
18195         (delete_tree_ssa): Destroy edge var map.
18196         * tree-flow.h (struct _edge_var_map): New.
18197         Define edge_var_map vector type.
18198         Declare redirect_edge_var_map_* prototypes.
18199         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
18200         * tree-cfg.c (reinstall_phi_args): Replace
18201         PENDING_STMT use with redirect_edge_var_map_*.
18202
18203 2008-03-05  Richard Guenther  <rguenther@suse.de>
18204
18205         PR tree-optimization/35472
18206         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
18207         whose single use_stmt has a overlapping set of loaded and
18208         stored symbols as that use_stmt might be a noop assignment then.
18209
18210 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
18211
18212         * gthr-rtems.h: Implement __gthread_mutex_destroy.
18213
18214 2008-03-05  Richard Guenther  <rguenther@suse.de>
18215
18216         PR c++/35336
18217         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
18218         should be constants.
18219         * tree-cfg.c (verify_expr): Verify it.
18220         * fold-const.c (fold_truthop): Remove code generating
18221         BIT_FIELD_REFs of structure bases.
18222         (fold_binary): Likewise.
18223         (fold_ternary): Position and size of BIT_FIELD_REFs are
18224         always host integers.
18225         (make_bit_field_ref): Remove.
18226         (optimize_bit_field_compare): Remove.
18227         (all_ones_mask_p): Remove.
18228
18229 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
18230
18231         PR gcc/33009
18232         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
18233         (split_block_and_df_analyze): New. Split basic block and rebuild
18234         dataflow.
18235         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
18236         SPLIT_BLOCK.
18237         (split_pattern_seq): Likewise.
18238         (erase_matching_seqs): Likewise.
18239         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
18240
18241 2008-03-04  Geoff Keating  <geoffk@apple.com>
18242
18243         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
18244         declaration and code.
18245         (tree_invalid_nonnegative_warnv_p): Likewise.
18246
18247 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
18248
18249         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
18250         examples.  Truncate option-names then causing overfull hbox.
18251
18252 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18253
18254         PR target/35222
18255         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
18256         on hpux10.
18257         * configure: Rebuilt.
18258
18259 2008-03-04  Rafael Espindola  <espindola@google.com>
18260
18261         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
18262         (tree_unary_nonnegative_warnv_p): New.
18263         (tree_binary_nonnegative_warnv_p): New.
18264         (tree_single_nonnegative_warnv_p): New.
18265         (tree_invalid_nonnegative_warnv_p): New.
18266         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
18267
18268 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18269
18270         PR 28322
18271         * opts.c (handle_option): Postpone 'unknown option' errors only for
18272         warning options.
18273
18274 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
18275
18276         PR target/35453
18277         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
18278         (_SIDD_XXX): This.
18279
18280 2008-03-04  Rafael Espindola  <espindola@google.com>
18281
18282         * fold-const.c (tree_unary_nonzero_warnv_p): New.
18283         (tree_binary_nonzero_warnv_p): New.
18284         (tree_single_nonzero_warnv_p): New.
18285         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
18286
18287 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
18288
18289         PR middle-end/35456
18290         * fold-const.c (fold_cond_expr_with_comparison): Prevent
18291         transformations for modes that have signed zeros.
18292         * ifcvt.c (noce_try_abs): Ditto.
18293
18294 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
18295
18296         * config/i386/i386.c (override_options): Force
18297         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
18298
18299 2008-03-04  Jan Hubicka  <jh@suse.cz>
18300
18301         PR c++/35262
18302         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
18303         in last commit.
18304
18305 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
18306
18307         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
18308         label to probe the stack.
18309
18310 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
18311
18312         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
18313         (__gthr_win32_mutex_destroy): Declare.
18314         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
18315         __gthr_win32_mutex_destroy.
18316         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
18317
18318 2008-03-03  Jan Hubicka  <jh@suse.cz>
18319
18320         PR c++/35262
18321         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
18322         aggressive on inlining cold calls.
18323
18324 2008-03-03  Richard Guenther  <rguenther@suse.de>
18325
18326         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
18327         struct copies into the expression table.
18328         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
18329         (try_to_simplify): Likewise.
18330         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
18331         integral and pointer arguments which do not change the
18332         precision to NOP_EXPRs.
18333         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
18334         VIEW_CONVERT_EXPR case.
18335
18336 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
18337
18338         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
18339         defined in a loop at depth 0 is invariant.
18340         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
18341         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
18342         be called at loop depth 0.
18343
18344 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
18345
18346         PR driver/35420
18347         * gcc.c (process_command): Update copyright notice dates.
18348         * gcov.c (print_version): Likewise.
18349         * gcov-dump.c (print_version): Likewise.
18350         * mips-tfile.c (main): Likewise.
18351         * mips-tdump.c (main): Likewise.
18352
18353 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18354
18355         PR 24924
18356         * c-common.c (flag_permissive): Delete.
18357         (constant_expression_warnings): Check flags first.
18358         (constant_expression_error): New.
18359         * c-common.h (flag_permissive): Delete.
18360         (constant_expression_error): Declare.
18361         * flags.h (flag_permissive): Declare. Update description.
18362         * diagnostic.c (pedwarn): Update.
18363         (permerror): New.
18364         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
18365         (permissive_error_kind): New.
18366         * toplev.c (flag_permissive): Define. Update description.
18367         * toplev.h (permissive_error_kind): Declare.
18368         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
18369         (pedwarn_c90): Use pedantic_warning_kind.
18370         * c-opts.c (c_common_post_options): flag_permissive does not affect
18371         flag_pedantic_errors.
18372
18373 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
18374
18375         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
18376         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
18377         __absvsi2, __absvDI2): Use unsigned arithmetic.
18378
18379 2008-03-02  Andi Kleen  <ak@suse.de>
18380             Richard Guenther  <rguenther@suse.de>
18381
18382         * struct-equiv.c: Remove file.
18383         * cfg_cleanup.c (condjump_equiv_p): Remove.
18384         * Makefile.in (OBJS-common): Remove struct-equiv.o.
18385         (struct-equiv.o): Remove rule.
18386         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
18387         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
18388         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
18389
18390 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
18391
18392         * ifcvt.c (noce_process_if_block): Try to handle only the then
18393         block if the else block exists but isn't suitable.
18394
18395 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
18396
18397         PR gcc/35063
18398         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
18399         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
18400         regression from previous patch.
18401
18402 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
18403
18404         PR gcc/35063
18405         * gthr.h: Add __gthread_mutex_destroy as a function that must be
18406         implemented.
18407         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
18408         * gthr-single.h (__gthread_mutex_destroy): Likewise.
18409         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
18410         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
18411         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
18412         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
18413         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
18414         (__gthread_mutex_destroy_function): Rename to
18415         __gthread_mutex_destroy.
18416         * gthr-dce.h (__gthread_mutex_destroy): Call
18417         pthread_mutex_destroy.
18418         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
18419         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
18420         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
18421
18422 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
18423
18424         * df-scan.c (df_ref_chain_change_bb): Simplify.
18425         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
18426         set_block_for_insn if there's any change.
18427         * df.h ((df_insn_change_bb): Fix prototype.
18428         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
18429         df_insn_change_bb, don't call set_block_for_insn.
18430         * emit-rtl.c (reorder_insns): Likewise.
18431         * haifa-sched.c (move_insn): Likewise.
18432
18433 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
18434
18435         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
18436
18437 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
18438
18439         * tree-flow-inline.h (next_readonly_imm_use): Return
18440         NULL_USE_OPERAND_P after the end.
18441
18442 2008-03-01  Richard Guenther  <rguenther@suse.de>
18443
18444         PR tree-optimization/35411
18445         * tree-sra.c (sra_build_assignment): Split conversion to
18446         final type to a separate statement if we are not assigning
18447         to a register.
18448
18449 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
18450
18451         * fold-const.c (fold_convertible_p): Correct the logic to follow
18452         that in fold_convert().
18453
18454 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
18455
18456         PR c++/35315
18457         * tree-inline.c (build_duplicate_type): When we make a
18458         duplicate type, make it unique in the canonical types system.
18459
18460 2008-02-29  Tom Tromey  <tromey@redhat.com>
18461
18462         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
18463         input_file_stack_history, input_file_stack_restored): Remove.
18464         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
18465         * input.h (struct file_stack): Remove.
18466         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
18467         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
18468         Likewise.
18469         * diagnostic.h (struct diagnostic_context) <last_module>: Change
18470         type.
18471         (diagnostic_last_module_changed): Add 'map' argument.
18472         (diagnostic_set_last_function): Likewise.
18473         * diagnostic.c (undiagnostic_report_current_module): Iterate using
18474         line map, not input_file_stack.
18475         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
18476
18477 2008-02-29  Paul Brook  <paul@codesourcery.com>
18478
18479         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
18480
18481 2008-02-29  Paul Brook  <paul@codesourcery.com>
18482
18483         * config/arm/ieee754-df.S (muldf3): Use RET macros.
18484
18485 2008-02-29  Richard Guenther  <rguenther@suse.de>
18486
18487         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
18488         vn_lookup_or_add.
18489         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
18490         value for comparing for a store match.
18491         (simplify_unary_expression): Do nothing for SSA_NAMEs.
18492         (try_to_simplify): Do not do a full-blown reference lookup.
18493
18494 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
18495
18496         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
18497         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
18498
18499         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
18500
18501 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
18502
18503         * tree-loop-linear.c (try_interchange_loops): Compare memory access
18504         strides against cache sizes.
18505
18506 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
18507
18508         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
18509         constant to fpul.
18510
18511 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
18512
18513         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
18514         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
18515         is smaller than the original promoted value.
18516         (simplify_subreg): If OP is a SUBREG, try to preserve its
18517         SUBREG_PROMOTED_VAR_P information.
18518
18519 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
18520
18521         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
18522         (VN_INFO_GET): Allocate new objects on the obstack.
18523         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
18524         for rpo_numbers_temp, for consistency.
18525         (free_scc_vn): Free the obstack.
18526
18527 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
18528
18529         * doc/invoke.texi: Document -ftree-loop-distribution.
18530         * tree-loop-distribution.c: New.
18531         * tree-pass.h (pass_loop_distribution): New.
18532         * graphds.h (struct graph): Add htab_t indices.
18533         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
18534         * tree-vectorizer.c (rename_variables_in_loop): Extern.
18535         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
18536         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
18537         * tree-data-ref.c (debug_data_dependence_relations): New.
18538         (dump_data_dependence_relation): Also print data references.
18539         (free_data_ref): Extern.
18540         (same_access_functions): Moved...
18541         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
18542         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
18543         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
18544         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
18545         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
18546         (stmts_from_loop): Skip LABEL_EXPR.
18547         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
18548         New.
18549         (build_rdg): Initialize rdg->indices htab.
18550         (free_rdg, stores_from_loop, ref_base_address,
18551         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
18552         have_similar_memory_accesses_1, ref_base_address_1,
18553         remove_similar_memory_refs): New.
18554         * tree-data-ref.h: Depend on tree-chrec.h.
18555         (debug_data_dependence_relations, free_data_ref): Declared.
18556         (same_access_functions): ... here.
18557         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
18558         New.
18559         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
18560         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
18561         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
18562         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
18563         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
18564         rdg_vertex_for_stmt): Declared.
18565         (struct rdg_edge): Add level.
18566         (RDGE_LEVEL): New.
18567         (free_rdg, stores_from_loop, remove_similar_memory_refs,
18568         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
18569         Declared.
18570         (rdg_has_similar_memory_accesses): New.
18571         * tree-vect-analyze.c: Remove unused static decls.
18572         * lambda.h (dependence_level): New.
18573         * common.opt (ftree-loop-distribution): New.
18574         * tree-flow.h (mark_virtual_ops_in_bb,
18575         slpeel_tree_duplicate_loop_to_edge_cfg,
18576         rename_variables_in_loop): Declared.
18577         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
18578         (OBJS-common): Add tree-loop-distribution.o.
18579         (tree-loop-distribution.o): New rule.
18580         * tree-cfg.c (mark_virtual_ops_in_bb): New.
18581         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
18582         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
18583
18584 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
18585
18586         PR target/33963
18587         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
18588         other than structures and unions.
18589
18590 2008-02-28  Richard Guenther  <rguenther@suse.de>
18591
18592         Revert:
18593         2008-02-26  Richard Guenther  <rguenther@suse.de>
18594
18595         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
18596         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
18597         (lookup_decl_from_uid): Declare.
18598         (remove_decl_from_map): Likewise.
18599         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
18600         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
18601         (decl_for_uid_map): New global hashtable mapping DECL_UID
18602         to the decl tree.
18603         (init_ttree): Allocate it.
18604         (insert_decl_to_uid_decl_map): New helper function.
18605         (make_node_stat): Insert new decls into the map.
18606         (copy_node_stat): Likewise.
18607         (lookup_decl_from_uid): New function.
18608         (remove_decl_from_map): Likewise.
18609         (print_decl_for_uid_map_statistics): New helper.
18610         (dump_tree_statistics): Call it.
18611
18612         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
18613         (referenced_var_iterator): Adjust.
18614         (FOR_EACH_REFERENCED_VAR): Adjust.
18615         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
18616         (num_referenced_vars): Adjust.
18617         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
18618         (first_referenced_var): Remove.
18619         (end_referenced_vars_p): Likewise.
18620         (next_referenced_var): Likewise.
18621         (referenced_var_iterator_set): New helper function.
18622         * tree-dfa.c (referenced_var_lookup): Adjust.
18623         (referenced_var_check_and_insert): Likewise.
18624         (remove_referenced_var): Likewise.
18625         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
18626         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
18627         (verify_call_clobbering): Likewise.
18628         (verify_memory_partitions): Likewise.
18629         (init_tree_ssa): Allocate bitmap instead of hashtable for
18630         referenced_vars.
18631         (delete_tree_ssa): Adjust.
18632         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
18633         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
18634         (compute_tag_properties): Likewise.
18635         (set_initial_properties): Likewise.
18636         (find_partition_for): Likewise.
18637         (update_reference_counts): Likewise.
18638         (dump_may_aliases_for): Likewise.
18639         * tree-ssa-operands.c (add_virtual_operand): Likewise.
18640         (add_call_clobber_ops): Likewise.
18641         (add_call_read_ops): Likewise.
18642         (get_asm_expr_operands): Likewise.
18643         * tree-into-ssa.c (dump_decl_set): Likewise.
18644         (update_ssa): Likewise.
18645         * tree-sra.c (scan_function): Likewise.
18646         (decide_instantiations): Likewise.
18647         (scalarize_parms): Likewise.
18648         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
18649         (dsa_named_for): Likewise.
18650         * tree-ssa-structalias.c (update_alias_info): Likewise.
18651         (merge_smts_into): Likewise.
18652
18653 2008-02-27  David Daney  <ddaney@avtrex.com>
18654
18655         PR target/34409
18656         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
18657         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
18658         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
18659         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
18660         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
18661
18662 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
18663
18664         PR target/25477
18665         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
18666         (BUILT_IN_NEXTTOWARD): Remove.
18667         (BUILT_IN_NEXTTOWARDF): Ditto.
18668         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
18669         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
18670
18671 2008-02-27  Tom Tromey  <tromey@redhat.com>
18672
18673         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
18674         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
18675
18676 2008-02-27  Jan Beulich  <jbeulich@novell.com>
18677
18678         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
18679         update the respective field on newdecl.
18680
18681 2008-02-27  Revital Eres  <eres@il.ibm.com>
18682
18683         PR rtl-optimization/34999
18684         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
18685         crossing edges that ends with a call insn.
18686         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
18687         call insn and clear the EDGE_CROSSING flag of the crossing edge
18688         when fixing fallthru edges.
18689
18690 2008-02-27  Richard Guenther  <rguenther@suse.de>
18691
18692         PR middle-end/35390
18693         * fold-const.c (fold_unary): Return the correct argument,
18694         converted to the result type.
18695
18696 2008-02-27  Richard Guenther  <rguenther@suse.de>
18697
18698         PR middle-end/34971
18699         * expr.c (expand_expr_real_1): Assert on rotates that operate
18700         on partial modes.
18701         * fold-const.c (fold_binary): Use the types precision, not the
18702         bitsize of the mode if folding rotate expressions.  Build rotates
18703         only for full modes.
18704
18705 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
18706
18707         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
18708         and CPP_PRAGMA_EOL.
18709         * c-pragma.c (pragma_ns_name): New typedef.
18710         (registered_pp_pragmas): New variable.
18711         (c_pp_lookup_pragma): New function.
18712         (c_register_pragma_1): If flag_preprocess_only, do nothing
18713         for non-expanded pragmas, for expanded ones push pragma's
18714         namespace and name into registered_pp_pragmas vector.
18715         (c_invoke_pragma_handler): Register OpenMP pragmas even when
18716         flag_preprocess_only, don't register GCC pch_preprocess
18717         pragma if flag_preprocess_only.
18718         * c-opts.c (c_common_init): Call init_pragma even if
18719         flag_preprocess_only.
18720         * c-pragma.c (c_pp_lookup_pragma): New prototype.
18721         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
18722         cpp_register_pragma if flag_preprocess_only.
18723
18724 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18725
18726         PR c/28800
18727         * c-parser.c (c_parser_translation_unit): Warn for empty
18728         translation unit, not empty source file.
18729
18730 2008-02-26  Paul Brook  <paul@codesourcery.com>
18731
18732         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
18733         operand for Thumb-2.
18734         * config/arm/arm.h (reg_class): Add CORE_REGS.
18735         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
18736         (BASE_REG_CLASS): Use CORE_REGS.
18737         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
18738         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
18739         (REGNO_OK_FOR_INDEX_P): Exclude SP.
18740         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
18741         ARM_REGNO_OK_FOR_INDEX_P.
18742         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
18743         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
18744         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
18745         (ldm/stm peepholes): Ditto.
18746         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
18747         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
18748         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
18749         * config/arm/constraints.md: Enable "k" constraint on ARM.
18750
18751 2008-02-27  Ben Elliston  <bje@au.ibm.com>
18752
18753         * config/rs6000/rs6000.c: Annotate cache line size field in all
18754         instances of struct processor_costs.
18755
18756 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
18757
18758         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
18759         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
18760         jump_bypass): New counters.
18761         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
18762         * dce.c (gate_ud_dce): Same.
18763         (gate_fast_dce): Same.
18764         * dse.c (gate_dse1): New function.
18765         (gate_dse2): New function.
18766         (gate_dse): Merge results of new gate functions.
18767         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
18768         (gate_handle_jump_bypass): Add dbg_cnt.
18769         (gate_handle_gcse): Add dbg_cnt.
18770         * ifcvt.c (gate_handle_if_conversion): Same.
18771         (gate_handle_if_after_combine): Same.
18772         (gate_handle_if_after_reload): Same.
18773         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
18774
18775 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
18776
18777         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
18778         line sizes.
18779         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
18780
18781 2008-02-26  Jason Merrill  <jason@redhat.com>
18782
18783         PR c++/35315
18784         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
18785         alone if it's the naming decl for the type's main variant.
18786
18787 2008-02-26  Tom Tromey  <tromey@redhat.com>
18788
18789         * system.h (USE_MAPPED_LOCATION): Poison.
18790         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
18791         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
18792         (make_goto_expr_edges): Likewise.
18793         (remove_bb): Likewise.
18794         (execute_warn_function_return): Likewise.
18795         * basic-block.h (struct edge_def) <goto_locus>: Change type to
18796         location_t.
18797         * c-common.c (fname_decl): Remove old location code.
18798         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
18799         location code.
18800         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
18801         variant.
18802         (ASM_INPUT_SOURCE_LOCATION): Likewise.
18803         (gen_rtx_ASM_INPUT): Likewise.
18804         (gen_rtx_ASM_INPUT_loc): Likewise.
18805         (get_rtx_asm_OPERANDS): Remove.
18806         * cfglayout.c (insn_locators_alloc): Remove old location code.
18807         (set_curr_insn_source_location): Likewise.
18808         (curr_insn_locator): Likewise.
18809         * print-tree.c (print_node): Remove old location code.
18810         * tree-mudflap.c (mf_varname_tree): Remove old location code.
18811         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
18812         * cfgexpand.c (expand_gimple_cond_expr): Don't use
18813         location_from_locus.
18814         (construct_exit_block): Remove old location code.
18815         * emit-rtl.c (force_next_line_note): Remove old location code.
18816         * profile.c (branch_prob): Remove old location code.
18817         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
18818         LOC_LINE): Remove old-location variants.
18819         * langhooks.c (lhd_print_error_function): Remove old location
18820         code.
18821         * configure, config.in: Rebuilt.
18822         * configure.ac (--enable-mapped-location): Remove.
18823         * c-decl.c (c_init_decl_processing): Remove old location code.
18824         (finish_function): Likewise.
18825         * recog.c (decode_asm_operands): Remove old location code.
18826         * c-pch.c (c_common_read_pch): Remove old location code.
18827         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
18828         variants.
18829         * gimple-low.c (lower_function_body): Remove old location code.
18830         * toplev.c (unknown_location): Remove.
18831         (push_srcloc): Remove old-location variant.
18832         (process_options): Remove old location code.
18833         (lang_dependent_init): Likewise.
18834         * input.h (UNKNOWN_LOCATION): Move definition.
18835         (location_t): Undeprecate.
18836         (source_locus): Remove.
18837         (location_from_locus): Remove.
18838         (struct location_s): Remove.
18839         Remove all old-location code.
18840         (input_line, input_filename): Remove.
18841         * final.c (final_scan_insn): Remove old location code.
18842         * diagnostic.c (diagnostic_build_prefix): Remove
18843         USE_MAPPED_LOCATION test.
18844         * tree.h (gimple_stmt) <locus>: Now a location_t.
18845         (tree_exp) <locus>: Likewise.
18846         (DECL_IS_BUILTIN): Remove old-location variant.
18847         (annotate_with_file_line, annotate_with_locus): Likewise.
18848         (expr_locus, set_expr_locus): Update.
18849         * tree.c (build1_stat): Remove old location code.
18850         (last_annotated_node): Remove.
18851         (annotate_with_file_line): Remove old-location variant.
18852         (annotate_with_locus): Likewise.
18853         (expr_location): Remove old location code.
18854         (set_expr_location): Likewise.
18855         (expr_has_location): Likewise.
18856         (expr_locus): Likewise.
18857         (set_expr_locus): Likewise.
18858         (expr_filename): Don't use location_from_locus.
18859         (expr_lineno): Likewise.
18860         * rtl-error.c (location_for_asm): Remove old location code.
18861         * c-lex.c (cb_line_change): Remove old location code.
18862         (fe_file_change): Likewise.
18863         (cb_def_pragma): Likewise.
18864         (c_lex_with_flags): Likewise.
18865         * gengtype.c (do_typedef): Don't special-case location types.
18866         (define_location_structures): Remove.
18867         (main): Don't call define_location_structures.
18868         * tree-pretty-print.c (dump_implicit_edges): Remove old location
18869         code.
18870
18871 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18872
18873         PR 26264
18874         * builtins.def (BUILT_IN_STDARG_START): Remove.
18875         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
18876         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
18877         * tree-inline.c (inline_forbidden_p_1): Likewise.
18878
18879 2008-02-26  Richard Guenther  <rguenther@suse.de>
18880
18881         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
18882         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
18883         (lookup_decl_from_uid): Declare.
18884         (remove_decl_from_map): Likewise.
18885         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
18886         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
18887         (decl_for_uid_map): New global hashtable mapping DECL_UID
18888         to the decl tree.
18889         (init_ttree): Allocate it.
18890         (insert_decl_to_uid_decl_map): New helper function.
18891         (make_node_stat): Insert new decls into the map.
18892         (copy_node_stat): Likewise.
18893         (lookup_decl_from_uid): New function.
18894         (remove_decl_from_map): Likewise.
18895         (print_decl_for_uid_map_statistics): New helper.
18896         (dump_tree_statistics): Call it.
18897
18898         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
18899         (referenced_var_iterator): Adjust.
18900         (FOR_EACH_REFERENCED_VAR): Adjust.
18901         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
18902         (num_referenced_vars): Adjust.
18903         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
18904         (first_referenced_var): Remove.
18905         (end_referenced_vars_p): Likewise.
18906         (next_referenced_var): Likewise.
18907         (referenced_var_iterator_set): New helper function.
18908         * tree-dfa.c (referenced_var_lookup): Adjust.
18909         (referenced_var_check_and_insert): Likewise.
18910         (remove_referenced_var): Likewise.
18911         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
18912         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
18913         (verify_call_clobbering): Likewise.
18914         (verify_memory_partitions): Likewise.
18915         (init_tree_ssa): Allocate bitmap instead of hashtable for
18916         referenced_vars.
18917         (delete_tree_ssa): Adjust.
18918         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
18919         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
18920         (compute_tag_properties): Likewise.
18921         (set_initial_properties): Likewise.
18922         (find_partition_for): Likewise.
18923         (update_reference_counts): Likewise.
18924         (dump_may_aliases_for): Likewise.
18925         * tree-ssa-operands.c (add_virtual_operand): Likewise.
18926         (add_call_clobber_ops): Likewise.
18927         (add_call_read_ops): Likewise.
18928         (get_asm_expr_operands): Likewise.
18929         * tree-into-ssa.c (dump_decl_set): Likewise.
18930         (update_ssa): Likewise.
18931         * tree-sra.c (scan_function): Likewise.
18932         (decide_instantiations): Likewise.
18933         (scalarize_parms): Likewise.
18934         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
18935         (dsa_named_for): Likewise.
18936         * tree-ssa-structalias.c (update_alias_info): Likewise.
18937         (merge_smts_into): Likewise.
18938
18939 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18940
18941         PR 34351
18942         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
18943         * c-opts.c (c_common_handle_option): Wall enables
18944         Wvolatile-register-var.
18945         * common.opt: Move Wvolatile-register-var to...
18946         * c.opt: ...here.
18947
18948 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18949
18950         * common.opt (Wlarger-than=): New.
18951         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
18952         -Wlarger-than=.
18953         * opts.c (common_handle_option): Handle -Wlarger-than=.
18954         * optc-gen.awk: Likewise.
18955         * opth-gen.awk: Likewise.
18956         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
18957         * tree-optimize.c (tree_rest_of_compilation): Likewise.
18958
18959 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
18960
18961         * c-common.c (match_case_to_enum_1): Add appropriate
18962         OPT_W* parameter to warning.
18963         (c_do_switch_warnings): Likewise.
18964         * c-typeck.c (warning_init): Add one more parameter following
18965         'warning' function.
18966         (push_init_level): Update call to warning_init.
18967         (pop_init_level): Likewise.
18968         (add_pending_init): Likewise.
18969         (output_init_element: Likewise.
18970
18971 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18972
18973         PR 28322
18974         * toplev.c (toplev_main): If there are warnings or error, print
18975         errors for ignored options.
18976         * opts.c (ignored_options): New static variable.
18977         (postpone_unknown_option_error): New.
18978         (print_ignored_options): New.
18979         (handle_option): Postpone errors for unknown -Wno-* options.
18980         * opts.h (print_ignored_options): Declare.
18981
18982 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
18983
18984         * config/mips/mips.md (loadgp_blockage, blockage): Change type
18985         to "ghost".
18986
18987 2008-02-25  Richard Guenther  <rguenther@suse.de>
18988
18989         Revert:
18990         2008-02-25  Richard Guenther  <rguenther@suse.de>
18991
18992         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
18993         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
18994         (lookup_decl_from_uid): Declare.
18995         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
18996         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
18997         (decl_for_uid_map): New global hashtable mapping DECL_UID
18998         to the decl tree.
18999         (init_ttree): Allocate it.
19000         (insert_decl_to_uid_decl_map): New helper function.
19001         (make_node_stat): Insert new decls into the map.
19002         (copy_node_stat): Likewise.
19003         (lookup_decl_from_uid): New function.
19004         (print_decl_for_uid_map_statistics): New helper.
19005         (dump_tree_statistics): Call it.
19006
19007         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
19008         (referenced_var_iterator): Adjust.
19009         (FOR_EACH_REFERENCED_VAR): Adjust.
19010         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
19011         (num_referenced_vars): Adjust.
19012         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
19013         (first_referenced_var): Remove.
19014         (end_referenced_vars_p): Likewise.
19015         (next_referenced_var): Likewise.
19016         (referenced_var_iterator_set): New helper function.
19017         * tree-dfa.c (referenced_var_lookup): Adjust.
19018         (referenced_var_check_and_insert): Likewise.
19019         (remove_referenced_var): Likewise.
19020         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
19021         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19022         (verify_call_clobbering): Likewise.
19023         (verify_memory_partitions): Likewise.
19024         (init_tree_ssa): Allocate bitmap instead of hashtable for
19025         referenced_vars.
19026         (delete_tree_ssa): Adjust.
19027         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
19028         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19029         (compute_tag_properties): Likewise.
19030         (set_initial_properties): Likewise.
19031         (find_partition_for): Likewise.
19032         (update_reference_counts): Likewise.
19033         (dump_may_aliases_for): Likewise.
19034         * tree-ssa-operands.c (add_virtual_operand): Likewise.
19035         (add_call_clobber_ops): Likewise.
19036         (add_call_read_ops): Likewise.
19037         (get_asm_expr_operands): Likewise.
19038         * tree-into-ssa.c (dump_decl_set): Likewise.
19039         (update_ssa): Likewise.
19040         * tree-sra.c (scan_function): Likewise.
19041         (decide_instantiations): Likewise.
19042         (scalarize_parms): Likewise.
19043         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
19044         (dsa_named_for): Likewise.
19045         * tree-ssa-structalias.c (update_alias_info): Likewise.
19046         (merge_smts_into): Likewise.
19047
19048 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
19049
19050         PR fortran/29549
19051         * doc/invoke.texi (-fcx-limited-range): Document new option.
19052         * toplev.c (process_options): Handle -fcx-fortran-rules.
19053         * common.opt: Add documentation for -fcx-fortran-rules.
19054
19055 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
19056
19057         PR c/35162
19058         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
19059         actual behaviour and C99.
19060
19061 2008-02-26  Ben Elliston  <bje@au.ibm.com>
19062
19063         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
19064         (ASM_CPU_POWER6_SPEC): Likewise.
19065         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
19066         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
19067         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
19068
19069 2008-02-25  Richard Guenther  <rguenther@suse.de>
19070
19071         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
19072         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
19073         (lookup_decl_from_uid): Declare.
19074         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
19075         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
19076         (decl_for_uid_map): New global hashtable mapping DECL_UID
19077         to the decl tree.
19078         (init_ttree): Allocate it.
19079         (insert_decl_to_uid_decl_map): New helper function.
19080         (make_node_stat): Insert new decls into the map.
19081         (copy_node_stat): Likewise.
19082         (lookup_decl_from_uid): New function.
19083         (print_decl_for_uid_map_statistics): New helper.
19084         (dump_tree_statistics): Call it.
19085
19086         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
19087         (referenced_var_iterator): Adjust.
19088         (FOR_EACH_REFERENCED_VAR): Adjust.
19089         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
19090         (num_referenced_vars): Adjust.
19091         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
19092         (first_referenced_var): Remove.
19093         (end_referenced_vars_p): Likewise.
19094         (next_referenced_var): Likewise.
19095         (referenced_var_iterator_set): New helper function.
19096         * tree-dfa.c (referenced_var_lookup): Adjust.
19097         (referenced_var_check_and_insert): Likewise.
19098         (remove_referenced_var): Likewise.
19099         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
19100         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19101         (verify_call_clobbering): Likewise.
19102         (verify_memory_partitions): Likewise.
19103         (init_tree_ssa): Allocate bitmap instead of hashtable for
19104         referenced_vars.
19105         (delete_tree_ssa): Adjust.
19106         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
19107         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19108         (compute_tag_properties): Likewise.
19109         (set_initial_properties): Likewise.
19110         (find_partition_for): Likewise.
19111         (update_reference_counts): Likewise.
19112         (dump_may_aliases_for): Likewise.
19113         * tree-ssa-operands.c (add_virtual_operand): Likewise.
19114         (add_call_clobber_ops): Likewise.
19115         (add_call_read_ops): Likewise.
19116         (get_asm_expr_operands): Likewise.
19117         * tree-into-ssa.c (dump_decl_set): Likewise.
19118         (update_ssa): Likewise.
19119         * tree-sra.c (scan_function): Likewise.
19120         (decide_instantiations): Likewise.
19121         (scalarize_parms): Likewise.
19122         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
19123         (dsa_named_for): Likewise.
19124         * tree-ssa-structalias.c (update_alias_info): Likewise.
19125         (merge_smts_into): Likewise.
19126
19127 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
19128
19129         PR target/35258
19130         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
19131         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
19132         * alias.h (nonoverlapping_memrefs_p): Likewise.
19133
19134 2008-02-25  Jan Beulich  <jbeulich@novell.com>
19135
19136         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
19137         * config/i386/netware-libgcc.exp: Add __bswap?i2,
19138         __emultls_get_address, __emultls_register_common,
19139         __floatundi?f, and _Unwind_GetIPInfo.
19140         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
19141         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
19142         (gen_regparm_prefix): Likewise.
19143         (i386_nlm_encode_section_info): Sync with
19144         config/i386/winnt.c:i386_pe_encode_section_info().
19145         (i386_nlm_maybe_mangle_decl_assembler_name): New.
19146         i386_nlm_mangle_decl_assembler_name): New.
19147         (netware_override_options): New.
19148         * config/i386/netware.h (netware_override_options): Declare.
19149         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
19150         (i386_nlm_mangle_decl_assembler_name): Declare.
19151         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
19152
19153 2008-02-25  Ben Elliston  <bje@au.ibm.com>
19154
19155         PR other/32948
19156         * c-decl.c (grokdeclarator): Remove unused local variables
19157         `typedef_type' and `type_as_written'.
19158         * bb-reorder.c
19159         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
19160         unused local variable `has_hot_blocks'.
19161         (fix_crossing_conditional_branches): Remove unused local variable
19162         `prev_bb'.
19163
19164 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
19165
19166         PR middle-end/19984
19167         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
19168         using DEF_C99_BUILTIN.
19169         (BUILT_IN_NANF): Ditto.
19170         (BUILT_IN_NANL): Ditto.
19171
19172 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
19173             Revital Eres  <eres@il.ibm.com>
19174
19175         * modulo-sched.c (calculate_must_precede_follow): Address TODO
19176         regarding the order of two dependent insns in the same row.
19177
19178 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
19179
19180         * stor-layout.c (layout_decl): Do not bump the alignment of a
19181         bit-field to more than byte alignment if it is packed.
19182
19183 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
19184
19185         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
19186         e300c2 and e300c3.
19187
19188 2008-02-24  Diego Novillo  <dnovillo@google.com>
19189
19190         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
19191
19192         PR 33738
19193         * tree-vrp.c (vrp_evaluate_conditional): With
19194         -Wtype-limits, emit a warning when comparing against a
19195         constant outside the natural range of OP0's type.
19196         * c.opt (Wtype-limits): Move ...
19197         * common.opt (Wtype-limits): ... here.
19198
19199 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
19200
19201         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
19202         * config/rs6000/e300c2c3.md: New file.
19203         * config/rs6000/rs6000.c (processor_costs): Add new costs for
19204         e300c2 and e300c3.
19205         (rs6000_override_options): Add e300c2 and e300c3 cases to
19206         processor_target_table. Do not allow usage of Altivec or Spe
19207         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
19208         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
19209         * config/rs6000/rs6000.h (processor_type): Add
19210         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
19211         (ASM_CPU_SPEC): Add e300c2 and e300c3.
19212         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
19213         and ppce300c3. Include e300c2c3.md.
19214
19215 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
19216
19217         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
19218         instead of TARGET_STRICT_ALIGN.
19219
19220 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
19221
19222         * explow.c (memory_address): Assert that the generated address is
19223         valid.
19224
19225 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
19226
19227         PR target/25477
19228         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
19229         * config/darwin-ppc-ldouble-patch.def: New file.
19230         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
19231         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
19232         SUBTARGET_INIT_BUILTINS if defined.
19233         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
19234         New functions.
19235
19236 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19237
19238         PR rtl-opt/33512
19239         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
19240         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
19241
19242 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19243
19244         PR pch/35027
19245         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
19246         file" warning condtional on -Winvalid-PCH.
19247
19248 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
19249
19250         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
19251
19252 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
19253
19254         PR target/22076
19255         PR target/34256
19256         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
19257         prevent reload from using MMX registers.
19258         (*mov<mode>_internal): Ditto.
19259         (*movv2sf_internal_rex64): Ditto.
19260         (*movv2sf_internal): Ditto.
19261
19262 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19263
19264         PR documentation/31569
19265         * doc/install.texi2html: Use makeinfo --no-number-sections.
19266
19267 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
19268
19269         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
19270         ensure that we can address an entire entity > 8 bytes.  Don't
19271         generate reg+reg addressing for such data.
19272
19273 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
19274
19275         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
19276         strings when optimizing for size, unless the target cares about
19277         alignment.
19278
19279 2008-02-22  Tom Tromey  <tromey@redhat.com>
19280
19281         * regclass.c (current_pass): Remove declaration.
19282
19283 2008-02-22  Anatoly Sokolov <aesok@post.ru>
19284
19285         * config/avr/libgcc.S (__RAMPZ__): Define.
19286         (__do_copy_data): Add for devices with 128KB code memory.
19287
19288 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
19289
19290         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
19291         Use spe_abi.
19292         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
19293
19294 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
19295
19296         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
19297         GENNONACR_REGS.
19298
19299 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19300
19301         PR c/19999
19302         * c-typeck.c (build_binary_op): Warn about floating point
19303         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
19304
19305 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
19306
19307         PR target/34526
19308         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
19309         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
19310         add vrsave.
19311         (rs6000_override_options): Set altivec_abi as default, not override,
19312         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
19313         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
19314         is used; use new member spe_abi.
19315         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
19316         spe_abi and altivec_abi.
19317
19318 2008-02-22  Tomas Bily  <tbily@suse.cz>
19319
19320         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
19321
19322 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19323
19324         PR bootstrap/35273
19325         * config.build (build_file_translate): Set to `CMD //c' only if
19326         it works.
19327         * Makefile.in (build_file_translate): Improve comment.
19328
19329 2008-02-21  Jan Hubicka  <jh@suse.cz>
19330
19331         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
19332         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
19333         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
19334
19335 2008-02-21  Michael Matz  <matz@suse.de>
19336
19337         PR target/35264
19338         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
19339
19340 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
19341
19342         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
19343         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
19344         as insn constraint.
19345         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
19346         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
19347         SSE_VEC_FLOAT_MODE_P as insn constraint.
19348         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
19349         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
19350         sse4a_movntdf using MODEF mode iterator.
19351         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
19352         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
19353         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
19354         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
19355         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
19356         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
19357         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
19358
19359 2008-02-21  Richard Guenther  <rguenther@suse.de>
19360
19361         * tree.def (PAREN_EXPR): New tree code.
19362         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
19363         and PAREN_EXPR.
19364         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
19365         * expr.c (expand_expr_real_1): Likewise.
19366         * tree-inline.c (estimate_num_insns_1): Likewise.
19367         * tree-complex.c (expand_complex_move): Likewise.
19368         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
19369         as plain x.
19370
19371 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
19372
19373         PR target/35225
19374         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
19375
19376 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
19377
19378         PR target/35190
19379         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
19380
19381         * config/sh/sh.c (find_barrier): Don't go past
19382         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
19383
19384 2008-02-20  DJ Delorie  <dj@redhat.com>
19385
19386         * config/h8300/h8300.md (insv): Force source operand to be a register.
19387
19388         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
19389         as a jump, not as a plain insn.
19390
19391 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
19392
19393         * doc/invoke.texi (Warning Options): Add new option
19394         -Wframe-larger-than=.
19395         (-Wframe-larger-than): Document.
19396
19397         * flags.h (warn_frame_larger_than, frame_larger_than_size):
19398         Add declarations for new option variables.
19399
19400         * final.c (final_start_function): Check the frame size
19401         before emission and issue a Wframe-larger-than warning.
19402
19403         * opts.c (warn_frame_larger_than, frame_larger_than_size):
19404         Add definitions for new option variables.
19405         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
19406
19407         * common.opt (Wframe-larger-than=): New option.
19408
19409 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
19410
19411         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
19412         (<sse>_div<mode>3): Ditto.
19413         (<sse>_vmdiv<mode>3): Ditto.
19414         (<sse>_vmsqrt<mode>2): Ditto.
19415         (*smax<mode>3): Ditto.
19416         (sse5_frcz<mode>2): Ditto.
19417         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
19418         as insn constraint.
19419
19420 2008-02-20  Richard Guenther  <rguenther@suse.de>
19421
19422         PR middle-end/35265
19423         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
19424         be happy with INTEGRAL_TYPE_P.
19425
19426 2008-02-20  Richard Guenther  <rguenther@suse.de>
19427
19428         * fold-const.c (split_tree): Associate floatig-point expressions
19429         if flag_associative_math is set.
19430
19431 2008-02-20  Richard Guenther  <rguenther@suse.de>
19432
19433         * tree.h (fold_real_zero_addition_p): Declare.
19434         * fold-const.c (fold_real_zero_addition_p): Export.
19435         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
19436         floating-point operations with zero and one.
19437
19438 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
19439
19440         * doc/install.texi: Correct references to CFLAGS, replacing them
19441         with BOOT_CFLAGS.  Document flags used during bootstrap for
19442         target libraries.
19443
19444 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
19445
19446         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
19447         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
19448         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
19449         insn constraint.
19450         (smin<mode>3): Ditto from similar patterns.
19451         (smax<mode>3): Ditto.
19452         (*ieee_smin<mode>3): Ditto.
19453         (*ieee_smax<mode>3): Ditto.
19454         * config/i386/sse.md (sse): New mode attribute.
19455         (mov<mode>): Macroize expander from movv4sf and movv2df using
19456         SSEMODEF2P mode iterator.
19457         (<sse>_movnt<mode>): Ditto from similar patterns. Use
19458         SSE_VEC_FLOAT_MODE_P as insn constraint.
19459         (storent<mode>): Ditto.
19460         (storent<mode>): Macroize expander from storentsf and storentdf using
19461         MODEF mode iterator.
19462         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
19463         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
19464         (abs<mode>2): Ditto from similar patterns.
19465         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
19466         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
19467         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
19468         (<sse>_vmsqrt<mode>2): Ditto.
19469         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
19470         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
19471         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
19472         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
19473         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
19474         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
19475         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
19476         insn constraint.
19477         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
19478         iterator and SSE_FLOAT_MODE_P as insn constraint.
19479         (<sse>_ucomi): Ditto from similar patterns.
19480         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
19481         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
19482         SSE_VEC_FLOAT_MODE_P as insn constraint.
19483         (vcond<mode>): Ditto from similar patterns.
19484         (and<mode>3, *and<mode>3): Ditto.
19485         (<sse>_nand<mode>3): Ditto.
19486         (ior<mode>3, *ior<mode>3): Ditto.
19487         (xor<mode>3, *xor<mode>3): Ditto.
19488         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
19489         iterator and SSE_FLOAT_MODE_P as insn constraint.
19490         (*nand<mode>3): Ditto from similar patterns.
19491         (*ior<mode>3): Ditto.
19492         (*xor<mode>3): Ditto.
19493
19494 2008-02-20  Ira Rosen  <irar@il.ibm.com>
19495
19496         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
19497         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
19498         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
19499
19500 2008-02-19  Jan Hubicka  <jh@suse.cz>
19501
19502         * predict.c (tree_bb_level_predictions): Remove variable next
19503         mistakely introduced by previous commit.
19504
19505 2008-02-19  Jan Hubicka  <jh@suse.cz>
19506
19507         * predict.c (predict_paths_leading_to): Rewrite.
19508         (predict_paths_for_bb): New.
19509         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
19510
19511 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19512
19513         PR bootstrap/35218
19514         * Makefile.in (build_file_translate): New.
19515         (gcc-vers.texi): Use it for translating $(abs_srcdir).
19516         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
19517         * configure.ac (build_file_translate): Substitute it.
19518         * configure: Regenerate.
19519
19520 2008-02-19  Jan Hubicka  <jh@suse.cz>
19521
19522         PR rtl-optimization/34408
19523         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
19524         invalid sharing.
19525
19526 2008-02-19  Jan Hubicka  <jh@suse.cz>
19527
19528         PR middle-end/28779
19529         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
19530         call_expr.
19531
19532 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
19533
19534         PR Ada/35186
19535         * config/i386/i386-modes.def: Revert the last DI alignment
19536         change until Ada people can look into it.
19537
19538 2008-02-19  Nick Clifton  <nickc@redhat.com>
19539
19540         * opts.c (print_specific_help): Fix typo in --help text.
19541
19542 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
19543
19544         PR target/35239
19545         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
19546         32-bit inline asm without asm alternatives for host GCC < 3.0.
19547
19548 2008-02-19  Richard Guenther  <rguenther@suse.de>
19549
19550         PR tree-optimization/34989
19551         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
19552         Allow propagation to INDIRECT_REF if we can simplify only.
19553
19554 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19555
19556         * c-common.c (warn_for_collisions_1): Use appropriate option when
19557         warning.
19558
19559 2008-02-19  Nick Clifton  <nickc@redhat.com>
19560
19561         PR other/31349
19562         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
19563         (handle_options): Fix indentation.
19564         (print_filtered_help): If no language-specific options were
19565         displayed tell the user how to list all the options supported by
19566         the language's front-end.
19567         (print_specific_help): Fix indentation and remove duplicate line.
19568         (common_handle_option): Handle the -v option.
19569         For --help enable the display of undocumented options if the -v
19570         switch has been included on the command line.
19571         For --help= check for overlaps in the arguments between the option
19572         classes and the language names and issue a warning when they
19573         cannot be disambiguated.
19574         * c.opt (v): Pass on to the common option handler.
19575
19576 2008-02-19  Revital Eres  <eres@il.ibm.com>
19577
19578         * modulo-sched.c (sms_schedule): Change dump message when
19579         create_ddg function fails.
19580         (try_scheduling_node_in_cycle): Rename row to cycle.
19581         (print_partial_schedule): Rename CYCLE to ROW.
19582
19583 2008-02-19  Christian Bruel  <christian.bruel@st.com>
19584             Zdenek Dvorak  <ook@ucw.cz>
19585
19586         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
19587
19588 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
19589
19590         PR target/33555
19591         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
19592         (*x86_movdicc_0_m1_se): Ditto.
19593
19594 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
19595
19596         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
19597         (CMPtype): Define as __gcc_CMPtype.
19598         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
19599         (CMPtype): Define as __gcc_CMPtype.
19600
19601 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
19602
19603         Support valgrind 3.3 for --enable-checking=valgrind.
19604         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
19605         here.
19606         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
19607         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
19608         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
19609         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
19610         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
19611         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
19612         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
19613         respectively.
19614         * ggc-zone.c: Similar.
19615         * ggc-page.c: Similar.
19616
19617 2008-02-19  Paul Brook  <paul@codesourcery.com>
19618
19619         PR target/35071
19620         * config/arm/ieee754-df.S: Fix do_it typo.
19621         * config/arm/ieee754-sf.S: Fix do_it typo.
19622
19623 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
19624
19625         PR target/35189
19626         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
19627         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
19628         (OPTION_MASK_ISA_SSE_SET): Likewise.
19629         (OPTION_MASK_ISA_SSE2_SET): Likewise.
19630         (OPTION_MASK_ISA_SSE3_SET): Likewise.
19631         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
19632         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
19633         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
19634         (OPTION_MASK_ISA_SSE4_SET): Likewise.
19635         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
19636         (OPTION_MASK_ISA_SSE5_SET): Likewise.
19637         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
19638         (OPTION_MASK_ISA_MMX_UNSET): Updated.
19639         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
19640         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
19641         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
19642         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
19643         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
19644         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
19645         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
19646         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
19647         (OPTION_MASK_ISA_SSE4): Removed.
19648         (ix86_handle_option): Turn on bits in ix86_isa_flags and
19649         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
19650         (override_options): Don't turn on implied SSE/MMX bits in
19651         ix86_isa_flags.
19652
19653 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
19654
19655         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
19656         32bit host.
19657
19658 2008-02-18  Joey Ye  <joey.ye@intel.com>
19659
19660         PR middle-end/34921
19661         * tree-nested.c (insert_field_into_struct): Set type alignment
19662         to field alignment if the former is less than the latter.
19663
19664 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
19665
19666         * BASE-VER: Set to 4.4.0.
19667
19668 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
19669
19670         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
19671         * doc/cfg.texi: Likewise.
19672         * doc/extend.texi: Likewise.
19673         * doc/gty.texi: Likewise.
19674         * doc/invoke.texi: Likewise.
19675         * doc/loop.texi: Likewise.
19676         * doc/md.texi: Likewise.
19677         * doc/passes.texi: Likewise.
19678         * doc/rtl.texi: Likewise.
19679         * doc/sourcebuild.texi: Likewise.
19680         * doc/tm.texi: Likewise.
19681         * doc/tree-ssa.texi: Likewise.
19682
19683 2008-02-17  Richard Guenther  <rguenther@suse.de>
19684
19685         PR middle-end/35227
19686         * tree-complex.c (init_parameter_lattice_values): Handle parameters
19687         without default definition.
19688
19689 2008-02-17  Richard Guenther  <rguenther@suse.de>
19690
19691         PR tree-optimization/35231
19692         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
19693         if A | B != 1.
19694
19695 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
19696
19697         Revert:
19698         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
19699         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
19700         libgcc_cmp_return mode.
19701
19702 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19703
19704         PR c/28368
19705         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
19706
19707 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
19708
19709         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
19710         multilibs.
19711
19712 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19713
19714         * doc/c-tree.texi: Use `@.' where appropriate.
19715         * doc/extend.texi: Likewise.
19716         * doc/install.texi: Likewise.
19717         * doc/invoke.texi: Likewise.
19718         * doc/loop.texi: Likewise.
19719         * doc/makefile.texi: Likewise.
19720         * doc/md.texi: Likewise.
19721         * doc/passes.texi: Likewise.
19722         * doc/standards.texi: Likewise.
19723         * doc/tm.texi: Likewise.
19724
19725 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
19726
19727         PR middle-end/35196
19728         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
19729         in entry_bb.
19730         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
19731         rather than in entry_bb.
19732
19733 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
19734
19735         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
19736         libgcc_cmp_return mode.
19737
19738 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
19739
19740         PR middle-end/35130
19741         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
19742         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
19743
19744 2008-02-15  Richard Guenther  <rguenther@suse.de>
19745             Zdenek Dvorak  <ook@ucw.cz>
19746
19747         PR tree-optimization/35164
19748         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
19749         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
19750         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
19751         Only propagate addresses which do not have abnormal SSA_NAMEs
19752         in their operands.
19753
19754 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
19755
19756         PR target/35088
19757         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
19758
19759 2008-02-15  Jan Hubicka  <jh@suse.cz>
19760
19761         PR middle-end/35149
19762         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
19763
19764 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
19765
19766         PR middle-end/34621
19767         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
19768         when calculating alignment_pad.
19769
19770 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
19771
19772         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
19773         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
19774         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
19775         and STACK_BOUNDARY define.
19776
19777 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
19778
19779         PR preprocessor/35061
19780         * c-pragma.c (handle_pragma_pop_macro): Check that
19781         pushed_macro_table has been allocated.
19782
19783 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
19784
19785         PR middle-end/35136
19786         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
19787         (force_gimple_operand): Likewise.
19788         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
19789         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
19790         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
19791         (find_interesting_uses_address): Check addressability and alignment
19792         of the base expression only after substituting bases of IVs into it.
19793
19794 2008-02-14  Michael Matz  <matz@suse.de>
19795
19796         PR target/34930
19797         * function.c (instantiate_virtual_regs_in_insn): Reload address
19798         before falling back to reloading the whole operand.
19799
19800 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
19801
19802         * config/s390/s390.c (s390_mainpool_start): Emit the pool
19803         before the first section switch note.
19804
19805 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
19806
19807         * doc/bugreport.texi: Update copyright years.
19808         * doc/c-tree.texi: Likewise.
19809         * doc/cfg.texi: Likewise.
19810         * doc/cpp.texi: Likewise.
19811         * doc/cppinternals.texi: Likewise.
19812         * doc/fragments.texi: Likewise.
19813         * doc/frontends.texi: Likewise.
19814         * doc/gcc.texi: Likewise.
19815         * doc/gty.texi: Likewise.
19816         * doc/hostconfig.texi: Likewise.
19817         * doc/implement-c.texi: Likewise.
19818         * doc/libgcc.texi: Likewise.
19819         * doc/loop.texi: Likewise.
19820         * doc/makefile.texi: Likewise.
19821         * doc/options.texi: Likewise.
19822         * doc/passes.texi: Likewise.
19823         * doc/rtl.texi: Likewise.
19824         * doc/sourcebuild.texi: Likewise.
19825         * doc/standards.texi: Likewise.
19826         * doc/tree-ssa.texi: Likewise.
19827         * doc/trouble.texi: Likewise.
19828
19829         * doc/extend.texi: Use @: or add comma where appropriate.
19830         * doc/invoke.texi: Likewise.
19831         * doc/tm.texi: Likewise.
19832
19833 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
19834
19835         PR target/34393
19836         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
19837         to a reg.
19838
19839 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
19840
19841         * doc/md.texi (clz, ctz): Add reference.
19842         * doc/rtl.texi (clz, ctz): Likewise.
19843
19844 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19845
19846         PR other/35148
19847         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
19848         srcdir.
19849
19850 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
19851
19852         * config/s390/s390.c (struct constant_pool): New field
19853         emit_pool_after added.
19854         (s390_mainpool_start): Set the emit_pool_after flag according
19855         to the section switch notes.
19856         (s390_mainpool_finish): Consider emit_pool_after when emitting
19857         the literal pool at the end of the function.
19858         (s390_chunkify_start): Force literal pool splits at section
19859         switch notes.
19860
19861 2008-02-13  Michael Matz  <matz@suse.de>
19862
19863         PR debug/35065
19864         * var-tracking.c (clobber_variable_part): Correctly traverse the
19865         list.
19866
19867 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19868
19869         PR 29673
19870         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
19871         Add -fdump-ipa-inline.
19872         * tree-dump.c (dump_files): Remove tree-inlined dump.
19873         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
19874
19875 2008-02-12  Richard Guenther  <rguenther@suse.de>
19876
19877         PR tree-optimization/35171
19878         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
19879         default defs.
19880
19881 2008-02-12  Richard Guenther  <rguenther@suse.de>
19882
19883         PR middle-end/35163
19884         * fold-const.c (fold_widened_comparison): Use get_unwidened in
19885         value-preserving mode.  Disallow final truncation.
19886
19887 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
19888
19889         PR middle-end/35136
19890         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
19891         code from here to...
19892         (force_gimple_operand): ...here.
19893
19894 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
19895
19896         PR c++/35144
19897         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
19898         non-compatible pointers.
19899         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
19900         different FIELD_DECLs, try harder by comparing field offsets, sizes
19901         and types.
19902
19903         PR inline-asm/35160
19904         * function.c (match_asm_constraints_1): Don't replace the same input
19905         multiple times.
19906
19907 2008-02-12  Anatoly Sokolov <aesok@post.ru>
19908
19909         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
19910         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
19911         (expand_epilogue): Restore RAMPZ register.
19912         * config/avr/avr.md (RAMPZ_ADDR): New constant.
19913
19914 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
19915
19916         * config/i386/cygwin.asm: (__alloca): Correct calling
19917         convention and alignment.
19918         (__chkstk): Force 8 byte stack alignment.
19919
19920 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
19921             Richard Guenther  <rguenther@suse.de>
19922
19923         PR tree-optimization/33992
19924         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
19925         the zero we compare against.
19926
19927 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
19928
19929         PR libfortran/35063
19930         * gthr-win32.h (__gthread_mutex_destroy_function): New function
19931         to CloseHandle after unlocking to prevent accumulation of handle
19932         count.
19933
19934 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19935
19936         PR middle_end/34150
19937         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
19938         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
19939         and update LABEL_NUSES during and after reload.
19940
19941 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
19942
19943         PR middle-end/34627
19944         * combine.c (simplify_if_then_else): Make sure the comparison is
19945         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
19946
19947 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
19948
19949         PR bootstrap/35051
19950         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
19951         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
19952         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
19953         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
19954         * tree.h (get_type_static_bounds): Likewise.
19955
19956 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19957
19958         * doc/invoke.texi (Option Summary, C++ Dialect Options)
19959         (Objective-C and Objective-C++ Dialect Options, Warning Options):
19960         Make -Wfoo language annotations match what the compiler outputs.
19961
19962 2008-02-08  Sa Liu  <saliu@de.ibm.com>
19963
19964         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
19965         intrinsics spu_convts, spu_convtu, spu_convtf.
19966
19967 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
19968
19969         * doc/extend.texi (Function Attributes) <noinline>: Mention
19970         asm ("") as method to keep calls.
19971
19972 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19973
19974         PR other/32754
19975         * doc/options.texi (Options): Replace references to opts.sh with
19976         optc-gen.awk.
19977         * opts-common.c: Likewise.
19978         * optc-gen.awk: Likewise.
19979
19980 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
19981
19982         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
19983
19984 2008-02-07  Richard Henderson  <rth@redhat.com>
19985
19986         PR rtl-opt/33410
19987         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
19988         EXPR_LIST for the REG_EQUAL instead of a comparison with a
19989         funny mode.
19990
19991 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
19992
19993         PR tree-optimization/35085
19994         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
19995         for operand entry oe2 in addition to operand entry oe3 in order to
19996         expose more opportunities for vectorizer sum reduction.
19997
19998 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19999
20000         PR other/35107
20001         * Makefile.in (LIBS): Remove $(GMPLIBS).
20002         (cc1-dummy, cc1): Add $(GMPLIBS).
20003
20004 2008-02-06  Jan Hubicka  <jh@suse.cz>
20005
20006         PR target/23322
20007         * i386.md (moddf_integer): Do not produce partial memory stalls for
20008         targets where it hurts.
20009
20010 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
20011
20012         PR target/35083
20013         * optabs.c (expand_float): Do not check for decimal modes when
20014         expanding unsigned integer through signed conversion.
20015
20016 2008-02-06  Nick Clifton  <nickc@redhat.com>
20017
20018         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
20019         inside the clobber with a match_operand and duplicated operand
20020         number in the constraint.
20021         (ineqbranchsi): Delete redundant comment.
20022
20023 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
20024
20025         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
20026         builtin_define ("__USE_INIT_FINI__").
20027         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
20028         -msx multilibs.
20029         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
20030
20031 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20032
20033         PR documentation/30330
20034         * doc/invoke.texi (C++ Dialect Options)
20035         (Objective-C and Objective-C++ Dialect Options, Warning Options):
20036         For each warning option -Wfoo that allows -Wno-foo, ensure both
20037         -Wfoo and -Wno-foo are listed in the option index.  Fix index
20038         entry of -Wswitch-default, index -Wnormalized= including the
20039         `=', and -Wlarger-than-@var{len} including @var{len}.
20040
20041 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
20042
20043         * config/i386/i386.md (floatunssisf2): Use
20044         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
20045         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
20046         Macroize expander using MODEF mode iterator.
20047
20048 2008-02-05  Diego Novillo  <dnovillo@google.com>
20049
20050         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
20051
20052         PR 33738
20053         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
20054
20055 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20056
20057         PR other/35070
20058         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
20059
20060 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
20061
20062         PR target/35084
20063         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
20064         to indicate if a message should be generated.
20065         (init_cumulative_args): Updated.
20066         (function_value_32): Likewise.
20067
20068 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
20069
20070         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
20071
20072 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
20073
20074         PR target/35083
20075         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
20076         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
20077
20078 2008-02-04  Diego Novillo  <dnovillo@google.com>
20079
20080         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
20081
20082         PR 33738
20083         * tree-vrp.c (vrp_evaluate_conditional): With
20084         -Wtype-limits, emit a warning when comparing against a
20085         constant outside the natural range of OP0's type.
20086
20087 2008-02-04  Richard Guenther  <rguenther@suse.de>
20088
20089         PR middle-end/33631
20090         * expr.c (count_type_elements): Give for unions instead of
20091         guessing.
20092
20093 2008-02-04  Richard Guenther  <rguenther@suse.de>
20094
20095         PR middle-end/35043
20096         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
20097         to TYPE_DOMAINs base type instead of using bitsizetype here.
20098
20099 2008-02-03  Jason Merrill  <jason@redhat.com>
20100
20101         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
20102
20103 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20104
20105         PR other/29972
20106         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
20107         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
20108         (RS/6000 and PowerPC Options): Fix typos and markup.
20109         * doc/passes.texi (Tree-SSA passes): Likewise.
20110
20111 2008-02-02  Michael Matz  <matz@suse.de>
20112
20113         PR target/35045
20114         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
20115         from record_last_reg_set_info.
20116         (record_last_reg_set_info): Take an RTX argument, iterate over all
20117         constituent hardregs.
20118         (record_last_set_info, record_opr_changes): Change calls to
20119         new signature or to record_last_reg_set_info_regno.
20120
20121 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
20122
20123         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
20124
20125 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
20126
20127         PR rtl-optimization/34773
20128         * reg-notes.def (EQUAL): Mention significance of combination of
20129         REG_EQUAL and REG_RETVAL.
20130         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
20131         insn that has a REG_RETVAL.
20132
20133 2008-02-01  Roger Sayle  <roger@eyesopen.com>
20134
20135         PR bootstrap/33781
20136         * configure.ac (--enable-fixed-point): Disable unless explicitly
20137         requested on IRIX.
20138         * configure: Regenerate.
20139
20140 2008-02-01  Richard Guenther  <rguenther@suse.de>
20141
20142         PR other/35042
20143         * invoke.texi (-finline-limit): Remove no longer true parts
20144         of the documentation.  Note that there is no default value.
20145
20146 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
20147             Mark Mitchell  <mark@codesourcery.com>
20148             Ben Elliston  <bje@au.ibm.com>
20149
20150         PR c/29326
20151         * doc/extend.texi (Other Builtins): Document.
20152
20153 2008-01-31  Tom Browder <tom.browder@gmail.com>
20154
20155         * doc/c-tree.texi (Types): Fix grammar.
20156         (Expression trees): Ditto.
20157         * doc/passes.texi (Tree-SSA passes): Ditto.
20158
20159         * doc/configterms.texi (Configure Terms): Fix typo.
20160         * doc/cpp.texi (Common Predefined Macros): Ditto.
20161         * doc/md.texi (Machine Constraints): Ditto.
20162
20163         * doc/makefile.texi (Makefile): Add comma.
20164
20165 2008-01-31  Tom Browder  <tom.browder@gmail.com>
20166             Gerald Pfeifer  <gerald@pfeifer.com>
20167
20168         * doc/sourcebuild.texi (Front End): Remove references to CVS
20169         and CVSROOT/modules.
20170         (Texinfo Manuals): Replace reference to CVS by one to SVN.
20171         (Back End): Remove reference to CVS.
20172
20173 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
20174
20175         PR target/34900
20176         * config/mips/mips.c (gen_load_const_gp): New function, taking a
20177         comment from...
20178         (mips16_gp_pseudo_reg): ...here.
20179         * config/mips/mips.md (load_const_gp): Replace with...
20180         (load_const_gp_<mode>): ...this :P-based insn.
20181
20182 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20183
20184         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
20185         options. Minor fixes.
20186         (-std): Move reference to standards closer to where language
20187         standards are first mentioned.
20188
20189 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
20190
20191         PR rtl-optimization/34995
20192         * reload.c (alternative_allows_const_pool_ref): Take an rtx
20193         parameter and return a bool.  If the rtx parameter is nonnull,
20194         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
20195         (find_reloads): Update call accordingly.  Pass the new operand
20196         if it needed no address reloads, otherwise pass null.
20197
20198 2008-01-30  Richard Henderson  <rth@redhat.com>
20199
20200         PR c/34993
20201         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
20202         for unbounded arrays.
20203
20204 2008-01-30  Silvius Rus  <rus@google.com>
20205
20206         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
20207
20208 2008-01-30  Jan Hubicka  <jh@suse.cz>
20209
20210         PR target/34982
20211         * i386.c (init_cumulative_args): Use real function declaration when
20212         calling locally.
20213
20214 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
20215
20216         PR rtl-optimization/34998
20217         * global.c (build_insn_chain): Treat non-subreg_lowpart
20218         SUBREGs of pseudos as clobbering all the words covered by the
20219         SUBREG, not just all the bytes.
20220         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
20221         original df_ref rather than an extract parameter.
20222         (global_conflicts): Update call accordingly.
20223
20224 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
20225
20226         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
20227         the overflow check to make it easier to read.
20228         (__fixtfdi): Change the type of the ll member in union
20229         long_double to UDItype_x.
20230
20231 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
20232
20233         PR middle-end/34969
20234         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
20235         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
20236         * tree-inline.c (fold_marked_statements): Call
20237         cgraph_update_edges_for_call_stmt if folding a call statement.
20238         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
20239         debug_generic_stmt calls, reset it back afterwards.
20240
20241         PR c/35017
20242         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
20243         static decls.
20244         * c-typeck.c (build_external_ref): Don't pedwarn about
20245         static vars in current function's scope.
20246
20247 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
20248
20249         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
20250
20251 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
20252
20253         PR c/35002
20254         * ipa-struct-reorg.c: Fix spelling.
20255         * params.def: Ditto.
20256
20257 2008-01-29  Richard Guenther  <rguenther@suse.de>
20258
20259         PR middle-end/35006
20260         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
20261         field.
20262         * tree-inline.c (remap_type): Increment remapping_type_depth
20263         around remapping types.
20264         (copy_body_r): Only add referenced variables if they are referenced
20265         from code, not types.
20266
20267 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
20268
20269         PR c++/34055
20270         PR c++/34103
20271         PR c++/34219
20272         PR c++/34606
20273         PR c++/34753
20274         PR c++/34754
20275         PR c++/34755
20276         PR c++/34919
20277         PR c++/34961
20278         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
20279         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
20280
20281 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
20282
20283         PR target/34412
20284         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
20285         pointer for tiny stack.
20286
20287 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
20288
20289         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
20290
20291 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
20292
20293         * config/vx-common.h: Fix typo in comment.
20294
20295 2008-01-28  Ian Lance Taylor  <iant@google.com>
20296
20297         PR c++/34862
20298         PR c++/33407
20299         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
20300         coalesce pointers if they have different DECL_NO_TBAA_P values.
20301         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
20302         between variables with different DECL_NO_TBAA_P values.
20303
20304 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
20305
20306         PR 31535
20307         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
20308         are not legitimate small data references on SPE targets.
20309
20310 2008-01-28  David Daney  <ddaney@avtrex.com>
20311
20312         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
20313
20314 2008-01-28  David Daney  <ddaney@avtrex.com>
20315
20316         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
20317
20318 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
20319
20320         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
20321         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
20322         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
20323         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
20324         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
20325         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
20326         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
20327         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
20328
20329 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
20330
20331         * basic-block.h (condjump_equiv_p): Fix comment.
20332
20333 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
20334
20335         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
20336         print_generic_stmt_indented): Fix comment.
20337
20338 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
20339
20340         * configure.ac (__stack_chk_fail): Add detecion for availability
20341         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
20342         * configure: Regenerate.
20343
20344 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
20345
20346         PR middle-end/34688
20347         * final.c (output_addr_const): Handle TRUNCATE.
20348
20349 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
20350
20351         PR target/34711
20352         * tree-ssa-loop-ivopts.c (comp_cost): New type.
20353         (zero_cost, infinite_cost): New constants.
20354         (struct cost_pair): Change type of cost to comp_cost.
20355         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
20356         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
20357         New functions.
20358         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
20359         split_address_cost, ptr_difference_cost, difference_cost,
20360         get_computation_cost_at, get_computation_cost,
20361         determine_use_iv_cost_generic, determine_use_iv_cost_address,
20362         determine_use_iv_cost_condition, determine_use_iv_costs,
20363         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
20364         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
20365         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
20366         Change type of cost to comp_cost.
20367         (determine_iv_cost): Increase cost of non-original ivs, instead
20368         of decreasing the cost of original ones.
20369         (get_address_cost): Indicate the complexity of the addressing mode
20370         in comp_cost.
20371         (try_add_cand_for): Prefer using ivs not specific to some object.
20372         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
20373
20374 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
20375             Janis Johnson  <janis187@us.ibm.com>
20376
20377         PR target/34814
20378         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
20379         (TARGET_INSTANTIATE_DECLS): Likewise.
20380         * target.h (expand_to_rtl_hook): New target hook.
20381         (instantiate_decls): Likewise.
20382         * function.c (instantiate_decl): Make non-static.  Rename to...
20383         (instantiate_decl_rtl): ... this.
20384         (instantiate_expr): Use instantiate_decl_rtl.
20385         (instantiate_decls_1): Likewise.
20386         (instantiate_decls): Likewise.
20387         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
20388         * function.h (instantiate_decl_rtl): Add prototype.
20389         * cfgexpand.c (target.h): New include.
20390         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
20391         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
20392         (TARGET_INSTANTIATE_DECLS): Likewise.
20393         (TARGET_INITIALIZER): New target hooks added.
20394         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
20395         New prototype.
20396         * config/rs6000/rs6000.c (tree-flow.h): New include.
20397         (machine_function): Add sdmode_stack_slot field.
20398         (rs6000_alloc_sdmode_stack_slot): New function.
20399         (rs6000_instantiate_decls): Likewise.
20400         (rs6000_secondary_memory_needed_rtx): Likewise.
20401         (rs6000_check_sdmode): Likewise.
20402         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
20403         (TARGET_INSTANTIATE_DECLS): Likewise.
20404         (rs6000_hard_regno_mode_ok): Allow SDmode.
20405         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
20406         (rs6000_emit_move): Handle SDmode.
20407         (function_arg_advance): Likewise.
20408         (function_arg): Likewise.
20409         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
20410         SDmode var args for 32-bit compiles.
20411         (rs6000_secondary_reload_class): Handle SDmode.
20412         (rs6000_output_function_epilogue): Likewise.
20413         (rs6000_function_value): Simplify if statement.
20414         (rs6000_libcall_value): Likewise.
20415         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
20416         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
20417         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
20418         (movsd_hardfloat): New define_insn.
20419         (movsd_softfloat): Likewise.
20420         (movsd_store): Likewise.
20421         (movsd_load): Likewise.
20422         (extendsddd2): Likewise.
20423         (extendsdtd2): Likewise.
20424         (truncddsd2): Likewise.
20425         (movdd_hardfloat64): Fixup comment.
20426         (UNSPEC_MOVSD_LOAD): New constant.
20427         (UNSPEC_MOVSD_STORE): Likewise.
20428
20429 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
20430
20431         PR c++/34965
20432         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
20433         TRUTH_XOR_EXPR.
20434         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
20435         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
20436         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
20437         and TRUTH_XOR_EXPR.
20438
20439 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
20440
20441         PR target/34794
20442         * config.gcc: Separate AIX 5.3 from AIX 6.1.
20443         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
20444         __LONGDOUBLE128 too.
20445         * config/rs6000/aix61.h: New file.
20446
20447 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
20448
20449         PR rtl-optimization/34959
20450         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
20451         popcount and parity rtxes the same mode as their operand.
20452         Truncate or extend the result to the return value's mode
20453         if necessary.
20454
20455 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
20456
20457         PR target/34981
20458         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
20459         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
20460         to GOT_VERSION_REGNUM.
20461         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
20462         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
20463         * config/mips/mips.c (mips_emit_call_insn): New function.
20464         (mips_call_tls_get_addr): Call mips_expand_call directly.
20465         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
20466         emit_call_insn.
20467         (mips16_build_call_stub): Likewise.  Return the call insn or null.
20468         (mips_expand_call): Update the call to mips16_build_call_stub
20469         accordingly and a remove redundant condition.  Assert that MIPS16
20470         stubs do not use lazy binding.  Use mips_emit_call_insn and return
20471         the call insn.
20472         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
20473         TARGET_USE_GOT.
20474         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
20475         (mips_avoid_hazard): Remove hazard_set handling.
20476         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
20477         (UNSPEC_RESTORE_GP): ...this.
20478         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
20479         (FAKE_CALL_REGNO): Rename to...
20480         (GOT_VERSION_REGNUM): ...this.
20481         (type): Add "ghost" value.  Add an associated insn reservation.
20482         (hazard_set): Remove.
20483         (exception_receiver): Rename to...
20484         (restore_gp): ...this and update the unspec identifier accordingly.
20485         (exception_receiver, nonlocal_got_receiver): New expanders.
20486         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
20487         FAKE_CALL_REGNO.  Remove hazard_set attribute.
20488         (set_got_version, update_got_version): New patterns.
20489
20490 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
20491
20492         PR target/34970
20493         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
20494
20495 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
20496
20497         PR other/31955
20498         * doc/install.texi2html: Generate gcc-vers.texi.
20499
20500 2008-01-25  DJ Delorie  <dj@redhat.com>
20501
20502         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
20503
20504 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
20505
20506         * config/c4x: Remove directory.
20507         * config.gcc (crx-*, mt-*): Mark obsolete.
20508         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
20509         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
20510         sh-*-rtemscoff*): Remove cases.
20511         * defaults.h (C4X_FLOAT_FORMAT): Remove.
20512         * real.c (encode_c4x_single, decode_c4x_single,
20513         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
20514         c4x_extended_format): Remove.
20515         * real.h (c4x_single_format, c4x_extended_format): Remove.
20516         * doc/extend.texi (interrupt, naked): Remove mention of attributes
20517         on C4x.
20518         (Pragmas): Remove comment about c4x pragmas.
20519         * doc/install.texi (c4x): Remove target-specific instructions.
20520         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
20521         * doc/md.texi (Machine Constraints): Remove C4x documentation.
20522         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
20523         refer to C4x source files as examples.
20524         (C4X_FLOAT_FORMAT): Remove documentation.
20525
20526 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
20527
20528         * config/bfin/bfin.c (override_options): Reorder tests so that
20529         flag_pic gets enabled for -msep-data.
20530
20531 2008-01-25  Richard Guenther  <rguenther@suse.de>
20532
20533         PR middle-end/32244
20534         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
20535         to its bitfield precision if required.
20536
20537 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
20538
20539         PR middle-end/33880
20540         * tree-nested.c (walk_omp_for): New function.
20541         (convert_nonlocal_reference, convert_local_reference): Call
20542         walk_omp_for on OMP_FOR.
20543         (convert_call_expr): Call walk_body on OMP_FOR's
20544         OMP_FOR_PRE_INIT_BODY.
20545
20546 2008-01-25  Richard Guenther  <rguenther@suse.de>
20547
20548         PR tree-optimization/34966
20549         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
20550         default defs and PHI_NODEs we have to insert after the
20551         defining statement.
20552
20553 2008-01-24  Nick Clifton  <nickc@redhat.com>
20554
20555         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
20556         Provide a default definition.
20557         (LIBGCC2_UNITS_PER_WORD): Likewise.
20558
20559         * config/stormy16/stormy16.c: Include df.h for the prototype
20560         for df_regs_ever_live_p.
20561         (xstormy16_expand_builtin_va_start): Convert the stack offset
20562         into a component_ref and then use POINTER_PLUS_EXPR to add it
20563         to the incoming_virtual_args_rtx.
20564         (xstormy16_gimplify_va_arg_expr): Rename to
20565         xstormy16_gimplify_va_arg_expr.
20566         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
20567         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
20568         xstormy16_gimplify_va_arg_expr.
20569         Fix up some formatting issues.
20570
20571         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
20572         Move to predicates.md.
20573         (xs_hi_general_operand): Likewise.
20574         (xs_hi_nonmemory_operand): Likewise.
20575         * config/stormy16/predicates.md:
20576         (xstormy16_carry_plus_operand): New predicate.
20577         (xs_hi_general_operand): New predicate.
20578         (xs_hi_nonmemory_operand): New predicate.
20579         * config/stormy16/stormy16-protos.h:
20580         (xstormy16_carry_plus_operand): Delete prototype.
20581         (xs_hi_general_operand): Likewise.
20582         (xs_hi_nonmemory_operand): Likewise.
20583
20584         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
20585         modifiers as they are no longer needed and they can trigger
20586         reload spill failures.
20587
20588         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
20589         with a match_operand in order to help reload.
20590
20591         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
20592         constraint with 'e' for the 8th alternative as this version of
20593         the mov.w instruction only accepts the lower 8 registers.
20594
20595 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
20596
20597         PR target/34856
20598         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
20599         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
20600         vector elements.
20601
20602 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
20603
20604         PR middle-end/33333
20605         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
20606
20607 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
20608
20609         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
20610         New functions.
20611         (remove_structure): Update allocations list before removing structure.
20612
20613 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
20614
20615         * ipa-struct-reorg.c (is_safe_cond_expr,
20616         create_new_stmts_for_cond_expr): Use integer_zerop function,
20617         that recognize not only zero-pointer, but zero-integer too.
20618
20619 2008-01-25  Ben Elliston  <bje@au.ibm.com>
20620
20621         PR other/22232
20622         * fixproto: Escape "." in sed expression that strips leading "./".
20623
20624 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
20625
20626         PR driver/34904
20627         * gcc.c (SWITCH_OK): Removed.
20628         (SWITCH_LIVE): Changed to bit.
20629         (SWITCH_FALSE): Likewise.
20630         (SWITCH_IGNORE): Likewise.
20631         (switchstr): Change live_cond to unsigned int.
20632         (process_command): Replace SWITCH_OK with 0.
20633         (do_self_spec): Likewise.
20634         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
20635         (give_switch): Likewise.
20636         (used_arg): Likewise.
20637         (do_spec_1): Set the SWITCH_IGNORE bit.
20638         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
20639         bits.  Set the SWITCH_LIVE bit.
20640
20641 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
20642
20643         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
20644
20645 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
20646
20647         PR tree-optimization/34472
20648         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
20649         parameter to a "bool *" and set *DATA to false if there is
20650         an unsafe access.  Do not delete the structure here.
20651         (check_cond_exprs): Delete it here instead.
20652         (check_cond_exprs, exclude_cold_structs): Do not increase
20653         I when removing a structure.
20654
20655 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
20656
20657         PR target/34856
20658         * config/i386/i386.c (ix86_expand_vector_init): Consider only
20659         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
20660
20661 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
20662
20663         PR middle-end/34934
20664         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
20665         a fixed vector for stack.
20666
20667 2008-01-24  Ben Elliston  <bje@au.ibm.com>
20668
20669         PR c++/25701
20670         * doc/gcc.texi (Software development): Add a direntry for g++.
20671
20672 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
20673
20674         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
20675         stale and straggling -fforce-addr comments above.
20676
20677         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
20678         define.
20679         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
20680         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
20681
20682 2008-01-23  Michael Matz  <matz@suse.de>
20683
20684         PR debug/34895
20685         * dwarf2out.c (force_type_die): Use modified_type_die instead of
20686         gen_type_die.
20687
20688 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
20689
20690         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
20691         malloc result type.
20692
20693 2008-01-23 Anatoly Sokolov <aesok@post.ru>
20694
20695         * config/avr/avr.c (avr_current_arch): New variable.
20696         (avr_arch_types): Add 'avr31' and 'avr51' entries.
20697         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
20698         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
20699         (avr_override_options): Init 'avr_current_arch'.
20700         (base_arch_s): Move from here...
20701         * config/avr/avr.h (base_arch_s): ... here. Add new members
20702         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
20703         'mega' to 'have_jmp_call'.
20704         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
20705         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
20706         macros.
20707         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
20708         architectures.
20709         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
20710         MULTILIB_MATCHES): Ditto.
20711
20712 2008-01-23  Richard Guenther  <rguenther@suse.de>
20713
20714         PR middle-end/31529
20715         * cgraphunit.c (cgraph_reset_node): Always mark the node
20716         not reachable if it is not queued already.
20717
20718 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
20719
20720         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
20721         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
20722         (cputype_selected): New static variable.
20723         (bfin_handle_option): Set it if -mcpu is used.
20724         (override_option): Select default set of workarounds if no cpu type
20725         selected on the command line.
20726         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
20727
20728         From  Michael Frysinger  <michael.frysinger@analog.com>
20729         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
20730         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
20731
20732         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
20733         for bf547, bf523, bf524, and bf526.
20734         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
20735         bf526.
20736         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
20737         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
20738         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
20739         __ADSPBF547__ and __ADSPBF54x__ for bf547.
20740         * doc/invoke.texi (Blackfin Options): Document that
20741         -mcpu now accept bf547, bf523, bf524, and bf526.
20742
20743 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
20744
20745         PR rtl-optimization/34628
20746         * combine.c (try_combine): Stop and undo after the first combination
20747         if an autoincrement side-effect on the first insn has effectively
20748         been lost.
20749
20750 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
20751
20752         PR target/34529
20753         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
20754         Offset addresses are not valid for Altivec or paired float modes.
20755
20756 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
20757
20758         PR c++/34607
20759         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
20760         if DECL_INITIAL (decl) is error_mark_node.
20761
20762         PR c++/34914
20763         * c-common.c (handle_vector_size_attribute): Only allow
20764         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
20765         the same way as pointer, array etc. types.
20766         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
20767
20768         PR c++/34917
20769         * tree.c (build_type_attribute_qual_variant): Call
20770         build_qualified_type if attributes are equal, but quals are not.
20771
20772 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20773
20774         PR 32102
20775         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
20776         * flags.h (warn_strict_aliasing): Remove.
20777         (warn_strict_overflow): Remove.
20778         * opts.c (warn_strict_aliasing): Remove.
20779         (warn_strict_overflow): Remove.
20780         * c-opts.c (c_common_handle_option): -Wall only sets
20781         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
20782         (c_common_post_options): Give default values to -Wstrict-aliasing
20783         and -Wstrict-overflow if they are uninitialized.
20784         * common.opt (Wstrict-aliasing): Specify Var and Init.
20785         (Wstrict-overflow): Likewise.
20786
20787 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
20788
20789         PR rtl-optimization/26854
20790         PR rtl-optimization/34400
20791         PR rtl-optimization/34884
20792         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
20793         DF_RD->gen.
20794         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
20795         (df_rd_bb_info.expanded_lr_out): Deleted
20796         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
20797         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
20798         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
20799         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
20800         Removed code to allocate, initialize or free expanded_lr_out.
20801         (df_rd_bb_local_compute_process_def): Restructured to make more
20802         understandable.
20803         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
20804         sets if the sets are being trimmed.
20805
20806 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
20807
20808         PR bootstrap/32287
20809         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
20810         (as_vers): Likewise.
20811         * configure: Regenerated.
20812
20813 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20814
20815         PR middle-end/33092
20816         * tree-pass.h (pass_build_alias): New pass.
20817         * tree-ssa-alias.c (gate_build_alias): New.
20818         (pass_build_alias): New.
20819         * passes.c (init_optimization_passes): Add pass_build_alias after
20820         pass_create_structure_vars.
20821
20822 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
20823
20824         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
20825         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
20826         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
20827         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
20828         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
20829         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
20830         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
20831         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
20832         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
20833         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
20834         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
20835         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
20836         * config/s390/s390.md (FP_ALL): New mode iterator.
20837         (_d): New mode attribute.
20838         ("*signbit<mode>2>"): Changed mode of first operand.
20839         ("isinf<mode>2"): Changed mode of first operand.
20840         ("*TDC_insn"): Adaptation for DFP modes.
20841
20842 2008-01-22  Ben Elliston  <bje@au.ibm.com>
20843
20844         * tree.c (check_qualified_type): Improve function description.
20845
20846 2008-01-21  Jason Merrill  <jason@redhat.com>
20847
20848         PR c++/34196
20849         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
20850         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
20851         if it is set.
20852
20853 2008-01-21  DJ Delorie  <dj@redhat.com>
20854
20855         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
20856         return zero.
20857
20858 2008-01-21  Richard Guenther  <rguenther@suse.de>
20859
20860         PR middle-end/34856
20861         * tree-cfg.c (verify_expr): Allow all invariant expressions
20862         instead of just constant class ones as reference argument.
20863         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
20864         like any other constant.
20865         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
20866
20867 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
20868
20869         * regmove.c (fixup_match_1): Update call crossed frequencies.
20870
20871 2008-01-21  Richard Guenther  <rguenther@suse.de>
20872
20873         PR c/34885
20874         * tree-inline.c (setup_one_parameter): Deal with mismatched
20875         types using a VIEW_CONVERT_EXPR.
20876
20877 2008-01-21  Alon Dayan  <alond@il.ibm.com>
20878             Olga Golovanevsky  <olga@il.ibm.com>
20879
20880         PR tree-optimization/34701
20881         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
20882         when the structure size is not a power of 2.
20883
20884 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
20885
20886         * doc/install.texi: Add doc for --enable-checking=df.
20887
20888 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
20889
20890         PR rtl-optimization/34808
20891         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
20892
20893 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
20894
20895         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
20896         input.
20897
20898 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
20899
20900         PR rtl-optimization/26854
20901         PR rtl-optimization/34400
20902         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
20903         DF_RD->gen.
20904         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
20905         (df_rd_bb_info.expanded_lr_out): New.
20906         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
20907         * loop_iv.c (iv_analysis_loop_init): Ditto.
20908         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
20909         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
20910         Added code to allocate, initialize or free expanded_lr_out.
20911         (df_rd_bb_local_compute_process_def): Restructured to make
20912         more understandable.
20913         (df_rd_confluence_n): Add code to do nothing with fake edges and
20914         code to no apply invalidate_by_call sets if the sets are being trimmed.
20915         (df_lr_local_finalize): Renamed to df_lr_finalize.
20916         (df_live_local_finalize): Renamed to df_live_finalize.
20917
20918 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
20919
20920         PR target/34831
20921         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
20922         deciding whether to use reciprocal instructions.
20923
20924 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
20925
20926         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
20927         dwarf2out_note_section_used if cold_text_section is NULL.
20928
20929 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
20930
20931         PR gcov-profile/34610
20932         * tree-cfg.c (make_edges): Mark both outgoing edges from
20933         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
20934         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
20935         from OMP_FOR and OMP_CONTINUE outgoing edges.
20936
20937         * tree-profile.c (tree_profiling): Return early if
20938         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
20939         at the end.
20940         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
20941         from cfun to child_cfun.
20942         * function.h (struct function): Add after_tree_profile bit.
20943
20944 2008-01-19 Anatoly Sokolov <aesok@post.ru>
20945
20946         * config/avr/avr.S (_exit): Disable interrupt.
20947
20948 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
20949             Steven Bosscher  <stevenb.gcc@gmail.com>
20950
20951         PR rtl-optimization/26854
20952         PR rtl-optimization/34400
20953         * df-problems.c (df_live_scratch): New scratch bitmap.
20954         (df_live_alloc): Allocate df_live_scratch when doing df_live.
20955         (df_live_reset): Clear the proper bitmaps.
20956         (df_live_bb_local_compute): Only process the artificial defs once
20957         since the order is not important.
20958         (df_live_init): Init the df_live sets only with the variables
20959         found live by df_lr.
20960         (df_live_transfer_function): Use the df_lr sets to prune the
20961         df_live sets as they are being computed.
20962         (df_live_free): Free df_live_scratch.
20963
20964 2008-01-18  Ian Lance Taylor  <iant@google.com>
20965
20966         * common.opt: Add fmerge-debug-strings.
20967         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
20968         flag_merge_debug_strings rather than flag_merge_constants.
20969         * doc/invoke.texi (Option Summary): Mention
20970         -fmerge-debug-strings.
20971         (Debugging Options): Document -fmerge-debug-strings.
20972
20973 2008-01-18  Ian Lance Taylor  <iant@google.com>
20974
20975         PR c++/33407
20976         * tree.h (DECL_IS_OPERATOR_NEW): Define.
20977         (struct tree_function_decl): Add new field operator_new_flag.
20978         * tree-inline.c (expand_call_inline): When inlining a call to
20979         operator new, force the return value to go into a variable, and
20980         set DECL_NO_TBAA_P on that variable.
20981         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
20982
20983 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
20984
20985         PR debug/34484
20986         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
20987         DWARF2_DEBUGGING_INFO.
20988         (dwarf2out_note_section_used): Ditto.  Add prototype.
20989         (have_multiple_function_sections, text_section_used,
20990         cold_text_section_used, *cold_text_sections): Move declarations
20991         before their uses.
20992
20993 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
20994
20995         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
20996         field and add signal_ra.
20997         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
20998         assignments to frame state pc.  Move end of stack check after
20999         MD_FALLBACK_FRAME_STATE_FOR.
21000         (uw_update_context_1): Use frame state signal_regs if set, instead
21001         of checking signal_frame flag.
21002         (uw_update_context): Use frame state signal_ra if set.
21003         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
21004         * config/xtensa/linux-unwind.h: New file.
21005
21006 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
21007
21008         * modulo-sched.c (get_sched_window): Fix comment typo.
21009
21010 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
21011
21012         PR tree-optimization/34648
21013         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
21014
21015 2008-01-17  Anatoly Sokolov <aesok@post.ru>
21016
21017         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
21018         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
21019
21020 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
21021
21022         PR rtl-optimization/34400
21023         * df-core.c (df_worklist_dataflow_overeager,
21024         df_worklist_dataflow_doublequeue): New functions.
21025         (df_worklist_dataflow): Two different worklist solvers.
21026         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
21027         New param.
21028
21029 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
21030
21031         PR testsuite/34821
21032         * doc/invoke.texi: Document the dependence on pthread for fopenmp
21033         and ftree-parallelize-loops.
21034
21035 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
21036
21037         PR rtl-optimization/34826
21038         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
21039
21040 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
21041
21042         * global.c (find_reg): Mark the eh regs as used if necessary.
21043         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
21044         * ra.h (struct allocno): no_eh_reg field added.  Changed
21045         no_stack_reg type to bitfield.
21046
21047 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
21048
21049         * tree.c (substitute_in_expr): Add missing 'break'.
21050
21051 2008-01-17  Richard Guenther  <rguenther@suse.de>
21052
21053         PR tree-optimization/34825
21054         * tree-ssa-math-opts.c (is_division_by): Do not recognize
21055         x / x as division to handle.
21056
21057 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21058
21059         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
21060         "-pthread" is specified.
21061         * pa-hpux11.h (LIB_SPEC): Likewise.
21062
21063 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
21064             Peter Bergner  <bergner@vnet.ibm.com>
21065
21066         PR rtl-optimization/33796
21067         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
21068
21069 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21070
21071         PR libgfortran/34699
21072         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
21073         static links.
21074         * pa-hpux10.h (LINK_SPEC): Likewise.
21075         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
21076
21077 2008-01-16  Richard Guenther  <rguenther@suse.de>
21078
21079         PR middle-end/32628
21080         * fold-const.c (fold_convert_const_int_from_int): Do not
21081         set overflow if that occured only because of a sign extension
21082         change when converting from/to a sizetype with the same
21083         precision and signedness.
21084
21085 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
21086
21087         PR debug/34249
21088         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
21089         location address to the correct place.  Update copyright year.
21090
21091 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
21092
21093         * lambda-code.c (lambda_transform_legal_p): Handle the case of
21094         no dependences in the dependence_relations vector.
21095
21096 2008-01-16  Jan Hubicka  <jh@suse.cz>
21097
21098         PR rtl-optimization/31396
21099         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
21100         * cfg.c (dump_reg_info): Print it.
21101         * regs.h (struct reg_info_t): add freq_calls_crossed.
21102         (REG_FREQ_CALLS_CROSSED): New macro.
21103         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
21104         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
21105         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
21106         regmove_optimize): Update call crossed frequencies.
21107         * local-alloc.c (struct qty): Add freq_calls_crossed.
21108         (alloc_qty): Copute freq_calls_crossed.
21109         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
21110         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
21111         * ra.h (struct allocno): Add freq_calls_crossed.
21112
21113 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
21114
21115         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
21116         libgomp when compiling with ftree-parallelize-loops.
21117         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
21118
21119 2008-01-16  Richard Guenther  <rguenther@suse.de>
21120
21121         PR tree-optimization/34769
21122         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
21123         * tree.c (int_cst_value): Instead make this function more
21124         permissive in what it accepts as valid input.  Document this
21125         function always sign-extends the value.
21126
21127 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
21128             Richard Guenther  <rguenther@suse.de>
21129
21130         PR c/34668
21131         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
21132         (gimple_fold_indirect_ref_rhs): ... this.
21133         (gimple_fold_indirect_ref): New function with foldings
21134         that preserve lvalueness.
21135         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
21136         * tree-flow.h (gimple_fold_indirect_ref): Declare.
21137         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
21138         to fold an INDIRECT_REF, fall back to the old use of
21139         fold_indirect_ref_1.
21140
21141 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
21142
21143         * tree-data-ref.c (subscript_dependence_tester_1): Call
21144         free_conflict_function.
21145         (compute_self_dependence): Same.
21146
21147 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
21148
21149         PR debug/34249
21150         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
21151         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
21152         function global.
21153         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
21154         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
21155         for DWARF2_UNWIND_INFO targets.
21156
21157 2008-01-16  Richard Guenther  <rguenther@suse.de>
21158
21159         PR c/34768
21160         * c-typeck.c (common_pointer_type): Do not merge inconsistent
21161         type qualifiers for function types.
21162
21163 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
21164
21165         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
21166         loop_iterator li from previous commit.
21167
21168 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
21169
21170         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
21171
21172 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
21173
21174         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
21175         (parallelize_loops): Don't parallelize irreducible components.
21176
21177 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21178
21179         PR c++/24924
21180         * c-opts (c_common_post_options): Do not enable CPP
21181         flag_pedantic_errors by default.
21182
21183 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
21184
21185         PR rtl-optimization/31944
21186         * cse.c (remove_pseudo_from_table): New function.
21187         (merge_equiv_classes): Use above function to remove pseudo-registers.
21188         (invalidate): Likewise.
21189
21190 2008-01-13  Richard Guenther  <rguenther@suse.de>
21191
21192         PR middle-end/34601
21193         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
21194         instead of TYPE_MODE to deal with calls from expand_one_error_var.
21195
21196 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
21197
21198         * gcse.c (cprop_jump): Call validate_unshare_change instead of
21199         validate_change to unshare the source of the PC set.
21200
21201 2008-01-12  Jan Hubicka  <jh@suse.cz>
21202
21203         PR middle-end/32135
21204         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
21205         references above array bounds.  This might trigger bounds checks for
21206         pointers to arrays.
21207
21208 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
21209
21210         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
21211         new_replaceable_dependencies.
21212
21213 2008-01-12  Doug Kwan  <dougkwan@google.com>
21214
21215         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
21216         instead of OPT_Wreturn_type in warning due to ignored return type
21217         qualifiers.
21218         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
21219         options included in -Wextra.
21220         * c.opt: New option -Wignored_qualifiers.
21221         * doc/invoke.texi (Warning Options, -Wextra): Add new option
21222         -Wignore_qualifiers.
21223         (-Wignored-qualifiers): Document.
21224         (-Wreturn-type): Remove description of functionality now handled
21225         by -Wignored-qualifiers.
21226
21227 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
21228
21229         PR ada/33788
21230         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
21231         NOP_EXPR if it is between integral types with the same precision.
21232
21233 2008-01-12  Jan Hubicka  <jh@suse.cz>
21234
21235         PR other/28023
21236         * invoke.texi (max-inline-recursive-depth): Fix default value.
21237
21238 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
21239
21240         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
21241         correct type.
21242
21243 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
21244
21245         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
21246
21247 2008-01-11  James E. Wilson  <wilson@specifix.com>
21248
21249         PR target/26015
21250         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
21251
21252 2008-01-11  Anatoly Sokolov <aesok@post.ru>
21253
21254         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
21255         save/restore frame pointer register and don't use 'call-prologues'
21256         optimization in function with "OS_task" attribute.
21257
21258 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
21259
21260         PR middle-end/31309
21261         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
21262         when copying to memory.
21263
21264 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
21265
21266         PR rtl-optimization/30905
21267         * cfgcleanup.c: Include dce.h
21268         (crossjumps_occured): New global variable.
21269         (try_crossjump_bb): Exit loop after finding a fallthru edge.
21270         If something changed, set crossjumps_occured to true.
21271         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
21272         Don't add/remove fake edges to exit here...
21273         (cleanup_cfg): ...but do it here, when crossjumping.
21274         Run a fast DCE when successful crossjumps occured in the latest
21275         iteration of try_optimize_cfg.
21276
21277 2008-01-11  Richard Guenther  <rguenther@suse.de>
21278
21279         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
21280         (struct vn_unary_op_s): Likewise.
21281         (vn_reference_insert): Free old reference on hash collision.
21282
21283 2008-01-10  Raksit Ashok  <raksit@google.com>
21284
21285         PR rtl-optimization/27971
21286         * combine.c (find_split_point): Split PLUS expressions which are
21287         inside a MEM rtx, and whose first operand is complex.
21288
21289 2008-01-10  DJ Delorie  <dj@redhat.com>
21290
21291         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
21292         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
21293         (m32c_hard_regno_ok): Call the underlying function.
21294
21295 2008-01-10  Richard Guenther  <rguenther@suse.de>
21296
21297         PR middle-end/34683
21298         * tree-cfg.c (tree_merge_blocks): Do not go through the
21299         full-blown folding and stmt updating path if we just deal
21300         with virtual operands.
21301         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
21302         test for abnormal SSA_NAMEs.
21303
21304 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
21305
21306         PR middle-end/34641
21307         * reload.c (push_reload): Add assertions.  All constants from
21308         reg_equiv_constant should have been used for replacing the respective
21309         pseudo earlier.
21310         (find_reloads_address): Invoke find_reloads_address_part for
21311         constant taken from the reg_equiv_constant array.
21312
21313 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
21314
21315         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
21316         field (valnum) the first in the struct.  Replace bools with
21317         unit bit fields.
21318
21319 2008-01-10  Richard Guenther  <rguenther@suse.de>
21320
21321         PR tree-optimization/34651
21322         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
21323         types and ordering for masking and converting.
21324
21325 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
21326
21327         PR tree-optimization/34017
21328         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
21329         also for PHI_NODE expressions.
21330
21331 2008-01-09  Jan Hubicka  <jh@suse.cz>
21332
21333         PR tree-optimization/34708
21334         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
21335         based on number of case labels.
21336         (init_inline_once): Remove switch_cost.
21337         * tree-inline.h (eni_weights_d): Remove switch_cost.
21338
21339 2008-01-09  Richard Guenther  <rguenther@suse.de>
21340         Andrew Pinski  <andrew_pinski@playstation.sony.com>
21341
21342         PR middle-end/30132
21343         * gimplify.c (gimplify_cond_expr): Do not create an addressable
21344         temporary if an rvalue is ok or an lvalue is not required.
21345
21346 2008-01-09  Richard Guenther  <rguenther@suse.de>
21347
21348         PR middle-end/34458
21349         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
21350         adjust return type.
21351
21352 2008-01-09  Richard Guenther  <rguenther@suse.de>
21353
21354         PR middle-end/34679
21355         * tree.c (host_integerp): Check for sizetype only if the
21356         type is an integer type.
21357
21358 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
21359
21360         PR debug/26364
21361         * opts.c (decode_options): Disable inlining of functions called
21362         once if not in unit-at-a-time mode.
21363
21364 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
21365
21366         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
21367
21368 2008-01-08  Richard Guenther  <rguenther@suse.de>
21369
21370         PR middle-end/31863
21371         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
21372         out early if the result will be unused.
21373
21374 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
21375
21376         PR target/34709
21377         Revert:
21378
21379         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
21380         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
21381         for TARGET_RECIP.
21382
21383 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
21384
21385         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
21386         for vectorization tuned.
21387
21388 2008-01-08  Richard Guenther  <rguenther@suse.de>
21389
21390         PR tree-optimization/34683
21391         * tree-ssa-operands.c (operand_build_cmp): Export.
21392         * tree-ssa-operands.h (operand_build_cmp): Declare.
21393         * tree-vn.c (vuses_compare): Remove.
21394         (sort_vuses): Use operand_build_cmp.
21395         (sort_vuses_heap): Likewise.
21396         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
21397         to re-use old VEC if available.  Do not sort already sorted VUSEs.
21398         (vdefs_to_vec): Do not sort already sorted VDEFs.
21399
21400 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
21401
21402         PR middle-end/34694
21403         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
21404
21405 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
21406
21407         PR target/34702
21408         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
21409         limitations of reciprocal sequences on x86 targets.
21410
21411 2008-01-08  Richard Guenther  <rguenther@suse.de>
21412
21413         PR tree-optimization/34683
21414         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
21415
21416 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
21417
21418         PR target/34622
21419         * config/darwin.c (darwin_mergeable_string_section): Don't use
21420         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
21421
21422 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
21423
21424         PR target/34682
21425         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
21426         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
21427         predicates of op0 and op1 to register_operand.
21428         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
21429         expander using X87MODEF mode iterator.  Change predicates of
21430         op0 and op1 to register_operand.
21431         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
21432         corresponding patterns and macroize using MODEF macro.  Change
21433         predicates of op0 and op1 to register_operand and remove
21434         "m" constraint. Disparage "r" alternative with "!".
21435         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
21436         macroize using X87MODEF macro.  Change predicates of op0 and op1
21437         to register_operand and remove "m" constraint.  Disparage "r"
21438         alternative with "!".
21439         (absneg splitter with memory operands): Remove.
21440         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
21441         patterns and macroize using X87MODEF mode iterator.
21442         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
21443         Change predicate of op1 to register_operand.
21444         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
21445         for memory operands.
21446
21447 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
21448
21449         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
21450
21451 2008-01-07  Richard Guenther  <rguenther@suse.de>
21452
21453         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
21454         fields.
21455
21456 2008-01-07  Richard Guenther  <rguenther@suse.de>
21457
21458         PR tree-optimization/34683
21459         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
21460         VOPs of the needed size to save memory.  Use VEC_quick_push
21461         to save compile-time.
21462         (vdefs_to_vec): Likewise.
21463
21464 2008-01-07  Sa Liu  <saliu@de.ibm.com>
21465
21466         * config/spu/spu.md (divdf3): Genetate inline code for double
21467         division.  The implementation doesn't handle INF or NAN, therefore it
21468         only applies when -ffinite-math-only is given.
21469
21470 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
21471
21472         PR libstdc++/34680
21473         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
21474         * doc/cpp.texi ([Common Predefined Macros]): Document.
21475
21476 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
21477
21478         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
21479         order to use commutative addition instead of subtraction.
21480
21481 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21482             Mircea Namolaru  <namolaru@il.ibm.com>
21483             Vladimir Yanovsky  <yanov@il.ibm.com>
21484             Revital Eres  <eres@il.ibm.com>
21485
21486         PR tree-optimization/34263
21487         * tree-outof-ssa.c (process_single_block_loop_latch,
21488         contains_tree_r): New functions.
21489         (analyze_edges_for_bb): Call process_single_block_loop_latch
21490         function to empty single-basic-block latch block if possible.
21491
21492 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
21493
21494         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
21495         for TARGET_RECIP.
21496         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
21497
21498 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
21499
21500         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
21501
21502 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
21503
21504         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
21505
21506 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
21507
21508         PR tree-optimization/34618
21509         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
21510         flag from T.
21511
21512 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
21513
21514         PR target/34673
21515         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
21516         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
21517         Update copyright year.
21518
21519         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
21520         Update copyright year.
21521         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
21522         using NR fixup.
21523
21524 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
21525
21526         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
21527         edge does not point to current bb before changing need_assert.
21528
21529 2008-01-04  Richard Guenther  <rguenther@suse.de>
21530
21531         PR middle-end/34029
21532         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
21533         for verifying purposes if they are is_gimple_min_invariant.
21534
21535 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
21536
21537         PR tree-optimization/34448
21538         PR tree-optimization/34465
21539         * gimplify.c (gimplify_init_constructor): Add new parameter
21540         notify_temp_creation.  Use it.
21541         (gimplify_modify_expr_rhs): Take volatiles into account when
21542         optimizing constructors.
21543         Do not optimize constructors if gimplify_init_constructor will dump to
21544         memory.
21545         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
21546         * gcc.c-torture/compile/pr34448.c: New.
21547
21548 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
21549
21550         PR gcov-profile/34609
21551         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
21552         return_slot if result is TREE_ADDRESSABLE.
21553
21554 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
21555
21556         * config/mips/mips.md (sqrt_condition): Tweak comment.
21557         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
21558
21559 2008-01-03  Tom Tromey  <tromey@redhat.com>
21560
21561         PR c/34457
21562         * c-common.c (c_type_hash): Handle VLAs.
21563
21564 2008-01-03  Jan Hubicka  <jh@suse.cz>
21565
21566         PR tree-optimization/31081
21567         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
21568         0 when inlining and not inlining to first basic block.
21569         (remap_decl): When var is initialized to 0, don't set default_def.
21570         (expand_call_inline): Set entry_bb.
21571         * tree-inline.h (copy_body_data): Add entry_bb.
21572
21573 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
21574
21575         PR c++/34619
21576         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
21577         before returning.
21578
21579         PR tree-optimization/29484
21580         * tree-inline.c (inline_forbidden_p_2): New function.
21581         (inline_forbidden_p): Disallow inlining if some static var
21582         has an address of a local LABEL_DECL in its initializer.
21583         * doc/extend.texi (Labels as Values): Document &&foo behaviour
21584         vs. inlining.
21585
21586 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
21587
21588         PR tree-optimization/34635
21589         * tree-data-ref.c (add_other_self_distances): Make sure that the
21590         evolution step is constant.
21591
21592 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
21593
21594         PR middle-end/34608
21595         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
21596
21597 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
21598
21599         * tree-sra.c (scalarize_init): Insert the generate_element_init
21600         statements after the generate_element_zero statements.
21601
21602 2008-01-02  Richard Guenther  <rguenther@suse.de>
21603
21604         PR middle-end/34093
21605         PR middle-end/31976
21606         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
21607         for very large number of operands instead of ICEing.
21608
21609 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
21610
21611         PR target/34013
21612         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
21613         while stack probing.
21614
21615 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
21616
21617         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
21618         in C++0x mode.
21619
21620 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
21621
21622         PR libmudflap/26442
21623         * tree-mudflap.c (mx_register_decls): Guard warning by
21624         !DECL_ARTIFICIAL check.
21625
21626 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
21627
21628         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
21629         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
21630         sse5_perm<mode>): Fix constraints.