This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[dataflow]: PATCH: prevent duplicate mw_hardreg, and other misc changes

This patch does:

1) Prevent duplicate mw_hardreg entries,
and change the verification code to deal with that.
2) Handle calls that are COND_EXEC.
3) Specially handle the case where DF_REF_LOC() is null.

1) was causing a bootstrap failure on PPC and IA64.
2 & 3 were causing a boostrap failure on IA64.

4) Add a new debug counter tail_call to control tail call optimization.

5) Fix a bug in dbg_cnt handling multiple options.
Now, e.g. -fdbg-cnt=tail_call:1,new_dce:10  works fine.

Bootstrapped on x86_64 and PPC.
With this patch, IA64 reached stage3 (and failed during libgfortran build).
The regression tests are still running but as this fixes the bootstrap failure,
I think this needs to go in to allow further progress.


2006-11-14 Seongbae Park <>

       * tree-tailcall.c (execute_tail_recursion): Added dbg_cnt().
       * df-scan.c (df_mw_hardreg_find_hardreg, df_get_conditional_uses,
       New function.
       (df_refs_add_to_chains): Don't add duplicate mw_hardreg.
       (df_ins_refs_collect): Refactored to use df_get_conditional_uses
       and df_get_call_refs.
       (df_insn_refs_verify): Find the matching mw_hardreg.
       * dbgcnt.c (dbg_cnt_process_opt): Fix a bug handling multiple
       counters. Add a new debug counter tail_call.
       * dbgcnt.h (enum debug_counter): Added a new counter tail_call.
       * calls.c (expand_call): Check dbg_cnt(tail_call).
       * df_problems.c (df_create_unused_note, df_ri_bb_compute):
       Handle NULL LOC case.
       * dce.c (init_dce): Add a debug dump.

Attachment: df-r8.diff.txt
Description: Text document

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]