[PATCH] Fix DCE REG_LIBCALL note moving from noop move insns (PR rtl-optimization/33644)

Eric Botcazou ebotcazou@libertysurf.fr
Mon Oct 15 13:50:00 GMT 2007


> We added the LIB_CALL_ID because we foresaw that as we modernize the
> rtl passes, that more and more of these passes will be using either
> use-def or def-use chains.  For these optimizations, you rarely make
> linear passes over the instructions, you simply follow the chains from
> one insn of interest to another.

Define "rarely". :-)  The only pass that uses REG_LIBCALL_ID is dce.c and the 
first thing it does is a linear pass over the instructions...

> The LIB_CALL_ID provides a simple constant time test to find out if you have
> landed inside of a lib call.  Removing this structure will only make it
> harder to add passes that only deal with the instructions of interest and
> essentially forces us into the endless inefficient rescanning of blocks
> paradyme that the rtl passes are famous for.

OK, but it's half-backed work since only the new dce.c pass among the RTL 
passes knows of it, and GCC is also famous for its half-back transitions.

> I have not looked at this bug.  I am happy to if you want.  I am sure
> that it will be trivial to modify the pass that moved/created the insn
> in the middle of the libcall to inherit the LIB_CALL_ID from the
> previous insn.

As I said to Daniel, it's probably only the tip of the iceberg.

-- 
Eric Botcazou



More information about the Gcc-patches mailing list