------- Comment #6 from rguenth at gcc dot gnu dot org  2008-01-08 23:19 -------
struct s
{
  long long id() const { return (this->a << 16) >> 16; }
  long long a : 48;
  int i1 : 16;
};
long long bar(struct s *x) { return (x->a << 16) >> 16; }

shows different IL from the FE for id() vs bar():


;; Function long long int s::id() const (_ZNK1s2idEv)
;; enabled by -tree-original


return <retval> = (long long int) (((<unnamed-signed:48>) ((const struct s *)
this)->a << 16) >> 16);


;; Function long long int bar(s*) (_Z3barP1s)
;; enabled by -tree-original

return <retval> = ((long long int) x->a << 16) >> 16;


despite what the correct semantics is (which is I believe the one of id()),
there is a bogus inconsistency.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rguenth at gcc dot gnu dot
                   |                            |org
   Last reconfirmed|2007-12-08 19:59:41         |2008-01-08 23:19:38
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33819

Reply via email to