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]

genflags and genemit disagree


iI
Hi,
while looking for ways to add prototypes to i386.h (which I'll write about
in another message) I stumbled over an odity regarding gen_call_pop() and
gen_call_value_pop(). The bug is that either genflags produces a wrong
prototype or genemit the wrong function.

As I don't understand rtl yet, I thought I'ld ask here for somebody to
explain.

Here is the relevant part form i386.md:

(define_expand "call_pop"
 [(parallel [(call (match_operand:QI 0 "indirect_operand" "")
                    (match_operand:SI 1 "general_operand" ""))
              (set (reg:SI 7)
                   (plus:SI (reg:SI 7)
                            (match_operand:SI 3 "immediate_operand"
"")))])]
How many parameters do result from this description ? I don't have the
generated code here, but if I remember correctly, genflags produces a
prototype with three rtx as parameter, while genemit produces a function
with four rtx.

As I suspect genflags of being the culprit, could somebody please have
a look at num_operands() in genemit.c and tell me where it could fail with
a rtl as above ?

Philipp

************************************************************
 If builders would build houses like programmers did       
 their programs, the first woodpecker to come along would
 mean the end of all civilization  



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