* Re: Warning message when using sparse [not found] <4C3680D1.5070601@lwfinger.net> @ 2010-07-09 20:47 ` Jiri Slaby 2010-07-09 21:22 ` Larry Finger 0 siblings, 1 reply; 11+ messages in thread From: Jiri Slaby @ 2010-07-09 20:47 UTC (permalink / raw) To: Larry Finger; +Cc: LKML, Christopher Li, Linux-Sparse On 07/09/2010 03:52 AM, Larry Finger wrote: > On recent kernels, sparse reports the following message for every source > file that is processed. The warning does not seem to affect the results. > I'm not sure when the problem started, but I think it was with 2.6.35-rc1. > > > CHECK drivers/staging/rtl8712/rtl871x_rf.c > /home/finger/linux-2.6/arch/x86/include/asm/cpufeature.h:297:21: error: > Expected ( after asm > /home/finger/linux-2.6/arch/x86/include/asm/cpufeature.h:297:21: error: > got goto > Yeah, I posted a support for that already: http://git.kernel.org/?p=devel/sparse/chrisl/sparse.git;a=summary The patch is not 100% correct, it doesn't support asm volatile goto and similar. What distro you use? I will fix it in opensuse (which provide gcc 4.5 already), if there will be no new release of sparse. regards, -- js ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Warning message when using sparse 2010-07-09 20:47 ` Warning message when using sparse Jiri Slaby @ 2010-07-09 21:22 ` Larry Finger 2010-07-09 21:26 ` Jiri Slaby 0 siblings, 1 reply; 11+ messages in thread From: Larry Finger @ 2010-07-09 21:22 UTC (permalink / raw) To: Jiri Slaby; +Cc: LKML, Christopher Li, Linux-Sparse Obviously, I pulled the wrong git tree. I got the one from the wiki. When I built the one from the kernel.org tree, all is well. Larry ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Warning message when using sparse 2010-07-09 21:22 ` Larry Finger @ 2010-07-09 21:26 ` Jiri Slaby 2010-07-09 22:04 ` Christopher Li 0 siblings, 1 reply; 11+ messages in thread From: Jiri Slaby @ 2010-07-09 21:26 UTC (permalink / raw) To: Larry Finger; +Cc: LKML, Christopher Li, Linux-Sparse On 07/09/2010 11:22 PM, Larry Finger wrote: > Obviously, I pulled the wrong git tree. I got the one from the wiki. > When I built the one from the kernel.org tree, all is well. Both are from kernel.org. But the one I sent is a Chris'es "fork" with my and other fixes. -- js ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Warning message when using sparse 2010-07-09 21:26 ` Jiri Slaby @ 2010-07-09 22:04 ` Christopher Li 2010-07-10 8:39 ` [PATCH 1/2] parser: fix and simplify support of asm goto Jiri Slaby 2010-07-10 8:39 ` [PATCH 2/2] parser: define __builtin_unreachable Jiri Slaby 0 siblings, 2 replies; 11+ messages in thread From: Christopher Li @ 2010-07-09 22:04 UTC (permalink / raw) To: Jiri Slaby; +Cc: Larry Finger, LKML, Linux-Sparse On Fri, Jul 9, 2010 at 2:26 PM, Jiri Slaby <jirislaby@gmail.com> wrote: > On 07/09/2010 11:22 PM, Larry Finger wrote: >> Obviously, I pulled the wrong git tree. I got the one from the wiki. >> When I built the one from the kernel.org tree, all is well. > > Both are from kernel.org. But the one I sent is a Chris'es "fork" with > my and other fixes. > Yes, you caught me slacking off. It is time to cut a new release and flush all the bits into the official tree. Chris ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/2] parser: fix and simplify support of asm goto 2010-07-09 22:04 ` Christopher Li @ 2010-07-10 8:39 ` Jiri Slaby 2010-07-10 18:36 ` Chris Li 2010-07-10 8:39 ` [PATCH 2/2] parser: define __builtin_unreachable Jiri Slaby 1 sibling, 1 reply; 11+ messages in thread From: Jiri Slaby @ 2010-07-10 8:39 UTC (permalink / raw) To: christ.li; +Cc: jirislaby, Larry Finger, linux-kernel, linux-sparse, Jiri Slaby Christopher Li wrote: > Yes, you caught me slacking off. It is time to cut a new release > and flush all the bits into the official tree. But include the patch below first, please. And maybe the second one... --- 1) We now handle only "asm (volatile|goto)?", whereas "asm volatile? goto?" is correct. 2) We need to match only goto_ident, so do it explicitly against token->ident without match_idents. Signed-off-by: Jiri Slaby <jslaby@suse.cz> --- parse.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/parse.c b/parse.c index caf10b9..dd7b1a4 100644 --- a/parse.c +++ b/parse.c @@ -1915,7 +1915,8 @@ static struct token *parse_asm_statement(struct token *token, struct statement * stmt->type = STMT_ASM; if (match_idents(token, &__volatile___ident, &__volatile_ident, &volatile_ident, NULL)) { token = token->next; - } else if (match_idents(token, &goto_ident, NULL)) { + } + if (token->ident == &goto_ident) { is_goto = 1; token = token->next; } -- 1.7.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] parser: fix and simplify support of asm goto 2010-07-10 8:39 ` [PATCH 1/2] parser: fix and simplify support of asm goto Jiri Slaby @ 2010-07-10 18:36 ` Chris Li 0 siblings, 0 replies; 11+ messages in thread From: Chris Li @ 2010-07-10 18:36 UTC (permalink / raw) To: Jiri Slaby; +Cc: jirislaby, Larry Finger, linux-kernel, linux-sparse On Sat, Jul 10, 2010 at 1:39 AM, Jiri Slaby <jslaby@suse.cz> wrote: > + if (token->ident == &goto_ident) { You need to test the token type is TOKEN_IDENT before using token->ident. I will apply your patch with the fix up. Chris -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/2] parser: define __builtin_unreachable 2010-07-09 22:04 ` Christopher Li 2010-07-10 8:39 ` [PATCH 1/2] parser: fix and simplify support of asm goto Jiri Slaby @ 2010-07-10 8:39 ` Jiri Slaby 2010-07-10 9:07 ` Josh Triplett 1 sibling, 1 reply; 11+ messages in thread From: Jiri Slaby @ 2010-07-10 8:39 UTC (permalink / raw) To: christ.li; +Cc: jirislaby, Larry Finger, linux-kernel, linux-sparse, Jiri Slaby Gcc 4.5 defines extern void __builtin_unreachable(void); so, add it also to sparse. Signed-off-by: Jiri Slaby <jslaby@suse.cz> --- lib.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/lib.c b/lib.c index a218bfc..ae6a20c 100644 --- a/lib.c +++ b/lib.c @@ -740,6 +740,7 @@ void declare_builtin_functions(void) add_pre_buffer ("extern char * __builtin___strncpy_chk(char *, const char *, __SIZE_TYPE__, __SIZE_TYPE__);\n"); add_pre_buffer ("extern int __builtin___vsprintf_chk(char *, int, __SIZE_TYPE__, const char *, __builtin_va_list);\n"); add_pre_buffer ("extern int __builtin___vsnprintf_chk(char *, __SIZE_TYPE__, int, __SIZE_TYPE__, const char *, __builtin_va_list ap);\n"); + add_pre_buffer ("extern void __builtin_unreachable(void);\n"); } void create_builtin_stream(void) -- 1.7.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] parser: define __builtin_unreachable 2010-07-10 8:39 ` [PATCH 2/2] parser: define __builtin_unreachable Jiri Slaby @ 2010-07-10 9:07 ` Josh Triplett 2010-07-13 7:52 ` Chris Li 0 siblings, 1 reply; 11+ messages in thread From: Josh Triplett @ 2010-07-10 9:07 UTC (permalink / raw) To: Jiri Slaby; +Cc: christ.li, jirislaby, Larry Finger, linux-kernel, linux-sparse On Sat, Jul 10, 2010 at 10:39:22AM +0200, Jiri Slaby wrote: > Gcc 4.5 defines > extern void __builtin_unreachable(void); > so, add it also to sparse. > > Signed-off-by: Jiri Slaby <jslaby@suse.cz> > --- > lib.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/lib.c b/lib.c > index a218bfc..ae6a20c 100644 > --- a/lib.c > +++ b/lib.c > @@ -740,6 +740,7 @@ void declare_builtin_functions(void) > add_pre_buffer ("extern char * __builtin___strncpy_chk(char *, const char *, __SIZE_TYPE__, __SIZE_TYPE__);\n"); > add_pre_buffer ("extern int __builtin___vsprintf_chk(char *, int, __SIZE_TYPE__, const char *, __builtin_va_list);\n"); > add_pre_buffer ("extern int __builtin___vsnprintf_chk(char *, __SIZE_TYPE__, int, __SIZE_TYPE__, const char *, __builtin_va_list ap);\n"); > + add_pre_buffer ("extern void __builtin_unreachable(void);\n"); __builtin_unreachable has special semantics beyond just a function. This definition will suffice to allow compilation, but __builtin_unreachable should have the same effect in sparse that it does in GCC: mark the point (and the remainder of the basic block) as unreachable. Something like the mechanism used for handling noreturn would work here as well; declaring the function to have attribute noreturn would probably have almost the right semantics. - Josh Triplett ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] parser: define __builtin_unreachable 2010-07-10 9:07 ` Josh Triplett @ 2010-07-13 7:52 ` Chris Li 2010-07-13 18:12 ` Josh Triplett 0 siblings, 1 reply; 11+ messages in thread From: Chris Li @ 2010-07-13 7:52 UTC (permalink / raw) To: Josh Triplett Cc: Jiri Slaby, jirislaby, Larry Finger, linux-kernel, linux-sparse On Sat, Jul 10, 2010 at 2:07 AM, Josh Triplett <josh@joshtriplett.org> wrote: > __builtin_unreachable has special semantics beyond just a function. > This definition will suffice to allow compilation, but > __builtin_unreachable should have the same effect in sparse that it does > in GCC: mark the point (and the remainder of the basic block) as > unreachable. Something like the mechanism used for handling noreturn > would work here as well; declaring the function to have attribute > noreturn would probably have almost the right semantics. > The attribute noreturn will apply to the whole function. The function NEVER returns. __builtin_unreachable only apply to current basic block. e.g. some error handling path like panic. The function can still return a value on the normal path. It has different meaning than attribute noreturn. So I don't think automatically give the function noreturn attribute is the right thing to do. I will apply the patch until we got better way to handle this. Chris -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] parser: define __builtin_unreachable 2010-07-13 7:52 ` Chris Li @ 2010-07-13 18:12 ` Josh Triplett 2010-07-13 18:49 ` Chris Li 0 siblings, 1 reply; 11+ messages in thread From: Josh Triplett @ 2010-07-13 18:12 UTC (permalink / raw) To: Chris Li; +Cc: Jiri Slaby, jirislaby, Larry Finger, linux-kernel, linux-sparse On Tue, Jul 13, 2010 at 12:52:48AM -0700, Chris Li wrote: > On Sat, Jul 10, 2010 at 2:07 AM, Josh Triplett <josh@joshtriplett.org> wrote: > > __builtin_unreachable has special semantics beyond just a function. > > This definition will suffice to allow compilation, but > > __builtin_unreachable should have the same effect in sparse that it does > > in GCC: mark the point (and the remainder of the basic block) as > > unreachable. Something like the mechanism used for handling noreturn > > would work here as well; declaring the function to have attribute > > noreturn would probably have almost the right semantics. > > > > The attribute noreturn will apply to the whole function. The function > NEVER returns. > __builtin_unreachable only apply to current basic block. e.g. some > error handling path like panic. The function can still return a value on the > normal path. It has different meaning than attribute noreturn. So I don't think > automatically give the function noreturn attribute is the right thing to do. No, I didn't mean that using __builtin_unreachable should mark the function calling it as noreturn. I meant that as an approximation to the right behavior, __builtin_unreachable *itself* could have attribute noreturn. - Josh Triplett ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] parser: define __builtin_unreachable 2010-07-13 18:12 ` Josh Triplett @ 2010-07-13 18:49 ` Chris Li 0 siblings, 0 replies; 11+ messages in thread From: Chris Li @ 2010-07-13 18:49 UTC (permalink / raw) To: Josh Triplett Cc: Jiri Slaby, jirislaby, Larry Finger, linux-kernel, linux-sparse On Tue, Jul 13, 2010 at 11:12 AM, Josh Triplett <josh@joshtriplett.org> wrote: > No, I didn't mean that using __builtin_unreachable should mark the > function calling it as noreturn. I meant that as an approximation to > the right behavior, __builtin_unreachable *itself* could have attribute > noreturn. Ah, that make sense. Chris -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2010-07-13 18:49 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <4C3680D1.5070601@lwfinger.net> 2010-07-09 20:47 ` Warning message when using sparse Jiri Slaby 2010-07-09 21:22 ` Larry Finger 2010-07-09 21:26 ` Jiri Slaby 2010-07-09 22:04 ` Christopher Li 2010-07-10 8:39 ` [PATCH 1/2] parser: fix and simplify support of asm goto Jiri Slaby 2010-07-10 18:36 ` Chris Li 2010-07-10 8:39 ` [PATCH 2/2] parser: define __builtin_unreachable Jiri Slaby 2010-07-10 9:07 ` Josh Triplett 2010-07-13 7:52 ` Chris Li 2010-07-13 18:12 ` Josh Triplett 2010-07-13 18:49 ` Chris Li
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).