This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB 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: [Patch] p-exp.y: Typecast left operand of BINOP_DIV to long double



> -----Original Message-----
> From: Daniel Jacobowitz [mailto:drow@false.org]
> Sent: Thursday, January 31, 2008 11:27 PM
> To: Pierre Muller
> Cc: gdb-patches@sourceware.org
> Subject: Re: [Patch] p-exp.y: Typecast left operand of BINOP_DIV to
> long double
> 
> On Mon, Jan 28, 2008 at 04:47:26PM +0100, Pierre Muller wrote:
> >   Could someone please confirm that the
> > way I inserted the implicit typecast in the parser is
> > correct?
> >   All comments most welcome.
> 
> It looks OK to me.  Does the type of the left operand completely
> determine the type of the operation, or do you need to worry about the
> type of the right-hand exp too before you cast?

  But how can I do this?
It is still not really clear to me how I can 
insert a typecast to left operand, only after
right operand has been parsed. 
  It would indeed be better to only do the typecast if both are integral
types.

> > @@ -367,7 +370,15 @@ exp        :       exp '*' exp
> >                         { write_exp_elt_opcode (BINOP_MUL); }
> >         ;
> >
> > -exp    :       exp '/' exp
> > +exp    :       exp '/' {
> > +                         if (current_type && is_integral_type
> > (current_type))
> > +                           {
> > +                             write_exp_elt_opcode (UNOP_CAST);
> > +                             write_exp_elt_type
> (builtin_type_long_double);
> > +                             write_exp_elt_opcode (UNOP_CAST);
> > +                           }
> > +                       }
> > +               exp
> >                         { write_exp_elt_opcode (BINOP_DIV); }
> >         ;
> >
> 
> Won't current_type still be integral after this?  Try 1 / 2 / 3.
Whoops, of course, this lacks a
  current_type = builtin_type_long_double 
assignment.

Thanks for the comments.

Pierre




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