[Bug middle-end/52244] [4.5/4.6/4.7 Regression] wrong code for function returning union between int and _Bool at O > 2, with no-early-inlining

iains at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Feb 14 10:47:00 GMT 2012


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

Iain Sandoe <iains at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|target                      |middle-end

--- Comment #3 from Iain Sandoe <iains at gcc dot gnu.org> 2012-02-14 10:46:35 UTC ---

inline-union-ret-val.c.064t.retslot has...

;; Function foo (foo, funcdef_no=1, decl_uid=2009, cgraph_uid=1)

foo ()
{
  _Bool u$b;
  union u_t u;

<bb 2>:
  u.c = 4660;
  u$b_6 = MEM[(union u_r *)&u].b;
  MEM[(union u_r *)&<retval>].b = u$b_6;
  return <retval>;

}


inline-union-ret-val.c.068t.mergephi2 contains....

;; Function foo (foo, funcdef_no=1, decl_uid=2009, cgraph_uid=1)

foo ()
{
  _Bool u$b;
  union u_t u;

<bb 2>:
  u.c = 4660;
  <retval>.b = 0;
  return <retval>;

}

inline-union-ret-val.c.149t.optimized ...

;; Function foo (foo, funcdef_no=1, decl_uid=2009, cgraph_uid=1)

foo ()
{
<bb 2>:
  <retval>.b = 0;
  return <retval>;

}



More information about the Gcc-bugs mailing list