git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 2/2] remove NORETURN from function pointers

From
Erik Faye-Lund <kusmabite@googlemail.com>
Date
Sep 14, 2009, 12:32 UTC
Message-ID
<40aa078e0909140532q693a7f9qc3d9b1d354cac356@mail.gmail.com>
In-Reply-To
<20090914120311.GA17172@sigill.intra.peff.net>

Compiling the following code gives a warning about unreachable code, so it's clear that msvc doesn't simply ignore the directive. I'm not saying that anyone suggested otherwise, I just wanted to know for sure.

#include <stdio.h> #include <stdlib.h> void (*exit_fun)(int) = exit; void __declspec(noreturn) die(void); void die(void) { exit_fun(1); } int main(void) { printf("hello!\n"); die(); printf("world!\n"); }

On Mon, Sep 14, 2009 at 2:03 PM, Jeff King <peff@peff.net> wrote:
> I think I am fine doing it either way. The NORETURN_PTR thing is a bit
> more elegant to me, but that is maybe just my gcc snobiness. We
> shouldn't have to change our code to accomodate MSVC's crappy noreturn
> handling. ;)

First of all, MSVC is not the only compiler that behaves this way. In fact, GCC the only compiler I've found that behaves this way (but I must admit, I only tested 4 different compilers, one of which (Comeau) does not support noreturn at all AFAICT). That behavior might be crappy, but it's not "MSVC's crappy noreturn handling" - it's "non-GCC's crappy noreturn handling" :P

The arguments against each solution I see are these:
- abort() gives a run-time error instead of a compile-time warning, so
breakage is trickier to detect (on GCC, which seems to be the target
compiler for the vast majority of git-developers).
- NORETURN_PTR might be bit big of a hammer for a small problem, as it
"pollutes" the whole git source-tree instead of just usage.c.

Anyway, I don't care much what solution we pick. Either should work, and if someone has strong preference, I'm OK with it.

-- 
Erik "kusma" Faye-Lund
kusmabite@gmail.com
(+47) 986 59 656
Previous: Jeff KingNext: Jeff King
Message 7 of 17 in “remove NORETURN from function pointers”
  1. 2/2 remove NORETURN from function pointersErik Faye-Lund, Sep 14, 2009
  2. Jeff KingSep 14, 2009
  3. Erik Faye-LundSep 14, 2009
  4. Erik Faye-LundSep 14, 2009
  5. Jeff KingSep 14, 2009
  6. Jeff KingSep 14, 2009
  7. Erik Faye-LundSep 14, 2009
  8. Jeff KingSep 14, 2009
  9. Erik Faye-LundSep 14, 2009
  10. Johannes SixtSep 14, 2009
  11. Erik Faye-LundSep 14, 2009
  12. Johannes SixtSep 14, 2009
  13. Erik Faye-LundSep 14, 2009
  14. Johannes SixtSep 14, 2009
  15. Junio C HamanoSep 22, 2009
  16. Erik Faye-LundSep 25, 2009
  17. Erik Faye-LundSep 30, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.