I upgraded my ATS compiler from 2.4 to 3.4 and now have a new compiler 
error that I have failed to fix, and need a few pointers.

This application is not using the run time, as the code is linked into a 
larger application using an RTOS in an FX3. The application was fully 
working before the compiler upgrade.

A file named frames.dats has the following code at the top:

staload _ = "prelude/DATS/pointer.dats"
staload _ = "prelude/DATS/array.dats"
staload _ = "prelude/DATS/arrayptr.dats"
staload _ = "prelude/DATS/arrayref.dats"
staload _ = "prelude/DATS/string.dats"
staload _ = "prelude/DATS/integer.dats"
staload _ = "prelude/DATS/integer_fixed.dats"
staload UN = "prelude/SATS/unsafe.sats"
staload _ = "prelude/DATS/unsafe.dats"


and this leads to the following compiler error:

In file included from DATS/frames_dats.c:15:0:
DATS/frames_dats.c: In function 'ATSLIB_056_prelude__ptr0_add_gint__12__1':
DATS/frames_dats.c:2341:22: error: 'PMVtmpltcstmat' undeclared (first use in 
this function)
 ATSINSmove(tmp28__1, PMVtmpltcstmat[0](g0int2uint<S2Eextkind(atstype_int), 
S2Eextkind(atstype_size)>)(arg1)) ;


Looking at the generated code around line 2341:

/*
emit_instr: loc0 = 
/usr/local/lib/ats2-postiats-0.3.4/prelude/DATS/pointer.dats: 2125(line=81, 
offs=18) -- 2137(line=81, offs=30)
*/
ATSINSmove(tmp28__1, PMVtmpltcstmat[0](g0int2uint<S2Eextkind(atstype_int), 
S2Eextkind(atstype_size)>)(arg1)) ;

we can see the error came from compiling pointer.dats

which has this code at line 81:

implement
{a}{tk}
ptr0_add_gint(p, i) =
  add_ptr_bsz(p, g0int2uint(i) * sizeof<a>)
implement
{a}{tk}
ptr0_sub_gint(p, i) =
  sub_ptr_bsz(p, g0int2uint(i) * sizeof<a>)

I tried adding this at the top of frames.dats per other discussions in the 
group

#include "share/atspre_staload.hats"

but it does not help.

My make file does not use the ATS .mk files, so I am providing my makefile 
in case I missed something important.

Does anyone have any ideas on the root cause?

FX3FWROOT=/opt/share/cypress/cyfx3sdk

ATS            = $(wildcard SATS/*.sats)
DATS           = $(wildcard DATS/*.dats)
DATSC          = $(patsubst %.dats,%_dats.c,$(DATS))
DATSOBJ        = $(patsubst %.dats,%_dats.o,$(DATS))

ATS            = patsopt
ATSCFLAGS      = -std=c99 -D_XOPEN_SOURCE
ATSCFLAGS      += -D_ATS_CCOMP_EXCEPTION_NONE_ -D_ATS_CCOMP_RUNTIME_NONE_ 
ATSCFLAGS      += -Wno-unused-variable -Wno-unused-label 
-Wno-unused-but-set-variable
ATSCFLAGS      += -I. -I${PATSHOME} -I${PATSHOME}/ccomp/runtime 
ATSCFLAGS      += -DATS_MEMALLOC_LIBC

USER_CFLAGS = $(ATSCFLAGS)

CYCONFOPT = fx3_profile_release

all:compile

include $(FX3FWROOT)/fw_build/fx3_fw/fx3_build_config.mak

MODULE = upuck

SOURCE= $(MODULE).c     \
    dscr.c    \
    cyfxtx.c             \
    smbus.c             \
    fetch.c             \
    apperror.c             \
    DATS/print_dats.c     \
    DATS/frames_dats.c     \
    DATS/numbers_dats.c \
    DATS/polling_dats.c \
    DATS/crc_dats.c     \
    DATS/smbus_dats.c     \
    DATS/process_dats.c

ifeq ($(CYFXBUILD),arm)
SOURCE_ASM=cyfx_startup.S
else
SOURCE_ASM=cyfx_gcc_startup.S
endif

C_OBJECT=$(SOURCE:%.c=./%.o)
A_OBJECT=$(SOURCE_ASM:%.S=./%.o)

EXES = $(MODULE).$(EXEEXT)

$(MODULE).$(EXEEXT): $(A_OBJECT) $(C_OBJECT)
    $(LINK)

cyfxtx.c:
    cp $(FX3FWROOT)/fw_build/fx3_fw/cyfxtx.c .

cyfx_startup.S:
    cp $(FX3FWROOT)/fw_build/fx3_fw/cyfx_startup.S .

cyfx_gcc_startup.S:
    cp $(FX3FWROOT)/fw_build/fx3_fw/cyfx_gcc_startup.S .

$(DATSC): %_dats.c: %.dats $(SATS)
    $(ATS) -o $@.tmp -d $<
    mv $@.tmp $@

$(C_OBJECT) : %.o : %.c
    $(COMPILE)

$(A_OBJECT) : %.o : %.S
    $(ASSEMBLE)

image:
    -@echo 'Generate boot-loadable binary image'
    -/opt/cypress/cyfx3sdk/util/elf2img/elf2img -i upuck.elf -o upuck.img -v
    -@echo ' '

clean:
    rm -f ./$(MODULE).$(EXEEXT)
    rm -f ./$(MODULE).map
    rm -f ./*.o DATS/*.o DATS/*.c
    rm -f cyfxtx.c cyfx_startup.S cyfx_gcc_startup.S


compile: $(C_OBJECT) $(A_OBJECT) $(EXES)



-- 
You received this message because you are subscribed to the Google Groups 
"ats-lang-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to ats-lang-users+unsubscr...@googlegroups.com.
To post to this group, send email to ats-lang-users@googlegroups.com.
Visit this group at https://groups.google.com/group/ats-lang-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ats-lang-users/d49957aa-782c-47f3-b6a5-6e63df153af7%40googlegroups.com.

Reply via email to