From: kaih@khms.westfalen.de (Kai Henningsen)
To: gcc-patches@gcc.gnu.org
Subject: Re: [basic-improvements] try/finally support for c/c++ - more tests
Date: Fri, 08 Nov 2002 11:24:00 -0000 [thread overview]
Message-ID: <8$UZOT7Xw-B@khms.westfalen.de> (raw)
In-Reply-To: <20021108084659.A10988@devserv.devel.redhat.com>
jakub@redhat.com (Jakub Jelinek) wrote on 08.11.02 in <20021108084659.A10988@devserv.devel.redhat.com>:
> On Fri, Nov 08, 2002 at 12:48:49PM +0000, Nicola Pero wrote:
> > Well you're not a lone voice of insance conservatism, I actually think you
> > are quite well giving voices to the puzzled C users, like me. :-)
> >
> > In all this discussion, I didn't quite find discussed how it would work in
> > C/ObjC, from a pure C/ObjC perspective. Which IMO is essential to have
> > the C extension approved.
> >
> > The suggestion that this change is good because "it makes C look more like
> > C++ so that it's easier to integrate C and C++" might be good for C++
> > hackers and lovers, but it's definitely unconvincing for C/ObjC users with
> > no interest in C++.
>
> If you look at a typical system nowadays, C and C++ has to easily integrate
> together, as C++ code often calls C routines (starting from libstdc++ using
> C library functions where C library is most often written in C) and a lot of
> C programs/libraries are using C++ libraries too.
But, just like Nicola, I don't care about that part because I don't use
C++ myself. Let this be solved by C++, not by C!
I *really* want *real* exception handling for C - doing this with setjmp/
longjmp (a.k.a. NS_DURING and friends) is just too ugly for words.
Besides, it is dog slow - but this isn't it.
> then you IMHO have all you need for satisfactory pure C exception handling
> with minimal overhead.
Minimal overhead? Your definition of minimal is certainly not mine. Setjmp/
longjmp based exceptions in C are *SLOW* even for code which doesn't raise
exceptions.
Besides, I'm sick and tired of "... may be clobbered by longjmp" because
gcc cannot know how those jmp_buf's will be used.
> a) typically in such functions they are not returning void, but some value,
> with __try/__finally you can leave the code as above, just add the
> return value to each return statement. With goto gem you need some
> function scope variable and set it first, then return,
> so if (stringC == NULL) return 134; becomes
> if (stringC == NULL) { ret = 134; goto finally; }
> which is less readable
Look up NS_DURING and friends. It's not that it can't be hidden away in
macrosm, because it can. It's that macros which expand with unbalanced
braces are *extremely* easy to get wrong.
And, of course, setjmp is no speed demon, and putting chaining on top of
that doesn't help.
MfG Kai
next prev parent reply other threads:[~2002-11-08 19:24 UTC|newest]
Thread overview: 128+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-11-05 15:16 [basic-improvements] try/finally support for c/c++ Aldy Hernandez
2002-11-05 15:57 ` Richard Henderson
2002-11-05 23:03 ` Aldy Hernandez
2002-11-06 0:44 ` Joseph S. Myers
2002-11-06 0:52 ` Jakub Jelinek
2002-11-06 3:02 ` Michael Matz
2002-11-06 3:11 ` Jakub Jelinek
2002-11-06 4:16 ` Michael Matz
2002-11-06 10:29 ` Aldy Hernandez
2002-11-06 10:53 ` Richard Henderson
2002-11-06 10:56 ` Aldy Hernandez
2002-11-06 11:24 ` Joseph S. Myers
2002-11-06 13:49 ` Richard Henderson
2002-11-06 17:45 ` Fergus Henderson
2002-11-07 9:54 ` Richard Henderson
2002-11-06 17:48 ` Fergus Henderson
2002-11-07 9:58 ` Richard Henderson
2002-11-06 11:22 ` Joseph S. Myers
2002-11-06 14:00 ` Richard Henderson
2002-11-06 17:21 ` Fergus Henderson
2002-11-06 4:20 ` Gabriel Dos Reis
2002-11-06 9:05 ` Aldy Hernandez
2002-11-06 9:11 ` Matt Austern
2002-11-06 9:25 ` Gabriel Dos Reis
2002-11-06 11:15 ` Richard Henderson
2002-11-07 0:09 ` Kai Henningsen
2002-11-07 12:56 ` Richard Henderson
2002-11-06 6:05 ` Jason Merrill
2002-11-06 10:56 ` Richard Henderson
2002-11-06 12:14 ` Jason Merrill
2002-11-05 16:40 ` Stan Shebs
2002-11-05 16:48 ` Matt Austern
2002-11-05 17:21 ` Jason Merrill
2002-11-05 19:25 ` Matt Austern
2002-11-06 10:25 ` Richard Henderson
2002-11-06 11:05 ` Mike Stump
2002-11-05 21:20 ` Aldy Hernandez
2002-11-06 9:43 ` [basic-improvements] try/finally support for c/c++ - more tests Jakub Jelinek
2002-11-06 11:04 ` Joseph S. Myers
2002-11-06 15:34 ` Mark Mitchell
2002-11-06 16:03 ` Richard Henderson
2002-11-06 16:10 ` Gabriel Dos Reis
2002-11-06 16:12 ` Richard Henderson
2002-11-06 16:20 ` Gabriel Dos Reis
2002-11-06 17:02 ` Per Bothner
2002-11-06 17:14 ` Gabriel Dos Reis
2002-11-06 16:47 ` Mark Mitchell
2002-11-06 16:54 ` Matt Austern
2002-11-06 18:00 ` Zack Weinberg
2002-11-06 18:14 ` Gabriel Dos Reis
2002-11-06 18:58 ` Zack Weinberg
2002-11-06 19:33 ` Gabriel Dos Reis
2002-11-06 22:15 ` Zack Weinberg
2002-11-06 22:37 ` Mark Mitchell
2002-11-06 23:30 ` Aldy Hernandez
2002-11-07 1:03 ` Gabriel Dos Reis
2002-11-07 5:34 ` Michael Matz
2002-11-07 8:14 ` Mark Mitchell
2002-11-07 8:37 ` Daniel Jacobowitz
2002-11-07 9:09 ` Mark Mitchell
2002-11-07 9:19 ` Daniel Jacobowitz
2002-11-07 9:53 ` Mark Mitchell
2002-11-07 9:57 ` Matt Austern
2002-11-07 10:43 ` Jason Merrill
2002-11-07 8:44 ` Jakub Jelinek
2002-11-07 12:18 ` Geoff Keating
2002-11-07 12:24 ` Daniel Jacobowitz
2002-11-07 12:32 ` Mark Mitchell
2002-11-07 13:41 ` Geoff Keating
2002-11-07 14:06 ` Mark Mitchell
2002-11-07 14:39 ` Richard Henderson
2002-11-07 14:53 ` Mark Mitchell
2002-11-07 15:14 ` Geoff Keating
2002-11-07 15:37 ` Mark Mitchell
2002-11-08 11:30 ` Geoff Keating
2002-11-07 15:45 ` Richard Henderson
2002-11-07 16:21 ` Mark Mitchell
2002-11-07 16:44 ` aldyh
2002-11-07 17:06 ` Richard Henderson
2002-11-07 17:10 ` Jakub Jelinek
2002-11-07 17:29 ` Mark Mitchell
2002-11-07 17:43 ` Richard Henderson
2002-11-07 17:55 ` Mark Mitchell
2002-11-07 17:52 ` Jason Merrill
2002-11-07 17:57 ` Mark Mitchell
2002-11-07 18:17 ` Zack Weinberg
2002-11-07 18:29 ` Mark Mitchell
2002-11-07 21:23 ` Robert Lipe
2002-11-07 21:32 ` Jason Merrill
2002-11-08 4:48 ` Nicola Pero
2002-11-08 5:47 ` Jakub Jelinek
2002-11-08 10:02 ` Fergus Henderson
2002-11-08 11:24 ` Kai Henningsen [this message]
2002-11-08 11:44 ` Jakub Jelinek
2002-11-09 0:11 ` Fergus Henderson
2002-11-08 11:46 ` Mike Stump
2002-11-08 10:02 ` Matt Austern
2002-11-11 5:38 ` Michael Matz
2002-11-11 12:59 ` Matt Austern
2002-11-12 1:01 ` Michael Matz
2002-11-12 8:20 ` Mark Mitchell
2002-11-12 8:58 ` Michael Matz
2002-11-07 19:28 ` Daniel Jacobowitz
2002-11-07 22:07 ` Alexandre Oliva
2002-11-08 4:27 ` Richard Henderson
2002-11-08 4:54 ` Jakub Jelinek
2002-11-08 6:01 ` Jakub Jelinek
2002-11-08 11:38 ` Mike Stump
2002-11-08 11:25 ` Mike Stump
2002-11-08 9:31 ` Michael Matz
2002-11-08 11:26 ` Hans-Peter Nilsson
2002-11-08 11:48 ` Mike Stump
2002-11-07 11:38 ` Zack Weinberg
2002-11-07 9:38 ` Mike Stump
2002-11-07 10:06 ` Richard Henderson
2002-11-07 12:57 ` Hans-Peter Nilsson
2002-11-06 17:58 ` Fergus Henderson
2002-11-06 18:09 ` Fergus Henderson
2002-11-07 0:30 ` Jakub Jelinek
2002-11-06 18:34 ` Geoff Keating
2002-11-07 3:29 ` Fergus Henderson
2002-11-07 4:22 ` Jakub Jelinek
2002-11-07 5:13 ` Fergus Henderson
2002-11-07 5:47 ` Michael Matz
2002-11-07 8:52 ` Aldy Hernandez
2002-11-07 10:00 ` Mike Stump
2002-11-07 12:36 ` Alexandre Oliva
2002-11-07 13:06 ` Aldy Hernandez
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='8$UZOT7Xw-B@khms.westfalen.de' \
--to=kaih@khms.westfalen.de \
--cc=gcc-patches@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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 read-only IMAP folder(s) and NNTP newsgroup(s).