13 static volatile uint64_t
sink;
16 extern "C" __attribute__((noinline))
void dtorcleanup_try_marker(
int i) {
17 __asm__ __volatile__(
"" :::
"memory");
sink ^= (uint64_t)i;
19 extern "C" __attribute__((noinline))
void dtorcleanup_catch_marker(
int i) {
20 __asm__ __volatile__(
"" :::
"memory");
sink ^= (uint64_t)i << 8;
40 int main(
int argc,
char** argv) {
41 (void)argc; (void)argv;
43 for (
int i = 0; i <
ITERS; ++i) {
45 dtorcleanup_try_marker(i);
48 dtorcleanup_catch_marker(i);
54 fprintf(stderr,
"exc_dtor_cleanup: caught=%d iters=%d sink=%llx\n",
56 return caught ==
ITERS ? 0 : 1;
int main(int argc, char **argv)
static uint64_t buf[ITERS]
static void thrower(int i)
static volatile uint64_t sink
__attribute__((noinline)) void dtorcleanup_try_marker(int i)
Guard(uint64_t *s, uint64_t v_)