[comp.sys.isis] isis fortran interface on DECstation

u502sou@mpirbn.mpifr-bonn.mpg.de (Ignatios Souvatzis) (06/12/91)

The ISIS V2.1 makefile(s) test for a list of machines (excluding the
DECstations I am using), to decide whether they should generate the
fortran interface. Has anybody ported the interface to the DECstation?

			Ignatios Souvatzis
--
Paper mail: Ignatios Souvatzis, Radioastronomisches Institut der 
            Universitaet Bonn, Auf dem Huegel 71, D-5300 Bonn 1, FRG
Internet:   u502sou@mpirbn.mpifr-bonn.mpg.de
            souva@babsy.mpifr-bonn.mpg.de

ken@CS.Cornell.EDU (Ken Birman) (06/13/91)

In article <U502SOU.91Jun12111749@mpirbn.mpifr-bonn.mpg.de> souva@babsy.mpifr-bonn.mpg.de writes:
>Has anybody ported the F77 interface to the DECstation?

I tested this at Cornell recently and ran into some minor problems.
I am sure that F77 won't work with the V2.1 version of Fortran but
it should be ok under V3.0.  The problems I saw were clearly not
major things and if you need to get ISIS fortran running under a
Decstation I wouldn't expect it to be a very difficult task.

-- 
Kenneth P. Birman                              E-mail:  ken@cs.cornell.edu
4105 Upson Hall, Dept. of Computer Science     TEL:     607 255-9199 (office)
Cornell University Ithaca, NY 14853 (USA)      FAX:     607 255-4428

ken@CS.Cornell.EDU (Ken Birman) (06/14/91)

In article <U502SOU.91Jun12111749@mpirbn.mpifr-bonn.mpg.de> souva@babsy.mpifr-bonn.mpg.de writes:
>Has anybody ported the F77 interface to the DECstation?

I tested further and the main problem may be in the DEC optimizer and not
in the fortran port itself.  When I compiled with -O, things blow up, but
when I recompiled flib1.c and flib2.c without -O, it was fine.

I was able to isolate the following simple test program that illustrates
the compiler bug.  If you look at the assembler code produced, you will see
that the compiler decided to eliminate the code to save the result from
the call to "def" and leaves it in a register, but then uses that register
as a temporary storage place when computing the somewhat messy expression
right after the call to def() in procedure abc().

Unfortunately, this is the expression generated by the ENDFROMFORTRAN macro...

I don't know if this affects anything else in ISIS.  I hope not!  

	  /* Convince a skeptic that DEC code optimizer has a bug */
          #include <stdio.h>

          int save, i;
          int j;

          main()
            {
                  j = abc(1234);
                  printf("After call: should be 9876, got %d\n", j);
            }

          abc(x)
            {
                  char *rval, *def();
                  save = i;
                  i |= 0x100;
                  rval = def(x);
                  i = (i&~0x100) | (save&0x100);
                  return (int)rval;
            }

          char *
          def(x)
            {
                  return((char*)9876);
            }


-- 
Kenneth P. Birman                              E-mail:  ken@cs.cornell.edu
4105 Upson Hall, Dept. of Computer Science     TEL:     607 255-9199 (office)
Cornell University Ithaca, NY 14853 (USA)      FAX:     607 255-4428