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]

RTL Generation and Matching


Hi, I am new to GCC and I have the following questions
regarding RTL generation and matching when reading the
"GCC Internals" manual.

1. In the "Standard Pattern Names For Generation",
apprently some names are 'must' and some are
'optional'. But is there a list of all the 'must'
names? Because for some names, like 'cosm2', I am not
able to tell from their descriptions.


2. In Chapter 9 "Machine Descriptions", the manual
says 
  'For the generate pass, only the names of the insns 
   matter. .... The compiler will choose the pattern
   with the right name and ##apply the operands##   
   according to the documentation later in this  
   chapter, without regard for the RTL template or    
   operand constraints.'
 
   The 'without regard for the RTL template' part
confuses me. My question is: 

  Is the predicate inside the RTL template used in the
generation phase?
   
My understanding is that the predicate needs to be
considered when "apply the operands". Say the 'addm3'
instruction on the target machine takes register
operands only and you have a tree node like a=b+3. I
think, at the RTL generation phase, GCC should
generate a sequence of move (to reg) insn and a all
register add3 insn, rather than a add3 with const
operand inst. 

Please help me and thank you!

Yuan

__________________________________________________
Do You Yahoo!?
Yahoo! Finance - Get real-time stock quotes
http://finance.yahoo.com


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