* [Bug tree-optimization/33763] [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
@ 2007-10-14 10:26 ` rguenth at gcc dot gnu dot org
2007-10-14 12:10 ` hubicka at gcc dot gnu dot org
` (17 subsequent siblings)
18 siblings, 0 replies; 23+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2007-10-14 10:26 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from rguenth at gcc dot gnu dot org 2007-10-14 10:26 -------
Confirmed.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rguenth at gcc dot gnu dot
| |org
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2007-10-14 10:26:41
date| |
Target Milestone|--- |4.2.3
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
2007-10-14 10:26 ` [Bug tree-optimization/33763] " rguenth at gcc dot gnu dot org
@ 2007-10-14 12:10 ` hubicka at gcc dot gnu dot org
2007-10-14 12:50 ` hubicka at gcc dot gnu dot org
` (16 subsequent siblings)
18 siblings, 0 replies; 23+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2007-10-14 12:10 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from hubicka at gcc dot gnu dot org 2007-10-14 12:10 -------
This is result of ugly hack handling redefined extern inline functions. The
most sane semantics (not what 3.2.x did) would be that function if inlined
should get the extern inline body, but the body from redefined non-extern
inline function should be output off-line and used when called.
Cgraph code can deal with this via cgraph->global->inline_decl. The problem is
that frontend currently behave in a way parsing extern inline body and
finalizing it in a cgraph, but before unit is finished and cgraph has chance to
use it, the redefinition overwrite the body.
If frontend was updated to produce 2 separate declarations, one for the extern
inline body, one for the offline body and set the inline_decl of the second
declaration to point to first, things should just work.
There is one extra problem to this - extern inline functions are declared as
public and handled so by quite large part of compiler. This means that when
doing --combine (or future LTO), we end up having multiple copies of global
extern inline function and we end up not inlining them at all too.
I think frontend should be told to make those functions static (or we need to
update rest of fronend code to special case this)
Honza
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
2007-10-14 10:26 ` [Bug tree-optimization/33763] " rguenth at gcc dot gnu dot org
2007-10-14 12:10 ` hubicka at gcc dot gnu dot org
@ 2007-10-14 12:50 ` hubicka at gcc dot gnu dot org
2007-10-14 21:11 ` jakub at gcc dot gnu dot org
` (15 subsequent siblings)
18 siblings, 0 replies; 23+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2007-10-14 12:50 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from hubicka at gcc dot gnu dot org 2007-10-14 12:50 -------
This patch should disable the sorry message in this case, but I would argue
that outputting sorry here is right - we fail to inline alway_inline function
because of implementation limitation. So I would claim 3.2.0 being buggy rather
than mainline.
Honza
Index: tree-inline.c
===================================================================
*** tree-inline.c (revision 129072)
--- tree-inline.c (working copy)
*************** expand_call_inline (basic_block bb, tree
*** 2560,2565 ****
--- 2560,2571 ----
if (!cgraph_inline_p (cg_edge, &reason))
{
if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn))
+ /* For extern inline functions that get redefined we always
+ silently ignored alway_inline flag. Better behaviour would
+ be to be able to keep both bodies and use extern inline body
+ for inlining, but we can't do that because frontends overwrite
+ the body. */
+ && !cg_edge->callee->local.redefined_extern_inline
/* Avoid warnings during early inline pass. */
&& (!flag_unit_at_a_time || cgraph_global_info_ready))
{
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
` (2 preceding siblings ...)
2007-10-14 12:50 ` hubicka at gcc dot gnu dot org
@ 2007-10-14 21:11 ` jakub at gcc dot gnu dot org
2007-11-05 2:48 ` mmitchel at gcc dot gnu dot org
` (14 subsequent siblings)
18 siblings, 0 replies; 23+ messages in thread
From: jakub at gcc dot gnu dot org @ 2007-10-14 21:11 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from jakub at gcc dot gnu dot org 2007-10-14 21:10 -------
At least for gcc-4_1-branch and gcc-4_2-branch your patch is IMHO the best
thing we can do. I agree that with cgraph it shouldn't be very hard to
actually
register two bodies, one for extern inline fn and one for the real definition,
but am not sure if such changes are appropriate this late in 4.3 development,
so
perhaps it should be applied also for 4.3 and early in 4.4 we should come up
with the real fixes.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
` (3 preceding siblings ...)
2007-10-14 21:11 ` jakub at gcc dot gnu dot org
@ 2007-11-05 2:48 ` mmitchel at gcc dot gnu dot org
2008-01-08 17:08 ` rguenth at gcc dot gnu dot org
` (13 subsequent siblings)
18 siblings, 0 replies; 23+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2007-11-05 2:48 UTC (permalink / raw)
To: gcc-bugs
--
mmitchel at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
` (4 preceding siblings ...)
2007-11-05 2:48 ` mmitchel at gcc dot gnu dot org
@ 2008-01-08 17:08 ` rguenth at gcc dot gnu dot org
2008-01-08 17:47 ` jakub at gcc dot gnu dot org
` (12 subsequent siblings)
18 siblings, 0 replies; 23+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2008-01-08 17:08 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from rguenth at gcc dot gnu dot org 2008-01-08 16:49 -------
I would suggest to go with the patch in comment #3.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
` (5 preceding siblings ...)
2008-01-08 17:08 ` rguenth at gcc dot gnu dot org
@ 2008-01-08 17:47 ` jakub at gcc dot gnu dot org
2008-01-08 18:02 ` rguenther at suse dot de
` (11 subsequent siblings)
18 siblings, 0 replies; 23+ messages in thread
From: jakub at gcc dot gnu dot org @ 2008-01-08 17:47 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from jakub at gcc dot gnu dot org 2008-01-08 17:25 -------
So do I and even am using that patch for quite some time in our gcc packages.
But Mark objected to that:
http://gcc.gnu.org/ml/gcc-patches/2007-11/msg00589.html
The current state of things is bad, because with glibc 2.7+ several valid
programs don't compile. And this late in stage3 is probably dangerous to play
with two different bodies in cgraph.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
` (6 preceding siblings ...)
2008-01-08 17:47 ` jakub at gcc dot gnu dot org
@ 2008-01-08 18:02 ` rguenther at suse dot de
2008-01-12 14:16 ` hubicka at gcc dot gnu dot org
` (10 subsequent siblings)
18 siblings, 0 replies; 23+ messages in thread
From: rguenther at suse dot de @ 2008-01-08 18:02 UTC (permalink / raw)
To: gcc-bugs
------- Comment #7 from rguenther at suse dot de 2008-01-08 17:27 -------
Subject: Re: [4.1/4.2/4.3 Regression] Bogus
inlining failed in call to `xxx': redefined extern inline functions are not
considered for inlining
On Tue, 8 Jan 2008, jakub at gcc dot gnu dot org wrote:
> ------- Comment #6 from jakub at gcc dot gnu dot org 2008-01-08 17:25 -------
> So do I and even am using that patch for quite some time in our gcc packages.
So do I.
> But Mark objected to that:
> http://gcc.gnu.org/ml/gcc-patches/2007-11/msg00589.html
> The current state of things is bad, because with glibc 2.7+ several valid
> programs don't compile. And this late in stage3 is probably dangerous to play
> with two different bodies in cgraph.
Right, this is something for stage1.
Richard.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
` (7 preceding siblings ...)
2008-01-08 18:02 ` rguenther at suse dot de
@ 2008-01-12 14:16 ` hubicka at gcc dot gnu dot org
2008-01-12 16:23 ` rguenther at suse dot de
` (9 subsequent siblings)
18 siblings, 0 replies; 23+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2008-01-12 14:16 UTC (permalink / raw)
To: gcc-bugs
------- Comment #8 from hubicka at gcc dot gnu dot org 2008-01-12 13:55 -------
I can definitely commit the patch to silence the (IMO valid) diagnostics.
However, why programs are using always_inline and extern inline combination at
all? Just extern inline should be enough.
/* For GNU C extern inline functions disregard inline limits. */
if (DECL_EXTERNAL (fndecl)
&& DECL_DECLARED_INLINE_P (fndecl))
DECL_DISREGARD_INLINE_LIMITS (fndecl) = 1;
So perhaps just modifying glibc headers to not do both would do the trick?
I agree that solving this problem correctly via two functions (not only bodies,
but simply two declarations) is probably bit tricky for stage3. We however have
related PR34609 and PR31529 demonstrating same problem in different context.
Honza
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
` (8 preceding siblings ...)
2008-01-12 14:16 ` hubicka at gcc dot gnu dot org
@ 2008-01-12 16:23 ` rguenther at suse dot de
2008-02-01 17:00 ` jsm28 at gcc dot gnu dot org
` (8 subsequent siblings)
18 siblings, 0 replies; 23+ messages in thread
From: rguenther at suse dot de @ 2008-01-12 16:23 UTC (permalink / raw)
To: gcc-bugs
------- Comment #9 from rguenther at suse dot de 2008-01-12 15:13 -------
Subject: Re: [4.1/4.2/4.3 Regression] Bogus
inlining failed in call to `xxx': redefined extern inline functions are not
considered for inlining
On Sat, 12 Jan 2008, hubicka at gcc dot gnu dot org wrote:
> ------- Comment #8 from hubicka at gcc dot gnu dot org 2008-01-12 13:55 -------
> I can definitely commit the patch to silence the (IMO valid) diagnostics.
> However, why programs are using always_inline and extern inline combination at
> all? Just extern inline should be enough.
> /* For GNU C extern inline functions disregard inline limits. */
> if (DECL_EXTERNAL (fndecl)
> && DECL_DECLARED_INLINE_P (fndecl))
> DECL_DISREGARD_INLINE_LIMITS (fndecl) = 1;
>
> So perhaps just modifying glibc headers to not do both would do the trick?
>
> I agree that solving this problem correctly via two functions (not only bodies,
> but simply two declarations) is probably bit tricky for stage3. We however have
> related PR34609 and PR31529 demonstrating same problem in different context.
Can you give it a try? If it looks reasonably safe I would certainly
prefer such a solution.
Richard.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
` (9 preceding siblings ...)
2008-01-12 16:23 ` rguenther at suse dot de
@ 2008-02-01 17:00 ` jsm28 at gcc dot gnu dot org
2008-02-13 18:16 ` hubicka at gcc dot gnu dot org
` (7 subsequent siblings)
18 siblings, 0 replies; 23+ messages in thread
From: jsm28 at gcc dot gnu dot org @ 2008-02-01 17:00 UTC (permalink / raw)
To: gcc-bugs
------- Comment #10 from jsm28 at gcc dot gnu dot org 2008-02-01 16:54 -------
4.2.3 is being released now, changing milestones of open bugs to 4.2.4.
--
jsm28 at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|4.2.3 |4.2.4
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
` (10 preceding siblings ...)
2008-02-01 17:00 ` jsm28 at gcc dot gnu dot org
@ 2008-02-13 18:16 ` hubicka at gcc dot gnu dot org
2008-05-19 20:29 ` [Bug tree-optimization/33763] [4.1/4.2/4.3/4.4 " jsm28 at gcc dot gnu dot org
` (6 subsequent siblings)
18 siblings, 0 replies; 23+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2008-02-13 18:16 UTC (permalink / raw)
To: gcc-bugs
------- Comment #11 from hubicka at gcc dot gnu dot org 2008-02-13 18:15 -------
I must say that I don't see it that safe: we can't clone the functions because
at the time fronend decide to rewrite the body by new one we are not having
functions gimplified yet. (well we can clone, but we want to get rid of
non-gimple inlining code too). Keeping the unclonned body around seems
difficult in combination with one declaration rule. But perhaps it is just my
limited knowledge of C and C++ frontends here..
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.1/4.2/4.3/4.4 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
` (11 preceding siblings ...)
2008-02-13 18:16 ` hubicka at gcc dot gnu dot org
@ 2008-05-19 20:29 ` jsm28 at gcc dot gnu dot org
2008-07-04 22:52 ` [Bug tree-optimization/33763] [4.2/4.3/4.4 " jsm28 at gcc dot gnu dot org
` (5 subsequent siblings)
18 siblings, 0 replies; 23+ messages in thread
From: jsm28 at gcc dot gnu dot org @ 2008-05-19 20:29 UTC (permalink / raw)
To: gcc-bugs
------- Comment #12 from jsm28 at gcc dot gnu dot org 2008-05-19 20:23 -------
4.2.4 is being released, changing milestones to 4.2.5.
--
jsm28 at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|4.2.4 |4.2.5
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.2/4.3/4.4 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
` (12 preceding siblings ...)
2008-05-19 20:29 ` [Bug tree-optimization/33763] [4.1/4.2/4.3/4.4 " jsm28 at gcc dot gnu dot org
@ 2008-07-04 22:52 ` jsm28 at gcc dot gnu dot org
2008-11-13 13:56 ` jakub at gcc dot gnu dot org
` (4 subsequent siblings)
18 siblings, 0 replies; 23+ messages in thread
From: jsm28 at gcc dot gnu dot org @ 2008-07-04 22:52 UTC (permalink / raw)
To: gcc-bugs
------- Comment #13 from jsm28 at gcc dot gnu dot org 2008-07-04 22:51 -------
Closing 4.1 branch.
--
jsm28 at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|[4.1/4.2/4.3/4.4 Regression]|[4.2/4.3/4.4 Regression]
|Bogus inlining failed in |Bogus inlining failed in
|call to `xxx': redefined |call to `xxx': redefined
|extern inline functions are |extern inline functions are
|not considered for inlining |not considered for inlining
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.2/4.3/4.4 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
` (13 preceding siblings ...)
2008-07-04 22:52 ` [Bug tree-optimization/33763] [4.2/4.3/4.4 " jsm28 at gcc dot gnu dot org
@ 2008-11-13 13:56 ` jakub at gcc dot gnu dot org
2009-03-31 20:13 ` [Bug tree-optimization/33763] [4.3/4.4/4.5 " jsm28 at gcc dot gnu dot org
` (3 subsequent siblings)
18 siblings, 0 replies; 23+ messages in thread
From: jakub at gcc dot gnu dot org @ 2008-11-13 13:56 UTC (permalink / raw)
To: gcc-bugs
------- Comment #14 from jakub at gcc dot gnu dot org 2008-11-13 13:55 -------
The reason for using always_inline attribute in glibc headers is that whether
these (tiny) wrappers are inlined or not is a security matter for the program
(if they are inlined, -D_FORTIFY_SOURCE checking is performed, if they are not,
then no checking is done), and that checking shouldn't be affected by how many
functions were already inlined into some function etc.
As this isn't going to be fixed in 4.4 either, could we get the sorry quieted
up?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.3/4.4/4.5 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
` (14 preceding siblings ...)
2008-11-13 13:56 ` jakub at gcc dot gnu dot org
@ 2009-03-31 20:13 ` jsm28 at gcc dot gnu dot org
2009-08-04 12:37 ` rguenth at gcc dot gnu dot org
` (2 subsequent siblings)
18 siblings, 0 replies; 23+ messages in thread
From: jsm28 at gcc dot gnu dot org @ 2009-03-31 20:13 UTC (permalink / raw)
To: gcc-bugs
------- Comment #15 from jsm28 at gcc dot gnu dot org 2009-03-31 20:12 -------
Closing 4.2 branch.
--
jsm28 at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|[4.2/4.3/4.4/4.5 Regression]|[4.3/4.4/4.5 Regression]
|Bogus inlining failed in |Bogus inlining failed in
|call to `xxx': redefined |call to `xxx': redefined
|extern inline functions are |extern inline functions are
|not considered for inlining |not considered for inlining
Target Milestone|4.2.5 |4.3.4
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.3/4.4/4.5 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
` (15 preceding siblings ...)
2009-03-31 20:13 ` [Bug tree-optimization/33763] [4.3/4.4/4.5 " jsm28 at gcc dot gnu dot org
@ 2009-08-04 12:37 ` rguenth at gcc dot gnu dot org
2010-01-16 6:52 ` pinskia at gcc dot gnu dot org
2010-05-22 18:20 ` [Bug tree-optimization/33763] [4.3/4.4/4.5/4.6 " rguenth at gcc dot gnu dot org
18 siblings, 0 replies; 23+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-08-04 12:37 UTC (permalink / raw)
To: gcc-bugs
------- Comment #16 from rguenth at gcc dot gnu dot org 2009-08-04 12:28 -------
GCC 4.3.4 is being released, adjusting target milestone.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|4.3.4 |4.3.5
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.3/4.4/4.5 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
` (16 preceding siblings ...)
2009-08-04 12:37 ` rguenth at gcc dot gnu dot org
@ 2010-01-16 6:52 ` pinskia at gcc dot gnu dot org
2010-05-22 18:20 ` [Bug tree-optimization/33763] [4.3/4.4/4.5/4.6 " rguenth at gcc dot gnu dot org
18 siblings, 0 replies; 23+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2010-01-16 6:52 UTC (permalink / raw)
To: gcc-bugs
------- Comment #17 from pinskia at gcc dot gnu dot org 2010-01-16 06:52 -------
Note on the trunk it fails at -O1 but not -O2.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.3/4.4/4.5/4.6 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
2007-10-13 19:15 [Bug tree-optimization/33763] New: [4.1/4.2/4.3 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining jakub at gcc dot gnu dot org
` (17 preceding siblings ...)
2010-01-16 6:52 ` pinskia at gcc dot gnu dot org
@ 2010-05-22 18:20 ` rguenth at gcc dot gnu dot org
18 siblings, 0 replies; 23+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-05-22 18:20 UTC (permalink / raw)
To: gcc-bugs
------- Comment #18 from rguenth at gcc dot gnu dot org 2010-05-22 18:11 -------
GCC 4.3.5 is being released, adjusting target milestone.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|4.3.5 |4.3.6
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.3/4.4/4.5/4.6 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
[not found] <bug-33763-4@http.gcc.gnu.org/bugzilla/>
@ 2011-03-04 12:37 ` rguenth at gcc dot gnu.org
2011-03-05 12:45 ` hubicka at ucw dot cz
2011-03-11 22:16 ` pthaugen at gcc dot gnu.org
2 siblings, 0 replies; 23+ messages in thread
From: rguenth at gcc dot gnu.org @ 2011-03-04 12:37 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
Richard Guenther <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed|2007-10-14 10:26:41 |2011-03-04 10:26:41
Known to fail| |4.6.0
--- Comment #19 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-03-04 12:36:56 UTC ---
Still fails to inline baz (not a regression) and diagnoses this (this is
the regression).
> When a gnu_inline (or extern inline gnu89) function has a real is redefined, we
> don't want any inlining for that function even if it is always_inline, at least
> GCC always behaved that way and even on the simpler testcase behaves that way.
I don't think this is the desired behavior (nor is it documented). If it is
then we should simply drop the always-inline attribute when merging the
function decls (basically throw away the inline definition).
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.3/4.4/4.5/4.6 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
[not found] <bug-33763-4@http.gcc.gnu.org/bugzilla/>
2011-03-04 12:37 ` rguenth at gcc dot gnu.org
@ 2011-03-05 12:45 ` hubicka at ucw dot cz
2011-03-11 22:16 ` pthaugen at gcc dot gnu.org
2 siblings, 0 replies; 23+ messages in thread
From: hubicka at ucw dot cz @ 2011-03-05 12:45 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
--- Comment #20 from Jan Hubicka <hubicka at ucw dot cz> 2011-03-05 12:45:29 UTC ---
> I don't think this is the desired behavior (nor is it documented). If it is
> then we should simply drop the always-inline attribute when merging the
> function decls (basically throw away the inline definition).
Well, the desired behaviour IMO is to get one body for inline copies, other
body for offline copy (this is also only consistent interpretation with LTO.
Current way of inlining them early and then droppipng is bit weird). This is
quite easy to do at cgraph level once frontend is able to produce both function
bodies at two different declarations (one static inline, other external) tells
so to the backend.
No one volunteed to do this at frontend side yet :(
Honza
^ permalink raw reply [flat|nested] 23+ messages in thread
* [Bug tree-optimization/33763] [4.3/4.4/4.5/4.6 Regression] Bogus inlining failed in call to `xxx': redefined extern inline functions are not considered for inlining
[not found] <bug-33763-4@http.gcc.gnu.org/bugzilla/>
2011-03-04 12:37 ` rguenth at gcc dot gnu.org
2011-03-05 12:45 ` hubicka at ucw dot cz
@ 2011-03-11 22:16 ` pthaugen at gcc dot gnu.org
2 siblings, 0 replies; 23+ messages in thread
From: pthaugen at gcc dot gnu.org @ 2011-03-11 22:16 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763
Pat Haugen <pthaugen at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |pthaugen at gcc dot gnu.org
--- Comment #21 from Pat Haugen <pthaugen at gcc dot gnu.org> 2011-03-11 22:16:12 UTC ---
An example from libhugetlbfs. Note the original call wasn't recursive,
following is reduced code I got from delta.
$ cat gethugepagesizes.c
extern __inline __attribute__ ((__always_inline__))
int open (__const char *__path, int __oflag, ...)
{
}
void cleanup (void);
open (const char *file, int flags, ...)
{
char fname[4096 + 1];
int fd;
cleanup ();
fd = open (fname, 01 | 0100);
}
void cleanup (void)
{
cleanup_fake_data ();
}
$ ~/install/gcc/trunk/bin/gcc -O3 -c gethugepagesizes.c
gethugepagesizes.c: In function 'open':
gethugepagesizes.c:7:1: sorry, unimplemented: inlining failed in call to
'open': redefined extern inline functions are not considered for inlining
gethugepagesizes.c:12:6: sorry, unimplemented: called from here
^ permalink raw reply [flat|nested] 23+ messages in thread