async-unwind1.c
来自「用于进行gcc测试」· C语言 代码 · 共 62 行
C
62 行
// PR rtl-optimization/36419// { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } }// { dg-options "-Os -fasynchronous-unwind-tables -mpreferred-stack-boundary=4" }extern "C" void abort ();int v = -1;unsigned int n;__attribute__((noinline, used))void foo (int a, int){ if (v < 0) v = ((unsigned long) &a) & 15; else if ((((unsigned long) &a) & 15) != v) abort (); if (n++ == 0) throw 1;}__attribute__((noinline, used))void baz (int a, int, int, int, int, int, int){ if (v < 0) v = ((unsigned long) &a) & 15; else if ((((unsigned long) &a) & 15) != v) abort (); if (n++ == 0) throw 1;}struct A { A () { }; ~A (); char c[24]; };__attribute__((noinline))A::~A (){ asm volatile ("" : : : "memory");}__attribute__((noinline))void bar (){ A a; try { foo (1, 2); baz (3, 4, 5, 6, 7, 8, 9); } catch (...) { } foo (1, 2); baz (3, 4, 5, 6, 7, 8, 9);}intmain (){ bar (); return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?