在某些C ++编译器上使用限制限定符的编译器错误

切尔

我有一个函数,该函数具有double作为参数as指针,且该指针的条件为restrict请注意,英特尔编译器使用restrict,但是__restrict__在GCC的情况下,我们用替换了限定符

void Stats::calc_flux_2nd(double* restrict data,
                          double* restrict datamean,
                          double* restrict w)
{
    // ...

    // Set a pointer to the field that contains w,
    // either interpolated or the original
    double* restrict calcw = w;

    // ...

使用GCC或Clang可以毫无问题地编译该代码,但是IBM BlueGene编译器给出以下错误:

(W) Incorrect assignment of a restrict qualified pointer.
Only outer-to-inner scope assignments between restrict pointers are 
allowed.  This may result in incorrect program behavior.

我不了解如何解释此错误,因为我不更改变量的签名,也不知道我是在引入未定义行为还是IBM BlueGene编译器是否错误。

伦德罗斯

IBM的XL C / C ++编译器不支持您的构造,它们的文档中也对此进行了说明您不能相互分配受限制的指针。您可以通过创建新的块作用域和一组新的指针来解决此问题。

{
  int * restrict  x;
  int * restrict  y;
  x = y; /* undefined */
  {
     int * restrict  x1 = x; /* okay */
     int * restrict  y1 = y; /* okay */
     x = y1;  /* undefined */
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C:编译器警告“返回会从指针目标类型中丢弃限定符”

来自分类Dev

使用某些开关时的gcc编译器错误

来自分类Dev

C编译器错误或程序错误?

来自分类Dev

TUN / TAP上的C编译器错误

来自分类Dev

C,编译器错误和指针

来自分类Dev

C#-编译器错误

来自分类Dev

c编译器,重叠内存错误

来自分类Dev

Sun c ++编译器的分段错误

来自分类Dev

那是C ++编译器错误吗?

来自分类Dev

编译器错误C2955

来自分类Dev

使用typeof(Expression <Func <,>>)的C#编译器错误

来自分类Dev

在GCC编译器上使用C查找因素

来自分类Dev

Ideone使用的C ++编译器

来自分类Dev

服务器编译器上的 VS c++ 编译器免费许可

来自分类Dev

C ++编译器输出

来自分类Dev

Linux C编译器

来自分类Dev

C ++中的奇数编译器错误(VC编译器)

来自分类Dev

Cmake错误:未知的CXX编译器标识,未知的C编译器标识

来自分类Dev

使用多个编译器编译C代码

来自分类Dev

“错误:'_ Generic'指定了两种兼容的类型”,但在某些编译器上没有

来自分类Dev

我仅使用某些编译器获取Segfault

来自分类Dev

我仅使用某些编译器获取Segfault

来自分类Dev

命令提示符下的C编译器

来自分类Dev

C中的分段错误编译器错误

来自分类Dev

编译器错误C4430:缺少类型说明符-假定为int

来自分类Dev

C ++标头#define编译器错误

来自分类Dev

C#mono的奇怪编译器错误

来自分类Dev

C ++程序编译器错误:无匹配功能

来自分类Dev

llvmgen.c中的xmos内部编译器错误?