[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Merging feature/android
From: |
Arsen Arsenović |
Subject: |
Re: Merging feature/android |
Date: |
Mon, 06 Mar 2023 11:56:09 +0100 |
Po Lu <luangruo@yahoo.com> writes:
> Arsen Arsenović <arsen@aarsen.me> writes:
>
>> Depending on how long ago that was, it might be worth reconsidering.
>> GCC has been C++ for a decade now, for instance, so C++ compilers are
>> likely fairly widespread. One could make the case that using portable
>> C++ in addition to portable C is a more portable way to do cleanups than
>> GNU C cleanups.
>>
>> If still undesirable, I strongly suggest at least using GNU C cleanups.
>> They are a decent workaround.
>
> GNU C cleanups only work when compiling with -fexceptions.
This is not the case. They work under all conditions, and are used to
great effect in many C codebases. As an example, the following:
int
f (void (*foo) (void))
{
__attribute__ ((cleanup (test))) int* n = g ();
foo ();
}
... generates:
f:
pushq %rbx
xorl %eax, %eax
movq %rdi, %rbx
subq $16, %rsp
call g
movq %rax, 8(%rsp)
call *%rbx
leaq 8(%rsp), %rdi
call test /* cleanup */
addq $16, %rsp
popq %rbx
ret
... with -O3 -fno-exceptions. The latter is the default for C, but I
wanted to be explicit anyway.
> C++ is an ugly and bloated language, and not as widely available as you
> think. To use it in Emacs for something as important as modules would
> be a shame.
It is likely as widely available as cleanup attributes. Certainly as
widely as any supported (or many unsupported) versions of GCC are.
I won't argue on the merits of the language, as that usually doesn't go
anywhere, and the cleanup attribute seems like an accepted solution
anyway. Note that it's no coincidence that it is being adopted by some
GNU projects.
> Either way, we don't expect to survive a C++ exception, so why cater
> specifically to C++'s stack unwinding?
I agree that it isn't necessary. I was just answering the question of
what '-fexceptions' would do as someone with the know-how, because it
was brought up.
--
Arsen Arsenović
signature.asc
Description: PGP signature
- Re: __attribute__ ((cleanup)) and emacs-module.c, (continued)
- Re: __attribute__ ((cleanup)) and emacs-module.c, Philipp Stephani, 2023/03/09
- Re: __attribute__ ((cleanup)) and emacs-module.c, Po Lu, 2023/03/09
- Re: __attribute__ ((cleanup)) and emacs-module.c, Paul Eggert, 2023/03/10
- Re: __attribute__ ((cleanup)) and emacs-module.c, Po Lu, 2023/03/10
- Re: __attribute__ ((cleanup)) and emacs-module.c, Paul Eggert, 2023/03/11
- Re: __attribute__ ((cleanup)) and emacs-module.c, Po Lu, 2023/03/11
- Re: __attribute__ ((cleanup)) and emacs-module.c, Paul Eggert, 2023/03/11
- Re: Merging feature/android, Eli Zaretskii, 2023/03/08
- Re: Merging feature/android, Arsen Arsenović, 2023/03/06
- Re: Merging feature/android, Po Lu, 2023/03/06
- Re: Merging feature/android,
Arsen Arsenović <=
- Re: Merging feature/android, Po Lu, 2023/03/06
- Re: Merging feature/android, Eli Zaretskii, 2023/03/05
- Re: Merging feature/android, Po Lu, 2023/03/05
- Re: Merging feature/android, Richard Stallman, 2023/03/04
- Re: Merging feature/android, Po Lu, 2023/03/05
- Re: Merging feature/android, Richard Stallman, 2023/03/06
- Re: Merging feature/android, Po Lu, 2023/03/06
- Re: Merging feature/android, Paul Eggert, 2023/03/03
- Re: Merging feature/android, Po Lu, 2023/03/03
- Re: Merging feature/android, Eli Zaretskii, 2023/03/04