Change example and add description of how and why the
authorOrion Lawlor <olawlor@acm.org>
Thu, 7 Oct 2004 16:17:51 +0000 (16:17 +0000)
committerOrion Lawlor <olawlor@acm.org>
Thu, 7 Oct 2004 16:17:51 +0000 (16:17 +0000)
TARGET attribute is needed for Fortran programmers.

TARGET fixes the bug where after a migration, the compiler
still points to the old values for various arrays, because
it's cached the struct's value in a register.

doc/tcharm/manual.tex

index 080d2057c0c7aaf8b2ac98959e96bc9b36821216..163575f8cec49842c511ced0d678de8810ecff6b 100644 (file)
@@ -333,11 +333,14 @@ in this fashion.
               TYPE(my_block) :: m
             end subroutine
           end interface
-          TYPE(my_block) :: m
+          TYPE(my_block), TARGET :: m
           call TCHARM_Register(m,pup_my_block)
 \end{alltt}
 
-     Note that the data block must be allocated on the stack.
+     Note that the data block must be allocated on the stack. 
+     Also, in Fortran, the "TARGET" attribute must be used on the 
+     block (as above) or else the compiler may not update values during 
+     a migration, because it believes only it can access the block.
 
 \vspace{0.2in}
 \function{void TCHARM\_Migrate()}