ia64-2.c

来自「用于进行gcc测试」· C语言 代码 · 共 59 行

C
59
字号
// PR target/30230// This testcase failed on IA-64, where end of an EH region ended// in the middle of a bundle (with br.call insn in first or second// slot of .bbb/.mbb bundles and EH region end right after it).// But br.call returns to the start of the next bundlem so during// unwinding the call was considered to be outside of the EH region// while it should have been inside.// { dg-do run }// { dg-require-weak "" }// { dg-options "-O2" }struct A {};struct B { virtual ~B(); };B::~B () {}struct C { void foo (short &, B &); };struct D { void *d1; C *d2; virtual void virt (void) {} };struct E { D *e1; B *e2; };struct F { void bar (void *, B &); };F *p __attribute__((weak));volatile int r;void C::foo (short &x, B &){  if (r)    throw A ();  x = 1;}void F::bar (void *, B &){  throw A ();}void baz (E &x){  short g = 0;  B b = *x.e2;  x.e1->d2->foo (g, b);  if (g)    p->bar(x.e1->d1, b);}int main (){  F g;  D s;  E h;  p = &g;  h.e1 = &s;  try    {      baz (h);    }  catch (A &)    {    }  return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?