This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Trunk: Extraneous external symbols for some Fortran codes.
- To: gcc-bugs at gcc dot gnu dot org
- Subject: Trunk: Extraneous external symbols for some Fortran codes.
- From: Toon Moene <toon at moene dot indiv dot nluug dot nl>
- Date: Tue, 03 Jul 2001 22:29:37 +0200
- Organization: Moene Computational Physics, Maartensdijk, The Netherlands
L.S.
I'm seeing the following problem on alphaev6-unknown-linux-gnu using the
trunk:
Compiling the following Fortran code with `-g -O2 -funroll-loops
-ffast-math', I get an unresolved external when linking (visible when
doing the above with -S):
$LC22.
This is the (preprocessed) source:
subroutine condcv( kcall,nhor,nlev,kstart,kstop,
+ dtime,conacc,dtheta,ahyb,bhyb,
+ t,q,cw,pf,dpf,
+ klabcv,klabc,klab,
+ wpsp,wldcp,wtc,wtcdif,wqc,wqcdif,
+ wqp,wtp,wcwp,wqsat,wdqsdt,wrhu,
+ wqmax,wqliq,wqac,wbfrac,wdift,wdifq,
+ wscdif,wdifs,
+ wbu,wdpcld,wdptot,wgpot,
+ cucov,totcov )
implicit
none
real pi,latvap,rair,cpair,ccpq,epsilo,gravit,tmelt,latice,
+ rhos,rhoh2o,solar,stebol,carman,rearth,omega
common/confys/pi,latvap,rair,cpair,ccpq,epsilo,gravit,tmelt,
+ latice,rhos,rhoh2o,solar,stebol,carman,rearth,omega
real acrit,acrtun,alspbl,alsmin,hgtmix,
x assat,roumin,tseafr,sncrt,wsmax,
+ emsurf,csecur
common/ctun/acrit,acrtun,alspbl,alsmin,hgtmix,
x assat,roumin,tseafr,sncrt,wsmax,
+ emsurf,csecur
real he273,tvirtc,u00max,hu00,
+ aecon,conae,coales,hccu,hcunrm,hmrcu,hmrst,htaucu,hp0,
+ cbfeff,hvterm,hvsnow,hkmelt,tanvil,hcst,pmoist,
+ prbice(1750),bfeff(1750),hdewi(1750),hmroft(1750),dttabl
real hdl,ht273,stpevp,cfreez
real hkevap,tcir,
+ hkap,hdldcp,hecdr,hldcp,coalcu,coalst,sqvsno,
+ heldr,elotci,asnow,bsnow,snoref
common/comconds/hdl,ht273,he273,tvirtc,stpevp,u00max,hu00,
+ aecon,conae,cfreez,coales,hccu,hcunrm,hmrcu,hmrst,htaucu,hp0,
+ cbfeff,hvterm,hvsnow,hkmelt,tanvil,hcst,pmoist,
+ prbice,bfeff,hdewi,hmroft,dttabl,hkevap,tcir,
+ hkap,hdldcp,hecdr,hldcp,coalcu,coalst,sqvsno,
+ heldr,elotci,asnow,bsnow,snoref
integer nhor,nlev,kstart,kstop,knlevm,knlevp,
+ kcall,jk,jl,jkm1,jkp1,jkp2,kklab,kkla,jintt
integer klabcv(nhor,nlev),klabc(nhor,nlev),klab(nhor,nlev)
real dtime,conacc,dtheta
real zdthecr
real zpf,zpfp1,zsec,zpcr,ztvir,ztvirp,ztvirc,zqsat,
+ zceva,zdift,zdifq,zdifq1,zt,zdifp,zqcd,zqcd1,zdgpot,
+ zcev,zbucr,zdpf,zcpi,zc,zc1,zc2,zc3,zc4,zc5,zc6,
+ zc7,ztunc,zcc1,zcc2,zcc3,zcc4,zcc5,zcc6,zcc7,
+ zfrc1,zpardt,zmepsi,zresat
real zkaccr,zqpar,ztpar,zdelta,ztmp
real zspar,zqcmax
real ahyb(nlev+1),bhyb(nlev+1)
real wqmax(nhor),wpsp(nhor),wqsat(nhor),wdqsdt(nhor)
real wgpot(nhor,nlev),t(nhor,nlev),q(nhor,nlev),
+ cw(nhor,nlev),pf(nhor,nlev),dpf(nhor,nlev),
+ wldcp(nhor,nlev),wtc(nhor,nlev),wtcdif(nhor,nlev),
+ wqc(nhor,nlev),wqcdif(nhor,nlev),wqp(nhor,nlev),
+ wtp(nhor,nlev),wcwp(nhor,nlev),
+ wrhu(nhor,nlev),wqliq(nhor,nlev),wdift(nhor,nlev),
+ wqac(nhor,nlev),wbfrac(nhor,nlev),wdifq(nhor,nlev),
+ wbu(nhor,nlev),wdpcld(nhor,nlev),wdptot(nhor,nlev),
+ totcov(nhor,nlev),cucov(nhor,nlev)
real wscdif(nhor,nlev),wdifs(nhor,nlev)
real xndegr
integer nstart,nstop
parameter (xndegr=100.,nstart=1316,nstop=37316)
real estab,destab
common/comtab/estab(nstart:nstop),destab(nstart:nstop)
real zc5p,zc6e,zfracp,pp,pecor
parameter (
+ zc5p=10000.
+ ,zc6e=0.378
+)
real esat,desdt,tt
esat(tt)=estab(nint(xndegr*tt))
desdt(tt)=destab(nint(xndegr*tt))
zfracp(pp)=min( pp, zc5p )/zc5p
pecor(pp,tt)=pp -zfracp(pp)*zc6e*esat(tt)
zceva=0.18
zpardt=1.00
ztunc=0.50
zbucr=0.0030
zkaccr=2.2E8/dtime
zdthecr=0.125
zqpar=0.0015
ztpar=0.0
zspar=0.0
zqcmax=0.0030
zsec=0.00001
zfrc1=1.0E-7
zpcr=10000.
zcpi=1./cpair
zmepsi=1. -epsilo
knlevm=nlev-1
knlevp=nlev+1
do jk=1,nlev
do jl=kstart,kstop
klabcv(jl,jk)=0
klabc(jl,jk)=0
klab(jl,jk)=0
wqac(jl,jk)=0.
wdptot(jl,jk)=0.
wdpcld(jl,jk)=0.
wbfrac(jl,jk)=0.
wbu(jl,jk)=0.
wgpot(jl,jk)=0.
wtc(jl,jk)=0.
wtcdif(jl,jk)=0.
wdift(jl,jk)=0.
wdifq(jl,jk)=0.
wscdif(jl,jk)=0.
wdifs(jl,jk)=0.
wqc(jl,jk)=0.
wqcdif(jl,jk)=0.
wqliq(jl,jk)=0.
jintt = max(1, 1 + int((tmelt - wtp(jl,jk))/dttabl))
jintt = min(jintt, 1750)
wldcp(jl,jk) = zcpi * (latvap + hdl
+ * prbice(jintt))
enddo
enddo
do jl=kstart,kstop
wqsat(jl)=0.
wdqsdt(jl)=0.
wqmax(jl)=0.
enddo
do jl=kstart,kstop
wtc(jl,nlev)=wtp(jl,nlev) +zpardt
wqc(jl,nlev)=wqp(jl,nlev)
wqmax(jl)=wqp(jl,nlev)
zdifp=wpsp(jl)*(1. -bhyb(nlev)) -ahyb(nlev)
zpf=0.5*( ahyb(nlev) +ahyb(knlevp) +
+ (bhyb(nlev) +bhyb(knlevp))*wpsp(jl) )
ztvir=wtp(jl,nlev)*(1. +tvirtc*wqp(jl,nlev) -wcwp(jl,nlev))
wgpot(jl,nlev)=alog(wpsp(jl)/(zpf +zsec))
wgpot(jl,nlev)=rair*ztvir*wgpot(jl,nlev)
klabcv(jl,nlev)=4
klab(jl,nlev)=1
wdptot(jl,1)=2.*(wpsp(jl) -zpf)
wqac(jl,1)=zdifp*wqp(jl,nlev) -dpf(jl,nlev)*q(jl,nlev)
enddo
do jk=knlevm,1,-1
jkp1=jk+1
jkp2=jk+2
do jl=kstart,kstop
zpf=0.5*( ahyb(jk) +ahyb(jkp1) +
+ (bhyb(jk) +bhyb(jkp1))*wpsp(jl) )
zpfp1=0.5*( ahyb(jkp1) +ahyb(jkp2) +
+ (bhyb(jkp1) +bhyb(jkp2))*wpsp(jl) )
zdifp=ahyb(jkp1) -ahyb(jk) +
+ ( bhyb(jkp1) -bhyb(jk))*wpsp(jl)
ztvir=wtp(jl,jk)*(1. +tvirtc*wqp(jl,jk) -wcwp(jl,jk))
ztvirp=wtp(jl,jkp1)*
+ (1. +tvirtc*wqp(jl,jkp1) -wcwp(jl,jkp1))
wgpot(jl,jk)=wgpot(jl,jkp1) + rair*alog(zpfp1/zpf)*
+ 0.5 * (ztvirp + ztvir)
jintt = max(1, 1 + int((tmelt - wtc(jl,jkp1))/dttabl))
jintt = min(jintt, 1750)
wldcp(jl,jk) =(latvap + latice*
+ prbice(jintt))/cpair
zdgpot =wgpot(jl,jkp1) - wgpot(jl,jk)
wqliq(jl,jkp1)=wqmax(jl)-wqc(jl,jkp1)
zresat=1./pecor(zpf,wtp(jl,jk))
zqsat=epsilo*esat(wtp(jl,jk))*zresat
wrhu(jl,jk)=wqp(jl,jk)/zqsat
wtc(jl,jk)=wtc(jl,jkp1) +
+ wtc(jl,jkp1)*(1. +tvirtc*wqc(jl,jkp1) -wqliq(jl,jkp1))*
+ zdgpot /(ztvirp*cpair )
zresat=1./pecor(zpf,wtc(jl,jk))
wqsat(jl)=epsilo*esat(wtc(jl,jk))*zresat
wqc(jl,jk)=wqc(jl,jkp1)
zdifq=wqc(jl,jk)-wqsat(jl)
zt=wtc(jl,jk)
wdqsdt(jl)=epsilo*zpf*desdt(zt)*
+ zresat*zresat
zqcd =zdifq/(1. +wldcp(jl,jk)*wdqsdt(jl))
zqcd =max(zqcd ,0.)
wqc(jl,jk)=wqc(jl,jk) -zqcd
wtc(jl,jk)=wtc(jl,jk) +zqcd * wldcp(jl,jk)
if( zqcd.gt.0.0 ) then
zresat=1./pecor(zpf,wtc(jl,jk))
wqsat(jl)=epsilo*esat(wtc(jl,jk))*zresat
zdifq1=wqc(jl,jk)-wqsat(jl)
zqcd1=zdifq1/(1. +wldcp(jl,jk)*wdqsdt(jl))
wqc(jl,jk)=wqc(jl,jk) -zqcd1
wtc(jl,jk)=wtc(jl,jk) +zqcd1 * wldcp(jl,jk)
endif
wqliq(jl,jk)=wqmax(jl) -wqc(jl,jk)
wqliq(jl,jk)=min( wqliq(jl,jk), zqcmax )
ztvirc=wtc(jl,jk)*(1. +tvirtc*wqc(jl,jk) -wqliq(jl,jk))
zdift=ztvirc -ztvir
kklab=klab(jl,jkp1)
ztmp=zkaccr*wqac(jl,kklab) -wdptot(jl,kklab) -zdifp
if((zdift.gt.0.0).and.(ztmp.gt.0.0)) then
wqac(jl,kklab)=wqac(jl,kklab) +
+ zdifp*wqp(jl,jk) -dpf(jl,jk)*q(jl,jk)
wbu(jl,kklab)=wbu(jl,kklab) +zdifp*zdift/ztvir
wdptot(jl,kklab)=wdptot(jl,kklab) +zdifp
klab(jl,jk)=klab(jl,jkp1)
klabcv(jl,jk)=1
if( zdifq.gt.0. ) then
klabcv(jl,jk)=2
wdift(jl,jk)=ztvirc -ztvir +ztpar
wdifq(jl,jk)=wqc(jl,jk) -wqp(jl,jk) +zqpar
wdifq(jl,jk)=max( wdifq(jl,jk),0. )
wdifs(jl,jk)=wqliq(jl,jk) +zspar
wdifs(jl,jk)=max( wdifs(jl,jk),0. )
wtcdif(jl,kklab)=wtcdif(jl,kklab) +zdifp*wdift(jl,jk)
wqcdif(jl,kklab)=wqcdif(jl,kklab) +zdifp*wdifq(jl,jk)
wscdif(jl,kklab)=wscdif(jl,kklab) +zdifp*wdifs(jl,jk)
wbfrac(jl,kklab)=wbfrac(jl,kklab) +zdifp*wrhu(jl,jk)
wdpcld(jl,kklab)=wdpcld(jl,kklab) +zdifp
endif
else
wtc(jl,jk)=wtp(jl,jk) +zpardt
wqc(jl,jk)=wqp(jl,jk)
wqmax(jl)=wqp(jl,jk)
klabcv(jl,jk)=4
kkla=klab(jl,jkp1)+1
klab(jl,jk)=kkla
wtcdif(jl,kkla)=0.
wqcdif(jl,kkla)=0.
wscdif(jl,kkla)=0.
wqac(jl,kkla)=zdifp*wqp(jl,jk) -dpf(jl,jk)*q(jl,jk)
wbfrac(jl,kkla)=0.
wbu(jl,kkla)=0.
wdptot(jl,kkla)=zdifp
wdpcld(jl,kkla)=0.
endif
enddo
enddo
do jk=2,nlev
jkm1=jk-1
do jl=kstart,kstop
kklab=klab(jl,jk)
if( (klab(jl,jk).ne.klab(jl,jkm1)).and.
+ (klabcv(jl,jk).eq.2).and.
+ (wqac(jl,kklab).gt.0.0) ) then
klabcv(jl,jk)=3
klabc(jl,jk)=1
endif
if( (klab(jl,jk).eq.klab(jl,jkm1)).and.
+ (klabc(jl,jkm1).eq.1) ) then
klabc(jl,jk)=1
endif
if( (klab(jl,jk).eq.klab(jl,jkm1)).and.
+ (klabcv(jl,jk).eq.2).and.
+ (wqac(jl,kklab).gt.0.0) ) then
klabcv(jl,jk)=3
endif
enddo
enddo
do jk=2,nlev
jkm1=jk-1
do jl=kstart,kstop
if( (klab(jl,jk).ne.klab(jl,jkm1)).and.
+ (klabcv(jl,jk).eq.3) ) then
kklab=klab(jl,jk)
wbu(jl,kklab)=wbu(jl,kklab)/(wdptot(jl,kklab)+zsec)
wqac(jl,kklab)=wqac(jl,kklab)/(wdpcld(jl,kklab)+zsec)
wtcdif(jl,kklab)=wtcdif(jl,kklab)/
+ (wdpcld(jl,kklab) +zsec)
wqcdif(jl,kklab)=wqcdif(jl,kklab)/
+ (wdpcld(jl,kklab) +zsec)
wscdif(jl,kklab)=wscdif(jl,kklab)/
+ (wdpcld(jl,kklab) +zsec)
wbfrac(jl,kklab)=wbfrac(jl,kklab)/
+ (wdpcld(jl,kklab) +zsec)
wbfrac(jl,kklab)=(1. -wbfrac(jl,kklab))*
+ (1. -wbfrac(jl,kklab))
endif
enddo
enddo
if( kcall.eq.1 ) then
do jk=1,nlev
jkp1=jk+1
do jl=kstart,kstop
zdpf=ahyb(jkp1) -ahyb(jk) +
+ wpsp(jl)*(bhyb(jkp1) -bhyb(jk))
zpf=0.5*( ahyb(jk) +ahyb(jkp1) +
+ (bhyb(jk) +bhyb(jkp1))*wpsp(jl) )
zresat=1./pecor(zpf,t(jl,jk))
wqsat(jl)=epsilo*esat(t(jl,jk))*zresat
wdqsdt(jl)=epsilo*zpf*desdt(t(jl,jk))*
+ zresat*zresat
kklab=klab(jl,jk)
zdelta=min( wbu(jl,kklab)/zbucr, 1. )*
+ min( wdptot(jl,kklab)/zpcr, 1. )*
+ min( dtheta/zdthecr, 1. )
if( klabc(jl,jk).eq.1 ) then
zc1=(1.-zdelta)*wqp(jl,jk)
wqp(jl,jk)=zdelta*q(jl,jk)*dpf(jl,jk)/(zdpf+zsec) +zc1
endif
if( klabcv(jl,jk).eq.3 ) then
zc1=wqsat(jl)
zc2=wdqsdt(jl)
zc3=zdelta*wqac(jl,kklab)*(1. -wbfrac(jl,kklab))*
+ wdifs(jl,jk)/(wscdif(jl,kklab) +zsec)
zc4=zdelta*wqac(jl,kklab)*wbfrac(jl,kklab)*
+ wdifq(jl,jk)/(wqcdif(jl,kklab) +zsec)
zcev=ztunc/(dtime*max(wqsat(jl) -q(jl,jk),zsec))
zcev=min( zceva, zcev )
zc5=wldcp(jl,jk)*zdelta*wqac(jl,kklab)*
+ (1. -wbfrac(jl,kklab))*
+ wdift(jl,jk)/(wtcdif(jl,kklab) +zsec)
zc6=zcev*dtime*wcwp(jl,jk)
zc7=wldcp(jl,jk)*zc6
zcc1=( wtp(jl,jk) +zc5 -zc1*zc7 +zc2*zc7*t(jl,jk) )/
+ (1. +zc2*zc7)
zcc2=zc7/(1. +zc2*zc7)
zcc3=( wqp(jl,jk) +zc4 +zc1*zc6 -zc2*zc6*t(jl,jk) )/
+ (1. +zc6)
zcc4=zc2*zc6/(1. +zc6)
zcc5=wcwp(jl,jk) +zc3 -zc1*zc6 +zc2*zc6*t(jl,jk)
zcc6=-zc2*zc6
wtp(jl,jk)=(zcc1 +zcc2*zcc3)/(1. -zcc2*zcc4)
wqp(jl,jk)=(zcc3 +zcc1*zcc4)/(1. -zcc2*zcc4)
wcwp(jl,jk)=zcc5 +zcc6*wtp(jl,jk) +zc6*wqp(jl,jk)
endif
if( wcwp(jl,jk).lt.zfrc1 ) then
wqp(jl,jk)=wqp(jl,jk) +wcwp(jl,jk)
wtp(jl,jk)=wtp(jl,jk) -wldcp(jl,jk)*wcwp(jl,jk)
wcwp(jl,jk)=0.
endif
enddo
enddo
endif
return
end
--
Toon Moene - mailto:toon@moene.indiv.nluug.nl - phoneto: +31 346 214290
Saturnushof 14, 3738 XG Maartensdijk, The Netherlands
Maintainer, GNU Fortran 77: http://gcc.gnu.org/onlinedocs/g77_news.html
Join GNU Fortran 95: http://g95.sourceforge.net/ (under construction)