以下代码使用 intel/nVidia OpenCL 编译器(均基于 LLVM)进行编译:
struct Foo{ float2 bar; };
void baz(){
global struct Foo* foo;
((float*)(&foo->bar))[1]=1;
}
AMD 编译器说invalid type conversion
, 并且只接受具有以下条件的代码global
:
((global float*))(&foo->bar))[1]=1;
根据规范,其中哪一个是正确的?(并且:我应该在某处报告不合格的编译器吗?)