[Bug tree-optimization/86214] [8/9 Regression] Strongly increased stack usage

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Dec 20 12:46:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86214

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P2
                 CC|                            |matz at gcc dot gnu.org,
                   |                            |rguenth at gcc dot gnu.org

--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> ---
The issue with Alex testcase is that inlining when faced with

ff ()
{
  charD.10 cD.2379[1000];

  <bb 2> :
  f (&cD.2379);

  <bb 3> :
  cD.2379 ={v} {CLOBBER};
  return;

  <bb 4> :
<L0>:
  cD.2379 ={v} {CLOBBER};
  resx 1

}

ends up unifying the resx 1 parts, making the lifetime of the two instances
overlap:

g (intD.9 nD.2380)
{
  charD.10 cD.2411[1000];
  charD.10 cD.2410[1000];
...
  <bb 4> :
  f (&cD.2410);

  <bb 5> :
  cD.2410 ={v} {CLOBBER};
  f (&cD.2411);

  <bb 6> :
  cD.2411 ={v} {CLOBBER};
... all fine up to here

  <bb 9> :
<L4>:
  sD.2383 ={v} {CLOBBER};
  cD.2399 ={v} {CLOBBER};
  resx 1

oops.  When analyzing lifetime of variables during RTL expansion we might
want to not consider blocks where only the clobbers mention the vars thus
virtually move those up as far as possible.


More information about the Gcc-bugs mailing list