* Re: [next:akpm 129/309] net/core/sock.c:274:36: error: initializer element is not constant [not found] ` <CA+8MBbJkGN+zGBdD5Hg26wW_6E9L_ufoutn7wj+Y+nhtW7WKWg@mail.gmail.com> @ 2012-08-02 15:02 ` Fengguang Wu 2012-08-12 1:33 ` Michael Cree 0 siblings, 1 reply; 7+ messages in thread From: Fengguang Wu @ 2012-08-02 15:02 UTC (permalink / raw) To: linux-alpha Cc: Richard Henderson, Ivan Kokshaysky, Matt Turner, Tony Luck, James Bottomley, John David Anglin, Mel Gorman, kernel-janitors, Kyle McMartin, Andrew Morton, LKML, Parisc List On Thu, Jul 26, 2012 at 10:06:41AM -0700, Tony Luck wrote: > On Tue, Jul 24, 2012 at 10:10 PM, James Bottomley > <James.Bottomley@hansenpartnership.com> wrote: > >> Here is the line in sock.i: > >> > >> struct static_key memalloc_socks = ((struct static_key) { .enabled = > >> ((atomic_t) { (0) }) }); > > > > The above line contains two compound literals. It also uses a designated > > initializer to initialize the field enabled. A compound literal is not a > > constant expression. > > Seeing the same thing on ia64 building next-20120726. Same fix works > for me ... so I'll steal this whole changelog and attributes. I got the same error for alpha, the same fix applies. --- From: Mel Gorman <mgorman@suse.de> Subject: [PATCH] [ALPHA] Redefine ATOMIC_INIT and ATOMIC64_INIT to drop the casts The following build error occurred during an alpha build: net/core/sock.c:274:36: error: initializer element is not constant Dave Anglin says: > Here is the line in sock.i: > > struct static_key memalloc_socks = ((struct static_key) { .enabled = > ((atomic_t) { (0) }) }); The above line contains two compound literals. It also uses a designated initializer to initialize the field enabled. A compound literal is not a constant expression. The location of the above statement isn't fully clear, but if a compound literal occurs outside the body of a function, the initializer list must consist of constant expressions. Reported-by: Fengguang Wu <fengguang.wu@intel.com> Signed-off-by: Mel Gorman <mgorman@suse.de> Cc: <stable@vger.kernel.org> --- arch/alpha/include/asm/atomic.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- linux.orig/arch/alpha/include/asm/atomic.h 2012-05-24 19:03:06.000000000 +0800 +++ linux/arch/alpha/include/asm/atomic.h 2012-08-02 23:01:02.243224220 +0800 @@ -14,8 +14,8 @@ */ -#define ATOMIC_INIT(i) ( (atomic_t) { (i) } ) -#define ATOMIC64_INIT(i) ( (atomic64_t) { (i) } ) +#define ATOMIC_INIT(i) ( { (i) } ) +#define ATOMIC64_INIT(i) ( { (i) } ) #define atomic_read(v) (*(volatile int *)&(v)->counter) #define atomic64_read(v) (*(volatile long *)&(v)->counter) ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [next:akpm 129/309] net/core/sock.c:274:36: error: initializer element is not constant 2012-08-02 15:02 ` [next:akpm 129/309] net/core/sock.c:274:36: error: initializer element is not constant Fengguang Wu @ 2012-08-12 1:33 ` Michael Cree 2012-08-12 2:10 ` Fengguang Wu 2012-08-12 2:14 ` [PATCH] [ALPHA] Redefine ATOMIC_INIT and ATOMIC64_INIT to drop the casts Fengguang Wu 0 siblings, 2 replies; 7+ messages in thread From: Michael Cree @ 2012-08-12 1:33 UTC (permalink / raw) To: Fengguang Wu Cc: linux-alpha, Richard Henderson, Ivan Kokshaysky, Matt Turner, Tony Luck, James Bottomley, John David Anglin, Mel Gorman, kernel-janitors, Kyle McMartin, Andrew Morton, LKML, Parisc List On 03/08/12 03:02, Fengguang Wu wrote: > On Thu, Jul 26, 2012 at 10:06:41AM -0700, Tony Luck wrote: >> On Tue, Jul 24, 2012 at 10:10 PM, James Bottomley >> <James.Bottomley@hansenpartnership.com> wrote: >>>> Here is the line in sock.i: >>>> >>>> struct static_key memalloc_socks = ((struct static_key) { .enabled = >>>> ((atomic_t) { (0) }) }); >>> >>> The above line contains two compound literals. It also uses a designated >>> initializer to initialize the field enabled. A compound literal is not a >>> constant expression. >> >> Seeing the same thing on ia64 building next-20120726. Same fix works >> for me ... so I'll steal this whole changelog and attributes. > > I got the same error for alpha, the same fix applies. Just trying this patch on Alpha against v3.6-rc1 and it leads to new compilation errors, namely: init/init_task.c:12: error: braced-group within expression allowed only inside a function init/init_task.c:13: error: braced-group within expression allowed only inside a function init/init_task.c:16: error: braced-group within expression allowed only inside a function init/init_task.c:16: error: braced-group within expression allowed only inside a function make[1]: *** [init/init_task.o] Error 1 > --- > From: Mel Gorman <mgorman@suse.de> > Subject: [PATCH] [ALPHA] Redefine ATOMIC_INIT and ATOMIC64_INIT to drop the casts > > The following build error occurred during an alpha build: > > net/core/sock.c:274:36: error: initializer element is not constant > > Dave Anglin says: >> Here is the line in sock.i: >> >> struct static_key memalloc_socks = ((struct static_key) { .enabled = >> ((atomic_t) { (0) }) }); > > The above line contains two compound literals. It also uses a designated > initializer to initialize the field enabled. A compound literal is not a > constant expression. > > The location of the above statement isn't fully clear, but if a compound > literal occurs outside the body of a function, the initializer list must > consist of constant expressions. > > Reported-by: Fengguang Wu <fengguang.wu@intel.com> > Signed-off-by: Mel Gorman <mgorman@suse.de> > Cc: <stable@vger.kernel.org> > --- > arch/alpha/include/asm/atomic.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > --- linux.orig/arch/alpha/include/asm/atomic.h 2012-05-24 19:03:06.000000000 +0800 > +++ linux/arch/alpha/include/asm/atomic.h 2012-08-02 23:01:02.243224220 +0800 > @@ -14,8 +14,8 @@ > */ > > > -#define ATOMIC_INIT(i) ( (atomic_t) { (i) } ) > -#define ATOMIC64_INIT(i) ( (atomic64_t) { (i) } ) > +#define ATOMIC_INIT(i) ( { (i) } ) > +#define ATOMIC64_INIT(i) ( { (i) } ) > > #define atomic_read(v) (*(volatile int *)&(v)->counter) > #define atomic64_read(v) (*(volatile long *)&(v)->counter) Cheers Michael. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [next:akpm 129/309] net/core/sock.c:274:36: error: initializer element is not constant 2012-08-12 1:33 ` Michael Cree @ 2012-08-12 2:10 ` Fengguang Wu 2012-08-12 2:42 ` Michael Cree 2012-08-12 2:14 ` [PATCH] [ALPHA] Redefine ATOMIC_INIT and ATOMIC64_INIT to drop the casts Fengguang Wu 1 sibling, 1 reply; 7+ messages in thread From: Fengguang Wu @ 2012-08-12 2:10 UTC (permalink / raw) To: Michael Cree Cc: linux-alpha, Richard Henderson, Ivan Kokshaysky, Matt Turner, Tony Luck, James Bottomley, John David Anglin, Mel Gorman, kernel-janitors, Kyle McMartin, Andrew Morton, LKML, Parisc List On Sun, Aug 12, 2012 at 01:33:09PM +1200, Michael Cree wrote: > On 03/08/12 03:02, Fengguang Wu wrote: > > On Thu, Jul 26, 2012 at 10:06:41AM -0700, Tony Luck wrote: > >> On Tue, Jul 24, 2012 at 10:10 PM, James Bottomley > >> <James.Bottomley@hansenpartnership.com> wrote: > >>>> Here is the line in sock.i: > >>>> > >>>> struct static_key memalloc_socks = ((struct static_key) { .enabled = > >>>> ((atomic_t) { (0) }) }); > >>> > >>> The above line contains two compound literals. It also uses a designated > >>> initializer to initialize the field enabled. A compound literal is not a > >>> constant expression. > >> > >> Seeing the same thing on ia64 building next-20120726. Same fix works > >> for me ... so I'll steal this whole changelog and attributes. > > > > I got the same error for alpha, the same fix applies. > > Just trying this patch on Alpha against v3.6-rc1 and it leads to new > compilation errors, namely: > > init/init_task.c:12: error: braced-group within expression allowed only > inside a function > init/init_task.c:13: error: braced-group within expression allowed only > inside a function > init/init_task.c:16: error: braced-group within expression allowed only > inside a function > init/init_task.c:16: error: braced-group within expression allowed only > inside a function > make[1]: *** [init/init_task.o] Error 1 Sorry! This will actually compile: -#define ATOMIC_INIT(i) ( { (i) } ) +#define ATOMIC_INIT(i) { (i) } Ditto for the 64bit version. I'll send the updated patch. Thanks, Fengguang ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [next:akpm 129/309] net/core/sock.c:274:36: error: initializer element is not constant 2012-08-12 2:10 ` Fengguang Wu @ 2012-08-12 2:42 ` Michael Cree 2012-08-12 13:00 ` John David Anglin 0 siblings, 1 reply; 7+ messages in thread From: Michael Cree @ 2012-08-12 2:42 UTC (permalink / raw) To: Fengguang Wu Cc: linux-alpha, Richard Henderson, Ivan Kokshaysky, Matt Turner, Tony Luck, James Bottomley, John David Anglin, Mel Gorman, kernel-janitors, Kyle McMartin, Andrew Morton, LKML, Parisc List On 12/08/12 14:10, Fengguang Wu wrote: > On Sun, Aug 12, 2012 at 01:33:09PM +1200, Michael Cree wrote: >> On 03/08/12 03:02, Fengguang Wu wrote: >>> On Thu, Jul 26, 2012 at 10:06:41AM -0700, Tony Luck wrote: >>>> On Tue, Jul 24, 2012 at 10:10 PM, James Bottomley >>>> <James.Bottomley@hansenpartnership.com> wrote: >>>>>> Here is the line in sock.i: >>>>>> >>>>>> struct static_key memalloc_socks = ((struct static_key) { .enabled = >>>>>> ((atomic_t) { (0) }) }); >>>>> >>>>> The above line contains two compound literals. It also uses a designated >>>>> initializer to initialize the field enabled. A compound literal is not a >>>>> constant expression. >>>> >>>> Seeing the same thing on ia64 building next-20120726. Same fix works >>>> for me ... so I'll steal this whole changelog and attributes. >>> >>> I got the same error for alpha, the same fix applies. >> >> Just trying this patch on Alpha against v3.6-rc1 and it leads to new >> compilation errors, namely: >> >> init/init_task.c:12: error: braced-group within expression allowed only >> inside a function >> init/init_task.c:13: error: braced-group within expression allowed only >> inside a function >> init/init_task.c:16: error: braced-group within expression allowed only >> inside a function >> init/init_task.c:16: error: braced-group within expression allowed only >> inside a function >> make[1]: *** [init/init_task.o] Error 1 > > Sorry! This will actually compile: > > -#define ATOMIC_INIT(i) ( { (i) } ) > +#define ATOMIC_INIT(i) { (i) } Thanks, it now compiles correctly. I'm currently collecting Alpha patches to send on to Linus so will include this one. Cheers Michael. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [next:akpm 129/309] net/core/sock.c:274:36: error: initializer element is not constant 2012-08-12 2:42 ` Michael Cree @ 2012-08-12 13:00 ` John David Anglin 0 siblings, 0 replies; 7+ messages in thread From: John David Anglin @ 2012-08-12 13:00 UTC (permalink / raw) To: Michael Cree Cc: Fengguang Wu, linux-alpha, Richard Henderson, Ivan Kokshaysky, Matt Turner, Tony Luck, James Bottomley, Mel Gorman, kernel-janitors, Kyle McMartin, Andrew Morton, LKML, Parisc List [-- Attachment #1: Type: text/plain, Size: 1940 bytes --] On 11-Aug-12, at 10:42 PM, Michael Cree wrote: > On 12/08/12 14:10, Fengguang Wu wrote: >> On Sun, Aug 12, 2012 at 01:33:09PM +1200, Michael Cree wrote: >>> On 03/08/12 03:02, Fengguang Wu wrote: >>>> On Thu, Jul 26, 2012 at 10:06:41AM -0700, Tony Luck wrote: >>>>> On Tue, Jul 24, 2012 at 10:10 PM, James Bottomley >>>>> <James.Bottomley@hansenpartnership.com> wrote: >>>>>>> Here is the line in sock.i: >>>>>>> >>>>>>> struct static_key memalloc_socks = ((struct static_key) >>>>>>> { .enabled = >>>>>>> ((atomic_t) { (0) }) }); >>>>>> >>>>>> The above line contains two compound literals. It also uses a >>>>>> designated >>>>>> initializer to initialize the field enabled. A compound >>>>>> literal is not a >>>>>> constant expression. >>>>> >>>>> Seeing the same thing on ia64 building next-20120726. Same fix >>>>> works >>>>> for me ... so I'll steal this whole changelog and attributes. >>>> >>>> I got the same error for alpha, the same fix applies. >>> >>> Just trying this patch on Alpha against v3.6-rc1 and it leads to new >>> compilation errors, namely: >>> >>> init/init_task.c:12: error: braced-group within expression allowed >>> only >>> inside a function >>> init/init_task.c:13: error: braced-group within expression allowed >>> only >>> inside a function >>> init/init_task.c:16: error: braced-group within expression allowed >>> only >>> inside a function >>> init/init_task.c:16: error: braced-group within expression allowed >>> only >>> inside a function >>> make[1]: *** [init/init_task.o] Error 1 >> >> Sorry! This will actually compile: >> >> -#define ATOMIC_INIT(i) ( { (i) } ) >> +#define ATOMIC_INIT(i) { (i) } > > Thanks, it now compiles correctly. I'm currently collecting Alpha > patches to send on to Linus so will include this one. A similar change applied to 3.5.1 stable compiles successfully on parisc. Regards, Dave -- John David Anglin dave.anglin@bell.net [-- Attachment #2: atomic.h.d.txt --] [-- Type: text/plain, Size: 787 bytes --] diff --git a/arch/parisc/include/asm/atomic.h b/arch/parisc/include/asm/atomic.h index 6c6defc..af9cf30 100644 --- a/arch/parisc/include/asm/atomic.h +++ b/arch/parisc/include/asm/atomic.h @@ -141,7 +141,7 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u) #define atomic_sub_and_test(i,v) (atomic_sub_return((i),(v)) == 0) -#define ATOMIC_INIT(i) ((atomic_t) { (i) }) +#define ATOMIC_INIT(i) { (i) } #define smp_mb__before_atomic_dec() smp_mb() #define smp_mb__after_atomic_dec() smp_mb() @@ -150,7 +150,7 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u) #ifdef CONFIG_64BIT -#define ATOMIC64_INIT(i) ((atomic64_t) { (i) }) +#define ATOMIC64_INIT(i) { (i) } static __inline__ s64 __atomic64_add_return(s64 i, atomic64_t *v) ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH] [ALPHA] Redefine ATOMIC_INIT and ATOMIC64_INIT to drop the casts 2012-08-12 1:33 ` Michael Cree 2012-08-12 2:10 ` Fengguang Wu @ 2012-08-12 2:14 ` Fengguang Wu 2012-08-15 22:03 ` Andrew Morton 1 sibling, 1 reply; 7+ messages in thread From: Fengguang Wu @ 2012-08-12 2:14 UTC (permalink / raw) To: Michael Cree Cc: linux-alpha, Richard Henderson, Ivan Kokshaysky, Matt Turner, Tony Luck, James Bottomley, John David Anglin, Mel Gorman, kernel-janitors, Kyle McMartin, Andrew Morton, LKML, Parisc List From: Mel Gorman <mgorman@suse.de> The following build error occurred during an alpha build: net/core/sock.c:274:36: error: initializer element is not constant Dave Anglin says: > Here is the line in sock.i: > > struct static_key memalloc_socks = ((struct static_key) { .enabled = > ((atomic_t) { (0) }) }); The above line contains two compound literals. It also uses a designated initializer to initialize the field enabled. A compound literal is not a constant expression. The location of the above statement isn't fully clear, but if a compound literal occurs outside the body of a function, the initializer list must consist of constant expressions. Cc: <stable@vger.kernel.org> Signed-off-by: Mel Gorman <mgorman@suse.de> Signed-off-by: Fengguang Wu <fengguang.wu@intel.com> --- arch/alpha/include/asm/atomic.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- linux.orig/arch/alpha/include/asm/atomic.h 2012-08-12 10:12:36.667523339 +0800 +++ linux/arch/alpha/include/asm/atomic.h 2012-08-12 10:12:37.659523362 +0800 @@ -14,8 +14,8 @@ */ -#define ATOMIC_INIT(i) ( (atomic_t) { (i) } ) -#define ATOMIC64_INIT(i) ( (atomic64_t) { (i) } ) +#define ATOMIC_INIT(i) { (i) } +#define ATOMIC64_INIT(i) { (i) } #define atomic_read(v) (*(volatile int *)&(v)->counter) #define atomic64_read(v) (*(volatile long *)&(v)->counter) ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] [ALPHA] Redefine ATOMIC_INIT and ATOMIC64_INIT to drop the casts 2012-08-12 2:14 ` [PATCH] [ALPHA] Redefine ATOMIC_INIT and ATOMIC64_INIT to drop the casts Fengguang Wu @ 2012-08-15 22:03 ` Andrew Morton 0 siblings, 0 replies; 7+ messages in thread From: Andrew Morton @ 2012-08-15 22:03 UTC (permalink / raw) To: Fengguang Wu Cc: Michael Cree, linux-alpha, Richard Henderson, Ivan Kokshaysky, Matt Turner, Tony Luck, James Bottomley, John David Anglin, Mel Gorman, kernel-janitors, Kyle McMartin, LKML, Parisc List, David Miller On Sun, 12 Aug 2012 10:14:05 +0800 Fengguang Wu <fengguang.wu@intel.com> wrote: > From: Mel Gorman <mgorman@suse.de> > > The following build error occurred during an alpha build: > > net/core/sock.c:274:36: error: initializer element is not constant > > Dave Anglin says: > > Here is the line in sock.i: > > > > struct static_key memalloc_socks = ((struct static_key) { .enabled = > > ((atomic_t) { (0) }) }); > > The above line contains two compound literals. It also uses a designated > initializer to initialize the field enabled. A compound literal is not a > constant expression. > > The location of the above statement isn't fully clear, but if a compound > literal occurs outside the body of a function, the initializer list must > consist of constant expressions. > > Cc: <stable@vger.kernel.org> > Signed-off-by: Mel Gorman <mgorman@suse.de> > Signed-off-by: Fengguang Wu <fengguang.wu@intel.com> I'll remvoe the Cc:stable from this one - the regression is post-3.5. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-08-15 22:03 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <20120722163058.GB13376@localhost> [not found] ` <20120723111619.GT9222@suse.de> [not found] ` <1343042420.3027.11.camel@dabdike.int.hansenpartnership.com> [not found] ` <20120723114258.GV9222@suse.de> [not found] ` <20120723122905.GA22476@localhost> [not found] ` <BLU0-SMTP2254F8872DDE5FA6035CDE97DD0@phx.gbl> [not found] ` <20120724074844.GA9519@localhost> [not found] ` <BLU0-SMTP6C7CFCFF734FE10A39B6E97DC0@phx.gbl> [not found] ` <1343193053.3139.6.camel@dabdike> [not found] ` <CA+8MBbJkGN+zGBdD5Hg26wW_6E9L_ufoutn7wj+Y+nhtW7WKWg@mail.gmail.com> 2012-08-02 15:02 ` [next:akpm 129/309] net/core/sock.c:274:36: error: initializer element is not constant Fengguang Wu 2012-08-12 1:33 ` Michael Cree 2012-08-12 2:10 ` Fengguang Wu 2012-08-12 2:42 ` Michael Cree 2012-08-12 13:00 ` John David Anglin 2012-08-12 2:14 ` [PATCH] [ALPHA] Redefine ATOMIC_INIT and ATOMIC64_INIT to drop the casts Fengguang Wu 2012-08-15 22:03 ` Andrew Morton
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).