Subject: test od transG

From: Yan Mi <[email-masked]>
Date: Fri, 8 Nov 1996 15:19:46 +0800 (EAT)

Hi,
	Du zhihui's test about coredump on HP9000 is not machine dependent 
problem,it is because transG's constraints.
	I have test some programs on HP9000,it is corredump. I find
transG only can deal with the programs (including forall) obeying the 
following constraints:
	1.   the lhs and rhs of assign_stmt of forall must be aligned with
the same template.
	2. every array of the forall_assign must have declared in align.
	3.  in align_stmt, "align a(i) with b(i)", b must be a Template.array
cannot align with a template indirectly, if a program include:
			!HPF$ TEMPLATE T
			!ALIGN  A(I) WITH T(I)
			!ALIGN  B(I) WITH A(I)          (1)
	     it will coredump. only after (1) is changed into"!align b(i) 
with t(i)",it is ok.
	I write a test program "test1_t.f" obeying the above constraints. 
But strangely,it coredump .when I delete the first forall ,it is 
ok; when I delete the second forall,but let the first one in the 
porgram ,it is ok,too;when I let the first and second both in the 
program, it coredump, the error is:
		the amount is 0
		the amount is -1
		the amount is 0
		Bus error(coredump)
	Will you tell me what's wrong? Or transG request more constraints?

	You said that we can not use transG to handle the .dep file 
generated by transBD directly. But I tried a simple program named "temp2.f",
I used the .dep generated by transBD directly, then unparse 
nodeProgram,it is ok. Will you give me several test programs 
which cannot use .dep generated by transBD directly?
	Will yo please give me some test which can pass successfull 
through transG?
Yanmi

      program main
      real :: a(1000),b(1000),c(1000)
      integer :: inx(1000)
!HPF$      processors procs(10)
!HPF$      template T2(1000)
!HPF$      distribute T2  (cyclic) onto  procs
!HPF$      align a (i) with T2(i)
!HPF$      align b (i) with T2(i)
!HPF$      align c (i) with T2(i)
      integer :: BDTI0
!statment1  ok 
      forall (BDTI0=0:(1000-1)/1)      a(1+BDTI0*1) = b(1+BDTI0*1)

! statement2  ok
      forall (BDTI0=0:(1000-1)/1)      a(1+BDTI0*1) = c(1+BDTI0*1)

      forall (BDTI0=0:(999-2)/1)      a(2+BDTI0*1) = a(1+BDTI0*1)+a(2+BD&
     &TI0*1)+a(3+BDTI0*1)

      forall (BDTI0=0:(999-2)/1)      c(2+BDTI0*1) = c(1+BDTI0*1)+c(2+BD&
     &TI0*1)+c(3+BDTI0*1)

      end program

      program main
      real :: a(1000),b(1000),c(1000),d(1000),x(500),y(0:501)
      integer :: inx(1000)
!HPF$      processors procs(10)
!HPF$ TEMPLATE  T(1000)
!HPF$      distribute  T(block) onto  procs 
!HPF$  	   ALIGN a(i) WITH T(i)
	
	a=1

      end program