次のコードは、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;
仕様上正しいのはどれか。(そして: 非準拠のコンパイラをどこかに報告する必要がありますか?)