Blame src/ftests/case1.F

Packit Service a1973e
C From Dave McNamara at PSRV. Thanks! 
Packit Service a1973e
C Ported to Fortran by Kevin London
Packit Service a1973e
C If you try to add an event that doesn't exist, you get the correct error
Packit Service a1973e
C message, yet you get subsequent Seg. Faults when you try to do PAPI_start 
Packit Service a1973e
C and PAPI_stop. I would expect some bizarre behavior if I had no events 
Packit Service a1973e
C added to the event set and then tried to PAPI_start but if I had 
Packit Service a1973e
C successfully added one event, then the 2nd one get an error when I 
Packit Service a1973e
C tried to add it, is it possible for PAPI_start to work but just 
Packit Service a1973e
C count the first event?
Packit Service a1973e
Packit Service a1973e
#include  "fpapi_test.h"
Packit Service a1973e
Packit Service a1973e
      program case1
Packit Service a1973e
      IMPLICIT integer (p)
Packit Service a1973e
Packit Service a1973e
      INTEGER EventSet
Packit Service a1973e
      INTEGER retval
Packit Service a1973e
      INTEGER i,j
Packit Service a1973e
      INTEGER*8 gl(2)
Packit Service a1973e
      INTEGER n
Packit Service a1973e
      REAL c,a,b
Packit Service a1973e
Packit Service a1973e
      INTEGER last_char
Packit Service a1973e
      EXTERNAL last_char
Packit Service a1973e
      integer tests_quiet, get_quiet
Packit Service a1973e
      external get_quiet
Packit Service a1973e
Packit Service a1973e
      tests_quiet = get_quiet()
Packit Service a1973e
Packit Service a1973e
      n = 1000
Packit Service a1973e
      a = 0.999
Packit Service a1973e
      b = 1.001
Packit Service a1973e
      j = 0
Packit Service a1973e
      i = 0
Packit Service a1973e
      EventSet = PAPI_NULL
Packit Service a1973e
Packit Service a1973e
      retval = PAPI_VER_CURRENT
Packit Service a1973e
      call PAPIf_library_init( retval )
Packit Service a1973e
      if ( retval.NE.PAPI_VER_CURRENT) then
Packit Service a1973e
        call ftest_fail(__FILE__, __LINE__, 
Packit Service a1973e
     . 'PAPI_library_init', retval)
Packit Service a1973e
      end if
Packit Service a1973e
Packit Service a1973e
      call PAPIf_create_eventset( EventSet, retval )
Packit Service a1973e
      if ( retval .NE. PAPI_OK ) then
Packit Service a1973e
        call ftest_fail(__FILE__, __LINE__,
Packit Service a1973e
     .  'PAPIf_create_eventset', 
Packit Service a1973e
     *retval)
Packit Service a1973e
      end if
Packit Service a1973e
Packit Service a1973e
      call PAPIf_query_event(PAPI_L2_TCM, retval)
Packit Service a1973e
      if (retval .EQ. PAPI_OK) then
Packit Service a1973e
        j = j + 1
Packit Service a1973e
      end if
Packit Service a1973e
      if (j .NE. 0) then
Packit Service a1973e
        call PAPIf_add_event( EventSet, PAPI_L2_TCM, retval )
Packit Service a1973e
        if (retval .NE. PAPI_OK) then
Packit Service a1973e
            if (retval .NE. PAPI_ECNFLCT) then
Packit Service a1973e
               call ftest_fail(__FILE__, __LINE__,
Packit Service a1973e
     .         'PAPIf_add_event', 
Packit Service a1973e
     *retval)
Packit Service a1973e
            else
Packit Service a1973e
              j = j - 1
Packit Service a1973e
            end if
Packit Service a1973e
        end if
Packit Service a1973e
      end if
Packit Service a1973e
      i = j
Packit Service a1973e
Packit Service a1973e
      call PAPIf_query_event(PAPI_L2_DCM, retval)
Packit Service a1973e
      if (retval .EQ. PAPI_OK) then
Packit Service a1973e
        j = j + 1
Packit Service a1973e
      end if
Packit Service a1973e
      if (j .EQ. i+1) then
Packit Service a1973e
        call PAPIf_add_event( EventSet, PAPI_L2_DCM, retval )
Packit Service a1973e
        if (retval .NE. PAPI_OK) then
Packit Service a1973e
            if (retval .NE. PAPI_ECNFLCT) then
Packit Service a1973e
               call ftest_fail(__FILE__, __LINE__,
Packit Service a1973e
     .              'PAPIf_add_event', 
Packit Service a1973e
     *retval)
Packit Service a1973e
            else
Packit Service a1973e
              j = j - 1
Packit Service a1973e
            end if
Packit Service a1973e
        end if
Packit Service a1973e
      end if
Packit Service a1973e
Packit Service a1973e
      if (J .GT. 0) then
Packit Service a1973e
        call PAPIf_start( EventSet, retval )
Packit Service a1973e
        if ( retval .NE. PAPI_OK ) then
Packit Service a1973e
           call ftest_fail(__FILE__, __LINE__,
Packit Service a1973e
     .        'PAPIf_start', retval)
Packit Service a1973e
        end if
Packit Service a1973e
      end if
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
      do i=1, n
Packit Service a1973e
       c = a * b
Packit Service a1973e
      end do
Packit Service a1973e
Packit Service a1973e
      if (j .GT. 0) then
Packit Service a1973e
        call PAPIf_stop( EventSet, gl, retval ) 
Packit Service a1973e
        if ( retval .NE. PAPI_OK ) then
Packit Service a1973e
           call ftest_fail(__FILE__, __LINE__,
Packit Service a1973e
     .         'PAPIf_stop', retval)
Packit Service a1973e
        end if
Packit Service a1973e
      end if
Packit Service a1973e
      
Packit Service a1973e
      call ftests_pass(__FILE__)
Packit Service a1973e
      end