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]

Re: RFA: Fix ICE in MN10300's address_cost function

On 10/02/09 07:27, Nick Clifton wrote:
Hi Paolo, Hi Jeff,

So I guess the question is: why does create_new_invariant think that it
has an address at this point. I do not know. Maybe it is just assuming
that it might have an address, and so it computes the address cost in
case it is needed later on ?

Yes, but this is useless. Just make it

  inv->cheap_address =
    (memory_address_p (word_mode, SET_SRC (set)
&& address_cost (SET_SRC (set), word_mode,
                      speed) < COSTS_N_INSNS (1));

That did not solve the problem. A little more investigation revealed the fact that the MN10300 was saying that (CONST_DOUBLE) is a valid memory address. (Obviously really with hindsight). So I would like to withdraw my previous patch and instead offer the one below. This one also fixes the newlib build problem, and does not introduce any new testsuite failures.

I am not sure if the patch to create_new_invariant() is still needed. Certainly the MN10300 port builds without it. Paolo - what do you think ?

Ok to apply the mn10300.h patch ?



2009-10-02 Nick Clifton <>

    * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P):
    Exclude CONST_DOUBLEs.
OK. Note however, that several other ports have this same bug (possibly latent). I can trivially see the cris, fr30, frv, m32c m68hc11, mep, moxie, pdp11, pico, score, stormy16 and possibly others that will need a similar fix.


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