This is the mail archive of the gcc@gcc.gnu.org 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]

Re: ICE on valid code, cse related


On Thu, Aug 09, 2007 at 01:32:02PM +0100, Dave Korn wrote:
> On 09 August 2007 13:25, Rask Ingemann Lambertsen wrote:
> 
> >    All examples so far have had CONST_DOUBLE in the REG_EQUAL note.
> 
>   Yes, and?  I don't see what you're getting at here.

   Not necessarily a whole lot, but it's the only thing to look for
without a testcase and CONST_DOUBLE handling was broken in the past,
which resulted in the RTL checks that are now being tripped again.
 
> >    If you look at the ia16 back end I posted, you'll notice that it only
> > implements movXX for modes of 16 bits or less and AFAIK does not suffer from
> > the CSE bug.
> 
>   It maybe latent for other reasons, or you may not have triggered it yet, but
> I wonder what kind of REG_EQUAL notes do you get when you start passing 32-
> (or even 64-) bit values around in 16-bit registers?

   Pretty difficult to say without a test case, isn't it? The only mention
of any such thing is gcc.c-torture/execute/20000717-2.c[1], but that was in
the GCC 3.3 days. These days, the tree optimizers have already optimized the
testcase away before RTL generation happens.

   What happened to the experiments you described at
<URL:http://gcc.gnu.org/ml/gcc/2004-06/msg01178.html>? Emitting a no-op move
of the (set (reg) (reg)) form won't work, but maybe something like

(insn (use (reg) (expr_list:REG_EQUAL ...)))

would work?

[1] http://gcc.gnu.org/ml/gcc/2003-04/msg01397.html

-- 
Rask Ingemann Lambertsen


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