Sun Studio 12: Fortran プログラミングガイド

7.6.2.2 Cray ポインタによる別名参照

この例が有効なのは、-xalias=craypointer (デフォルト) を使用してコンパイルした場合だけです。


parameter (n=20)
integer a(n)
integer v1(*), v2(*)
pointer (p1,v1)
pointer (p2,v2)
p1 = loc(a)
p2 = loc(a)
a = (/ (i,i=1,n) /)
...
v1(2:n) = v2(1:n-1)
コンパイラは、これらの場所がオーバーラップしている可能性があることを前提とす
る必要があります。

次に、オーバーラップしない Cray ポインタの例を示します。この場合は、-xalias=no%craypointer を使用してコンパイルします。この方が、より良いパフォーマンスを期待できます。


parameter (n=10)
integer a(n+n)
integer v1(n), v2(n)
pointer (p1,v1)
pointer (p2,v2)
p1 = loc(a(1))
p2 = loc(a(n+1))
...
v1(:) = v2(:)
Cray ポインタは、オーバーラップしたメモリー領域を指していません。