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

Martin Sebor <msebor at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
                 CC|                            |msebor at gcc dot gnu.org
         Resolution|---                         |INVALID

--- Comment #2 from Martin Sebor <msebor at gcc dot gnu.org> ---
As explained in comment #1, with -fpic extern functions are not considered
candidates for inlining because they can be superimposed.  Without -fpic GCC
sees that the inlined function can return a string that's as long as 55
characters but with the option a superimposed implementation could be
guaranteed to return a shorter string.  The same effect can be seen with other
middle-end warnings, including for example -Warray-bounds with the following
modified test case:

struct b
{
  const char *h(int) const;
  char c[4][56];
};

const char *b::h(int d) const
{
  return c[d];   // no -Warray-bounds with -fpic
}

void f() {
  b a;
  __builtin_puts (a.h (99));
}

Reply via email to