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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |memory-hog
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2017-11-17
     Ever confirmed|0                           |1
      Known to fail|                            |7.2.1

--- Comment #16 from Richard Biener <rguenth at gcc dot gnu.org> ---
Not by this commit.  Jakubs testcase is still slow in GCC 7 (and uses >28GB
memory - ick, didn't even finish compiling).

We seem to blow up during early inlining here, because we get BBs with
millions of

__asm__ __volatile__("" :  :  : "memory");
__asm__ __volatile__("" :  :  : "memory");
__asm__ __volatile__("" :  :  : "memory");
__asm__ __volatile__("" :  :  : "memory");
__asm__ __volatile__("" :  :  : "memory");
__asm__ __volatile__("" :  :  : "memory");
__asm__ __volatile__("" :  :  : "memory");
__asm__ __volatile__("" :  :  : "memory");
__asm__ __volatile__("" :  :  : "memory");
__asm__ __volatile__("" :  :  : "memory");
...

counting those as zero size probably isn't wise if we don't "optimize"
them during inlining...

This issue likely hides the underlying old issue.

    case GIMPLE_ASM:
      {
        int count = asm_str_count (gimple_asm_string (as_a <gasm *> (stmt)));
        /* 1000 means infinity. This avoids overflows later
           with very long asm statements.  */
        if (count > 1000)
          count = 1000;
        return count;
      }

should return MIN (1, count) even if in this case the asm doesn't generate
any code.

Reply via email to