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: MD representation of IA64 floating point operations


On Fri, 2004-07-23 at 09:17, Steve Ellcey wrote:
> I am curious about this.  I looked around configure, make, and the doc
> directory but I don't see where or how this preprocessing would happen.

Because it is gone, again.  This keeps popping up and disappearing, and
I can never keep track of it.  I see in gcc-2.95.3 there is md_cppflags,
but it disappeared sometime between then and now.  It was never really
that great of an idea, as it used cpp to preprocess md files, and then
you had all of the usual problems of trying to get something that isn't
C source code through the C preprocessor.  Some kind of RTL macros would
be better, or at least use something language neutral, like m4, but in
any case, I think we should consider this a last resort.

modeless patterns have the flaw that they can match stuff that they were
never intended to match.  That is why I suggested checking the modes in
the predicate, to make sure we got one of the operand modes we were
expecting.  modeless patterns can also confuse parts of the code
generators and optimizers.  There are various places that look for
operand modes and do things with them.  See for instance
emit_conditional_move in optabs.c, which has code like this
  if (! (*insn_data[icode].operand[2].predicate)
      (op2, insn_data[icode].operand[2].mode))
    op2 = copy_to_mode_reg (insn_data[icode].operand[2].mode, op2);
If you have a modeless pattern, and the predicate returns false, then
the code tries to copy op2 into a VOIDmode register which won't work. 
There are some similar places in expand_binop, but they have explicit
checks for VOIDmode to avoid this problem.
-- 
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com


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