⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 20040317-1.c

📁 linux下编程用 编译软件
💻 C
字号:
/* { dg-do run } *//* { dg-options "-O2" } *//* Test provided by Brian Ryner in PR 14511.  The alias analyzer was   not handling structures containing arrays properly.  In this case,   the static cast was introducing two assignments of the form	  this_6->_vptr.IFoo = &_ZTV4IFoo[2];	  this_4->_vptr.IFoo = &_ZTV3Bar[2];   which were not considered to alias each other because the alias   analyzer was not computing a proper pointer to array elements.   Another related bug was the type based alias analyzer not computing   alias relations to _ZTV4IFoo and _ZTV3Bar.  Since those variables   are read-only, it was disregarding alias information for them.   So, the memory tags for the two 'this' variables were not being   marked as aliased with these variables.  Resulting in the two   assignments not aliasing each other.   This was causing the optimizers to generate a call to the virtual   method Foo() instead of the overloaded version.  */struct IFoo{  virtual void Foo() = 0;};struct Bar : IFoo{  void Foo() { }};int main(int argc, char **argv){  Bar* b = new Bar();  static_cast<IFoo*>(b)->Foo();  return 0;}

⌨️ 快捷键说明

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