gcc-patches@gcc.gnu.org
[Top] [All Lists]

Re: [PATCH] Check precision rather than machine mode in STRIP_NOPS and S

Subject: Re: [PATCH] Check precision rather than machine mode in STRIP_NOPS and STRIP_SIGN_NOPS
From: Adam Nemet
Date: Tue, 9 Jun 2009 14:13:50 -0700
Eric Botcazou writes:
> > Do you mean here conversions that are processed by STRIP_NOPS?  STRIP_NOPS
> > is not used to process all conversions.  There are things that are
> > converted with other operators like FLOAT_EXPR, FIX_TRUNC_EXPR,
> > VIEW_CONVERT_EXPR, etc.  This code solely handles NOP_EXPR, CONVERT_EXPR
> > and NON_LVALUE_EXPR.
> 
> Yes, I was thinking of NOP_EXPR.

Are you sure these are performed with NOP_EXPR rather than VIEW_CONVERT_EXPR.
I see this in convert() in ada/gcc-interface/utils.c:

  4095    /* If we are converting between two aggregate types that are mere
  4096       variants, just make a VIEW_CONVERT_EXPR.  */
  4097    else if (code == ecode
  4098             && AGGREGATE_TYPE_P (type)
  4099             && gnat_types_compatible_p (type, etype))
  4100      return build1 (VIEW_CONVERT_EXPR, type, expr);

I started up a bootstrap including Ada with an assert (!AGGREGATE_TYPE_P
(...)) in STRIP_NOPS.

Sorry for pushing this but I very much agree with Joseph that it would be an
improvement if we didn't have to check TYPE_MODE here.

Adam

<Prev in Thread] Current Thread [Next in Thread>