fixed implicit pass

This commit is contained in:
ALEXks
2024-04-18 21:36:40 +03:00
parent 387707cd82
commit 0f79933131
7 changed files with 118 additions and 65 deletions

View File

@@ -4442,19 +4442,17 @@ void Call(SgSymbol *s, SgExpression *e)
if (IsInternalProcedure(s) && analyzing)
Error(" Call of the procedure %s in a region, which is internal/module procedure", s->identifier(), 580, cur_st);
if (!isUserFunction(s) && isIntrinsicFunctionName(s->identifier())) //IsNoBodyProcedure(s)
if (!isUserFunction(s) && (s->attributes() & INTRINSIC_BIT || isIntrinsicFunctionName(s->identifier()))) //IsNoBodyProcedure(s)
{
RefInExpr(e, _READ_);
return;
}
//if (inparloop || IN_STATEMENT_GROUP(cur_st))
//{
if (analyzing)
{
if ((!IsPureProcedure(s) && (s->variant() != FUNCTION_NAME || !options.isOn(NO_PURE_FUNC))) || IS_BY_USE(s))
{
Warning(" Call of the procedure %s in a region, which is not pure or is module procedure", s->identifier(), 580, cur_st);
Warning(" Call of the procedure %s in a region, which is not pure. Module procedure call is illegal. Intrinsic procedure should be specified by INTRINSIC statement.", s->identifier(), 580, cur_st);
doNotForCuda();
}
}
@@ -4464,7 +4462,7 @@ void Call(SgSymbol *s, SgExpression *e)
MarkAsCalled(s);
acc_call_list = AddNewToSymbList(acc_call_list, s);
}
//}
if (!e) //argument list is absent
return;
in_arg_list++;

View File

@@ -52,12 +52,10 @@ void initIntrinsicFunctionNames()
return;
intrinsicF.insert(string("abs"));
#ifdef __SPF
intrinsicF.insert(string("adjustl"));
#endif
intrinsicF.insert(string("adjustl"));
intrinsicF.insert(string("and"));
#ifdef __SPF
intrinsicF.insert(string("any"));
#ifdef __SPF
intrinsicF.insert(string("associated"));
intrinsicF.insert(string("allocated"));
#endif
@@ -86,11 +84,9 @@ void initIntrinsicFunctionNames()
intrinsicF.insert(string("atanh"));
intrinsicF.insert(string("atan2"));
intrinsicF.insert(string("atan2d"));
#ifdef __SPF
intrinsicF.insert(string("aint"));
intrinsicF.insert(string("anint"));
intrinsicF.insert(string("achar"));
#endif
intrinsicF.insert(string("babs"));
intrinsicF.insert(string("bbits"));
intrinsicF.insert(string("bbset"));
@@ -149,8 +145,8 @@ void initIntrinsicFunctionNames()
intrinsicF.insert(string("dfloti"));
intrinsicF.insert(string("dflotj"));
intrinsicF.insert(string("dflotk"));
#ifdef __SPF
intrinsicF.insert(string("dint"));
#ifdef __SPF
intrinsicF.insert(string("dvtime"));
#endif
intrinsicF.insert(string("dmax1"));
@@ -190,9 +186,7 @@ void initIntrinsicFunctionNames()
intrinsicF.insert(string("dcotan"));
intrinsicF.insert(string("dcotand"));
intrinsicF.insert(string("dtanh"));
#ifdef __SPF
intrinsicF.insert(string("dnint"));
#endif
intrinsicF.insert(string("dcmplx"));
intrinsicF.insert(string("dconjg"));
intrinsicF.insert(string("dimag"));
@@ -227,9 +221,7 @@ void initIntrinsicFunctionNames()
intrinsicF.insert(string("hshftc"));
intrinsicF.insert(string("hsign"));
intrinsicF.insert(string("htest"));
#ifdef __SPF
intrinsicF.insert(string("huge"));
#endif
intrinsicF.insert(string("hypot"));
intrinsicF.insert(string("iiabs"));
#ifdef __SPF
@@ -254,12 +246,10 @@ void initIntrinsicFunctionNames()
intrinsicF.insert(string("index"));
intrinsicF.insert(string("iabs"));
intrinsicF.insert(string("ibits"));
#ifdef __SPF
intrinsicF.insert(string("idnint"));
intrinsicF.insert(string("ichar"));
intrinsicF.insert(string("iachar"));
intrinsicF.insert(string("isnan"));
#endif
intrinsicF.insert(string("iand"));
intrinsicF.insert(string("ior"));
intrinsicF.insert(string("ibset"));
@@ -316,9 +306,7 @@ void initIntrinsicFunctionNames()
intrinsicF.insert(string("kmod"));
intrinsicF.insert(string("knot"));
intrinsicF.insert(string("len"));
#ifdef __SPF
intrinsicF.insert(string("len_trim"));
#endif
intrinsicF.insert(string("lge"));
intrinsicF.insert(string("lgt"));
intrinsicF.insert(string("lle"));
@@ -342,26 +330,22 @@ void initIntrinsicFunctionNames()
intrinsicF.insert(string("mod"));
intrinsicF.insert(string("modulo"));
intrinsicF.insert(string("not"));
#ifdef __SPF
intrinsicF.insert(string("nint"));
intrinsicF.insert(string("null"));
#endif
intrinsicF.insert(string("or"));
intrinsicF.insert(string("popcnt"));
intrinsicF.insert(string("poppar"));
intrinsicF.insert(string("random_number"));
intrinsicF.insert(string("real"));
intrinsicF.insert(string("reshape"));
#ifdef __SPF
intrinsicF.insert(string("reshape"));
intrinsicF.insert(string("present"));
intrinsicF.insert(string("repeat"));
#endif
intrinsicF.insert(string("rshft"));
intrinsicF.insert(string("rshift"));
intrinsicF.insert(string("sign"));
#ifdef __SPF
intrinsicF.insert(string("size"));
intrinsicF.insert(string("scan"));
#ifdef __SPF
intrinsicF.insert(string("sizeof"));
#endif
intrinsicF.insert(string("sngl"));
@@ -379,9 +363,7 @@ void initIntrinsicFunctionNames()
intrinsicF.insert(string("tan"));
intrinsicF.insert(string("tand"));
intrinsicF.insert(string("tanh"));
#ifdef __SPF
intrinsicF.insert(string("tiny"));
#endif
intrinsicF.insert(string("trailz"));
intrinsicF.insert(string("trim"));
intrinsicF.insert(string("xor"));
@@ -532,9 +514,7 @@ void initIntrinsicFunctionNames()
intrinsicDoubleT.insert(string("dfloti"));
intrinsicDoubleT.insert(string("dflotj"));
intrinsicDoubleT.insert(string("dflotk"));
#ifdef __SPF
intrinsicDoubleT.insert(string("dint"));
#endif
intrinsicDoubleT.insert(string("dmax1"));
intrinsicDoubleT.insert(string("dmin1"));
intrinsicDoubleT.insert(string("dmod"));
@@ -572,9 +552,7 @@ void initIntrinsicFunctionNames()
intrinsicDoubleT.insert(string("dcotan"));
intrinsicDoubleT.insert(string("dcotand"));
intrinsicDoubleT.insert(string("dtanh"));
#ifdef __SPF
intrinsicDoubleT.insert(string("dnint"));
#endif
intrinsicDoubleT.insert(string("dcmplx"));
intrinsicDoubleT.insert(string("dconjg"));
intrinsicDoubleT.insert(string("dimag"));

View File

@@ -11,7 +11,9 @@ OBJS=\
statfile.o \
statread.o \
treeinter.o \
statprintf.o
statprintf.o \
stat.o \
statinter.o
$(BINDIR)/$(EXECUTABLES): $(OBJS)
$(LINKER) -o $@ $(OBJS) -L$(ZLIBDIR) -l$(ZLIB)
@@ -36,3 +38,7 @@ treeinter.o:
$(CXX) $(COPT) treeinter.cpp
statprintf.o:
$(CXX) $(COPT) statprintf.cpp
stat.o:
$(CXX) $(COPT) stat.cpp
statinter.o:
$(CXX) $(COPT) statinter.cpp

View File

@@ -28,7 +28,9 @@ OBJS=\
$(OUTDIR)\statfile.obj \
$(OUTDIR)\statread.obj \
$(OUTDIR)\treeinter.obj \
$(OUTDIR)\statprintf.obj
$(OUTDIR)\statprintf.obj \
$(OUTDIR)\stat.obj \
$(OUTDIR)\statinter.obj
$(BINDIR)/$(EXECUTABLES).exe: $(OBJS)
$(LINKER) @<<