# [PATCH] run-command: fix an 'different modifiers' sparse warning

4 messages from 2016-02-25 to 2016-02-25. Participants: Ramsay Jones, Junio C Hamano, Jeff King.
Thread: https://gitlist.dev/t/41522

## Ramsay Jones, 2016-02-25 19:35

Subject: [PATCH] run-command: fix an 'different modifiers' sparse warning
Message-ID: <56CF576B.4020401@ramsayjones.plus.com>
URL: https://gitlist.dev/e/56CF576B.4020401%40ramsayjones.plus.com

```

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
---

Hi Jeff,

If you need to re-roll your 'jk/epipe-in-async' branch, could you
please squash this into the relevant patch. (ie. "write_or_die:
handle EPIPE in async threads", 24-02-2016).

Thanks!

ATB,
Ramsay Jones

 run-command.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/run-command.c b/run-command.c
index cd861bc..5dec18b 100644
--- a/run-command.c
+++ b/run-command.c
@@ -625,7 +625,7 @@ int in_async(void)
 	return !pthread_equal(main_thread, pthread_self());
 }
 
-void async_exit(int code)
+void NORETURN async_exit(int code)
 {
 	pthread_exit((void *)(intptr_t)code);
 }
@@ -675,7 +675,7 @@ int in_async(void)
 	return process_is_async;
 }
 
-int async_exit(int code)
+int NORETURN async_exit(int code)
 {
 	exit(code);
 }
-- 
2.7.0

```

## Junio C Hamano, 2016-02-25 20:20

Subject: Re: [PATCH] run-command: fix an 'different modifiers' sparse warning
Message-ID: <xmqqfuwgo83n.fsf@gitster.mtv.corp.google.com>
URL: https://gitlist.dev/e/xmqqfuwgo83n.fsf%40gitster.mtv.corp.google.com
In-Reply-To: <56CF576B.4020401@ramsayjones.plus.com>

```
Ramsay Jones <ramsay@ramsayjones.plus.com> writes:

> Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
> ---
>
> Hi Jeff,
>
> If you need to re-roll your 'jk/epipe-in-async' branch, could you
> please squash this into the relevant patch. (ie. "write_or_die:
> handle EPIPE in async threads", 24-02-2016).
>
> Thanks!

I actually was planning to merge this to 'next' today, so I'll
squash it in without waiting for a reroll.

By the way, doesn't it bother anybody to give two different types to
the same function depending on NO_PTHREAD?  It is not a new issue
added by this series, but async_exit() that claims to return int
does not (naturally) return anything, and sparse does not seem to
care (neither do we).

>
> ATB,
> Ramsay Jones
>
>  run-command.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/run-command.c b/run-command.c
> index cd861bc..5dec18b 100644
> --- a/run-command.c
> +++ b/run-command.c
> @@ -625,7 +625,7 @@ int in_async(void)
>  	return !pthread_equal(main_thread, pthread_self());
>  }
>  
> -void async_exit(int code)
> +void NORETURN async_exit(int code)
>  {
>  	pthread_exit((void *)(intptr_t)code);
>  }
> @@ -675,7 +675,7 @@ int in_async(void)
>  	return process_is_async;
>  }
>  
> -int async_exit(int code)
> +int NORETURN async_exit(int code)
>  {
>  	exit(code);
>  }

```

## Jeff King, 2016-02-25 21:39

Subject: Re: [PATCH] run-command: fix an 'different modifiers' sparse warning
Message-ID: <20160225213935.GA3612@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20160225213935.GA3612%40sigill.intra.peff.net
In-Reply-To: <xmqqfuwgo83n.fsf@gitster.mtv.corp.google.com>

```
On Thu, Feb 25, 2016 at 12:20:12PM -0800, Junio C Hamano wrote:

> Ramsay Jones <ramsay@ramsayjones.plus.com> writes:
> 
> > Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
> > ---
> >
> > Hi Jeff,
> >
> > If you need to re-roll your 'jk/epipe-in-async' branch, could you
> > please squash this into the relevant patch. (ie. "write_or_die:
> > handle EPIPE in async threads", 24-02-2016).
> >
> > Thanks!
> 
> I actually was planning to merge this to 'next' today, so I'll
> squash it in without waiting for a reroll.

I am OK with that. But I do find it interesting that we must mark
NORETURN in both the declaration and the definition, but we don't for
__attribute__((format)).

> By the way, doesn't it bother anybody to give two different types to
> the same function depending on NO_PTHREAD?  It is not a new issue
> added by this series, but async_exit() that claims to return int
> does not (naturally) return anything, and sparse does not seem to
> care (neither do we).

It would have bothered me if I had noticed. :)

It is simply a bug, and sparse (and the compiler) do not notice it
because it only shows up if you compile with NO_PTHREADS=1. And I think
it is added by this series:

> > @@ -675,7 +675,7 @@ int in_async(void)
> >  	return process_is_async;
> >  }
> >  
> > -int async_exit(int code)
> > +int NORETURN async_exit(int code)

The return value on this one should be "void", too, of course.

-Peff

```

## Ramsay Jones, 2016-02-25 23:08

Subject: Re: [PATCH] run-command: fix an 'different modifiers' sparse warning
Message-ID: <56CF896F.3000601@ramsayjones.plus.com>
URL: https://gitlist.dev/e/56CF896F.3000601%40ramsayjones.plus.com
In-Reply-To: <20160225213935.GA3612@sigill.intra.peff.net>

```


On 25/02/16 21:39, Jeff King wrote:
> On Thu, Feb 25, 2016 at 12:20:12PM -0800, Junio C Hamano wrote:
> 
>> Ramsay Jones <ramsay@ramsayjones.plus.com> writes:
>>
>>> Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
>>> ---
>>>
>>> Hi Jeff,
>>>
>>> If you need to re-roll your 'jk/epipe-in-async' branch, could you
>>> please squash this into the relevant patch. (ie. "write_or_die:
>>> handle EPIPE in async threads", 24-02-2016).
>>>
>>> Thanks!
>>
>> I actually was planning to merge this to 'next' today, so I'll
>> squash it in without waiting for a reroll.
> 
> I am OK with that. But I do find it interesting that we must mark
> NORETURN in both the declaration and the definition, but we don't for
> __attribute__((format)).
> 
>> By the way, doesn't it bother anybody to give two different types to
>> the same function depending on NO_PTHREAD?  It is not a new issue
>> added by this series, but async_exit() that claims to return int
>> does not (naturally) return anything, and sparse does not seem to
>> care (neither do we).
> 
> It would have bothered me if I had noticed. :)
> 
> It is simply a bug, and sparse (and the compiler) do not notice it
> because it only shows up if you compile with NO_PTHREADS=1. And I think
> it is added by this series:

Wow, I can't believe that I didn't notice this myself while editing
the file! :-D

ATB,
Ramsay Jones

```
