netdev
[Top] [All Lists]

Re: gcc confused about static inline. - route.c

To: cliff white <cliffw@xxxxxxxx>
Subject: Re: gcc confused about static inline. - route.c
From: Dave Jones <davej@xxxxxxxxxx>
Date: Mon, 28 Mar 2005 16:41:03 -0500
Cc: jgarzik@xxxxxxxxx, netdev@xxxxxxxxxxx
In-reply-to: <20050328132314.480b8b1d@es175>
References: <20050328132314.480b8b1d@es175>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mutt/1.4.1i
On Mon, Mar 28, 2005 at 01:23:14PM -0800, cliff white wrote:
 > 
 > Building the gkernel bits, have this error:
 > 
 > net/ipv4/route.c: In function `rt_remove_balanced_route':
 > net/ipv4/route.c:151: sorry, unimplemented: inlining failed in call to 
 > 'compare_keys': function body not available
 > net/ipv4/route.c:540: sorry, unimplemented: called from here
 > 
 > route.c has this define at line 151
 > :
 > static inline int compare_keys(struct flowi *fl1, struct flowi *fl2);
 > 
 > function body is defined starting at line 861. 
 > 
 > We are using gcc 3.4.2 right now, is there a way to fix this?
 > thanks
 > cliffw


Shuffling the order of the functions fixed this for me.

                Dave

Signed-off-by: Dave Jones <davej@xxxxxxxxxx>

diff -urNp --exclude-from=/home/davej/.exclude linux-10001/init/Makefile 
linux-10002/init/Makefile
--- linux-2.6.11/net/ipv4/route.c~      2005-03-24 19:18:24.000000000 -0500
+++ linux-2.6.11/net/ipv4/route.c       2005-03-24 19:19:39.000000000 -0500
@@ -520,6 +520,13 @@ static inline u32 rt_score(struct rtable
        return score;
 }
 
+static inline int compare_keys(struct flowi *fl1, struct flowi *fl2)
+{
+       return memcmp(&fl1->nl_u.ip4_u, &fl2->nl_u.ip4_u, 
sizeof(fl1->nl_u.ip4_u)) == 0 &&
+              fl1->oif     == fl2->oif &&
+              fl1->iif     == fl2->iif;
+}
+
 #ifdef CONFIG_IP_ROUTE_MULTIPATH_CACHED
 static struct rtable **rt_remove_balanced_route(struct rtable **chain_head,
                                                struct rtable *expentry,
@@ -858,13 +865,6 @@ work_done:
 out:   return 0;
 }
 
-static inline int compare_keys(struct flowi *fl1, struct flowi *fl2)
-{
-       return memcmp(&fl1->nl_u.ip4_u, &fl2->nl_u.ip4_u, 
sizeof(fl1->nl_u.ip4_u)) == 0 &&
-              fl1->oif     == fl2->oif &&
-              fl1->iif     == fl2->iif;
-}
-
 static int rt_intern_hash(unsigned hash, struct rtable *rt, struct rtable **rp)
 {
        struct rtable   *rth, **rthp;

<Prev in Thread] Current Thread [Next in Thread>