This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PING^3] PR middle-end/18071 -Winline does not respect -fno-default-inline
- From: "Manuel López-Ibáñez" <lopezibanez at gmail dot com>
- To: "Mark Mitchell" <mark at codesourcery dot com>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Sun, 4 Mar 2007 22:17:36 +0000
- Subject: Re: [PING^3] PR middle-end/18071 -Winline does not respect -fno-default-inline
- References: <6c33472e0702071229q497ede7blfdbf27619d20ceba@mail.gmail.com> <6c33472e0702161016q25f83139n860a9ae6b29d7fa@mail.gmail.com> <6c33472e0702230129p521b9ccam36957a9f97a6ef2c@mail.gmail.com> <45EB2CE4.7010301@codesourcery.com>
On 04/03/07, Mark Mitchell <mark@codesourcery.com> wrote:
Manuel López-Ibáñez wrote:
> cp/
> * decl.c (start_method): Don't set DECL_DECLARED_INLINE_P if
> -fno-default-inline.
I don't think this change is correct. DECL_DECLARED_INLINE_P controls
linkage, and -fno-default-inline is documented as not changing linkage.
Thus, the change that you're making might affect the linkage of inline
functions in object files, which would be bad. The C++ front end sets
DECL_DECLARED_INLINE_P, but no DECL_INLINE, which seems exactly
consistent with the documentation: this function should be treated as
inline for linkage purposes, but the middle end should not try to inline it.
I was afraid of this as I said: 'I am not sure whether the latter
breaks the current description of -fno-default-inline: "Note that
these functions will have linkage
like inline functions; they just won't be inlined by default".'
The problem is that DECL_DECLARED_INLINE_P has two meanings. It
controls the linkage and it also denotes which functions were
explicitly declared inline. Since both meanings can contradict in this
case (a function was not declared inline but it has "inline linkage"),
it is impossible to detect this case with just one flag.
So, I am not sure how this can be solved. Adding yet another flag to
each tree node just to handle this case seems a bit overkill to me.
Cheers,
Manuel.
--
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713