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]

More new x86 breakage


Sigh ... what a tangled web.  You might think that a function
called output_move_double outputs the necessary instructions.
Unfortunately it doesn't output all the instructions, sometimes
it returns the last instruction in the move sequence as a template
assuming that you will output it yourself with the correct operands.
This means that use in a define_insn such as:

  else if (NON_STACK_REG_P (operands[0]))
    {
    xops[0] = operands[0];
    xops[1] = operands[2];
    return output_move_double (xops);
    }

is incorrect since the template is intended for use with xops, not
operands.  The * really * unfortunate thing is that I've introduced
this type of usage when I changed the x86 floating point truncation
patterns.  My suggestion is to change output_move_double so that
it outputs all the instructions and returns void.  Any other suggestions?

-- John

PS: Sorry for the recent series of breakage.
-------------------------------------------------------------------------
|   Feith Systems  |   Voice: 1-215-646-8000  |  Email: john@feith.com  |
|    John Wehle    |     Fax: 1-215-540-5495  |                         |
-------------------------------------------------------------------------



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