Closed Enchufa2 closed 6 months ago
Note also that this issue arised from this fix in OpenBLAS: https://github.com/OpenMathLib/OpenBLAS/issues/4475
It seems that GCC 14 changed something in handling the "hidden" arguments in Fortran. Together some inconsitencies in the usage of CHARACTER
in LAPACK this seems to produce the error. The basic rule I used in generating the wrappers is the following:
X
is declared as CHARACTER X
it is a single CHARACTER and not an array or string. Thus no hidden length argument is generated. This is the case in the ZLARFX
routine. X
is declared as CHARACTER*LEN
it is assumed to be an array or string and thus the hidden argument is created, for example in SGESVJ
. It seems that this assumption is no longer valid as it is also show in the quick fix. The question is, does this fix break the compatablity with old GCC versions?
If not I can create an upstream fix during the next days.
http://fedora.danny.cz/ppc/flexiblas-3.4.1-abi.patch fixed LAPACK-xeigtstz_se2_in
and LAPACK-xeigtstz_zsb_in
that were failing previously (https://bugzilla.redhat.com/show_bug.cgi?id=2264712#c19), so I think we are on the right track
It seems to be safe with regard to previous GCC versions. With the mentioned patch I see no issues when building flexiblas on Fedora 39 with GCC 13.
@sharkcz That sounds good with the GCC 13. So I will adjust the codegen to cover the "CHARACTER X"-case as well and hopefully having everything ready end of the week.
A quick analysis shows that in the following files/subroutines have a potential risk for the bug:
cbbcsd.f cbdsqr.f cgbbrd.f cgbcon.f cgbrfs.f cgbrfsx.f cgbsvx.f cgbsvxx.f cgbtrs.f cgebak.f cgebal.f cgecon.f cgees.f cgeesx.f cgeev.f cgeevx.f cgels.f cgelst.f cgemlq.f cgemlqt.f cgemqr.f cgemqrt.f cgerfs.f cgerfsx.f cgesdd.f cgesvd.f cgesvdq.f cgesvdx.f cgesvx.f cgesvxx.f cgetrs.f cgetsls.f cggbak.f cggbal.f cgges3.f cgges.f cggesx.f cggev3.f cggev.f cggevx.f cgghd3.f cgghrd.f cggsvd3.f cggsvp3.f cgtcon.f cgtrfs.f cgtsvx.f cgttrs.f chb2st_kernels.f chbev_2stage.f chbevd_2stage.f chbevd.f chbev.f chbevx_2stage.f chbevx.f chbgst.f chbgvd.f chbgv.f chbgvx.f chbtrd.f checon_3.f checon.f checon_rook.f cheequb.f cheev_2stage.f cheevd_2stage.f cheevd.f cheev.f cheevr_2stage.f cheevr.f cheevx_2stage.f cheevx.f chegs2.f chegst.f chegv_2stage.f chegvd.f chegv.f chegvx.f cherfs.f cherfsx.f chesv_aa_2stage.f chesv_aa.f chesv.f chesv_rk.f chesv_rook.f chesvx.f chesvxx.f cheswapr.f chetd2.f chetf2.f chetf2_rk.f chetf2_rook.f chetrd_2stage.f chetrd.f chetrd_he2hb.f chetrf_aa_2stage.f chetrf_aa.f chetrf.f chetrf_rk.f chetrf_rook.f chetri2.f chetri2x.f chetri_3.f chetri_3x.f chetri.f chetri_rook.f chetrs2.f chetrs_3.f chetrs_aa_2stage.f chetrs_aa.f chetrs.f chetrs_rook.f chfrk.f chgeqz.f chpcon.f chpevd.f chpev.f chpevx.f chpgst.f chpgvd.f chpgv.f chpgvx.f chprfs.f chpsv.f chpsvx.f chptrd.f chptrf.f chptri.f chptrs.f chsein.f chseqr.f clacp2.f clacpy.f claein.f cla_gbrcond_c.f cla_gbrcond_x.f cla_gbrfsx_extended.f cla_gercond_c.f cla_gercond_x.f cla_gerfsx_extended.f clagtm.f clahef_aa.f clahef.f clahef_rk.f clahef_rook.f cla_hercond_c.f cla_hercond_x.f cla_herfsx_extended.f clalsd.f clamswlq.f clamtsqr.f clangb.f clange.f clangt.f clanhb.f clanhe.f clanhf.f clanhp.f clanhs.f clanht.f clansb.f clansp.f clansy.f clantb.f clantp.f clantr.f cla_porcond_c.f cla_porcond_x.f cla_porfsx_extended.f claqgb.f claqge.f claqhb.f claqhe.f claqhp.f claqr0.f claqr4.f claqsb.f claqsp.f claqsy.f clarfb.f clarfb_gett.f clarf.f clarft.f clarfx.f clarfy.f clarzb.f clarz.f clarzt.f clascl.f claset.f clasr.f clasyf_aa.f clasyf.f clasyf_rk.f clasyf_rook.f cla_syrcond_c.f cla_syrcond_x.f cla_syrfsx_extended.f clatbs.f clatps.f clatrd.f clatrs3.f clatrs.f clauu2.f clauum.f cpbcon.f cpbequ.f cpbrfs.f cpbstf.f cpbsv.f cpbsvx.f cpbtf2.f cpbtrf.f cpbtrs.f cpftrf.f cpftri.f cpftrs.f cpocon.f cporfs.f cporfsx.f cposv.f cposvx.f cposvxx.f cpotf2.f cpotrf2.f cpotrf.f cpotri.f cpotrs.f cppcon.f cppequ.f cpprfs.f cppsv.f cppsvx.f cpptrf.f cpptri.f cpptrs.f cpstf2.f cpstrf.f cpteqr.f cptrfs.f cptsvx.f cpttrs.f cspcon.f cspmv.f cspr.f csprfs.f cspsv.f cspsvx.f csptrf.f csptri.f csptrs.f cstedc.f cstegr.f cstemr.f csteqr.f csycon_3.f csycon.f csycon_rook.f csyconv.f csyconvf.f csyconvf_rook.f csyequb.f csymv.f csyr.f csyrfs.f csyrfsx.f csysv_aa_2stage.f csysv_aa.f csysv.f csysv_rk.f csysv_rook.f csysvx.f csysvxx.f csyswapr.f csytf2.f csytf2_rk.f csytf2_rook.f csytrf_aa_2stage.f csytrf_aa.f csytrf.f csytrf_rk.f csytrf_rook.f csytri2.f csytri2x.f csytri_3.f csytri_3x.f csytri.f csytri_rook.f csytrs2.f csytrs_3.f csytrs_aa_2stage.f csytrs_aa.f csytrs.f csytrs_rook.f ctbcon.f ctbrfs.f ctbtrs.f ctfsm.f ctftri.f ctfttp.f ctfttr.f ctgevc.f ctgsja.f ctgsna.f ctgsy2.f ctgsyl.f ctpcon.f ctpmlqt.f ctpmqrt.f ctprfb.f ctprfs.f ctptri.f ctptrs.f ctpttf.f ctpttr.f ctrcon.f ctrevc3.f ctrevc.f ctrexc.f ctrrfs.f ctrsen.f ctrsna.f ctrsyl3.f ctrsyl.f ctrti2.f ctrtri.f ctrtrs.f ctrttf.f ctrttp.f cunbdb.f cuncsd2by1.f cuncsd.f cungbr.f cungtr.f cunm22.f cunm2l.f cunm2r.f cunmbr.f cunmhr.f cunml2.f cunmlq.f cunmql.f cunmqr.f cunmr2.f cunmr3.f cunmrq.f cunmrz.f cunmtr.f cupgtr.f cupmtr.f dbbcsd.f dbdsdc.f dbdsqr.f dbdsvdx.f ddisna.f dgbbrd.f dgbcon.f dgbrfs.f dgbrfsx.f dgbsvx.f dgbsvxx.f dgbtrs.f dgebak.f dgebal.f dgecon.f dgees.f dgeesx.f dgeev.f dgeevx.f dgels.f dgelst.f dgemlq.f dgemlqt.f dgemqr.f dgemqrt.f dgerfs.f dgerfsx.f dgesdd.f dgesvd.f dgesvdq.f dgesvdx.f dgesvx.f dgesvxx.f dgetrs.f dgetsls.f dggbak.f dggbal.f dgges3.f dgges.f dggesx.f dggev3.f dggev.f dggevx.f dgghd3.f dgghrd.f dggsvd3.f dggsvp3.f dgtcon.f dgtrfs.f dgtsvx.f dgttrs.f dhgeqz.f dhsein.f dhseqr.f dlacpy.f dlaein.f dla_gbrcond.f dla_gbrfsx_extended.f dla_gercond.f dla_gerfsx_extended.f dlagtm.f dlalsd.f dlamswlq.f dlamtsqr.f dlangb.f dlange.f dlangt.f dlanhs.f dlansb.f dlansf.f dlansp.f dlanst.f dlansy.f dlantb.f dlantp.f dlantr.f dla_porcond.f dla_porfsx_extended.f dlaqgb.f dlaqge.f dlaqr0.f dlaqr4.f dlaqsb.f dlaqsp.f dlaqsy.f dlarfb.f dlarfb_gett.f dlarf.f dlarft.f dlarfx.f dlarfy.f dlarrc.f dlarrd.f dlarre.f dlarzb.f dlarz.f dlarzt.f dlascl.f dlasdq.f dlaset.f dlasr.f dlasrt.f dlasyf_aa.f dlasyf.f dlasyf_rk.f dlasyf_rook.f dla_syrcond.f dla_syrfsx_extended.f dlat2s.f dlatbs.f dlatps.f dlatrd.f dlatrs3.f dlatrs.f dlauu2.f dlauum.f dopgtr.f dopmtr.f dorbdb.f dorcsd2by1.f dorcsd.f dorgbr.f dorgtr.f dorm22.f dorm2l.f dorm2r.f dormbr.f dormhr.f dorml2.f dormlq.f dormql.f dormqr.f dormr2.f dormr3.f dormrq.f dormrz.f dormtr.f dpbcon.f dpbequ.f dpbrfs.f dpbstf.f dpbsv.f dpbsvx.f dpbtf2.f dpbtrf.f dpbtrs.f dpftrf.f dpftri.f dpftrs.f dpocon.f dporfs.f dporfsx.f dposv.f dposvx.f dposvxx.f dpotf2.f dpotrf2.f dpotrf.f dpotri.f dpotrs.f dppcon.f dppequ.f dpprfs.f dppsv.f dppsvx.f dpptrf.f dpptri.f dpptrs.f dpstf2.f dpstrf.f dpteqr.f dptsvx.f dsb2st_kernels.f dsbev_2stage.f dsbevd_2stage.f dsbevd.f dsbev.f dsbevx_2stage.f dsbevx.f dsbgst.f dsbgvd.f dsbgv.f dsbgvx.f dsbtrd.f dsfrk.f dspcon.f dspevd.f dspev.f dspevx.f dspgst.f dspgvd.f dspgv.f dspgvx.f dsposv.f dsprfs.f dspsv.f dspsvx.f dsptrd.f dsptrf.f dsptri.f dsptrs.f dstebz.f dstedc.f dstegr.f dstemr.f dsteqr.f dstevd.f dstev.f dstevr.f dstevx.f dsycon_3.f dsycon.f dsycon_rook.f dsyconv.f dsyconvf.f dsyconvf_rook.f dsyequb.f dsyev_2stage.f dsyevd_2stage.f dsyevd.f dsyev.f dsyevr_2stage.f dsyevr.f dsyevx_2stage.f dsyevx.f dsygs2.f dsygst.f dsygv_2stage.f dsygvd.f dsygv.f dsygvx.f dsyrfs.f dsyrfsx.f dsysv_aa_2stage.f dsysv_aa.f dsysv.f dsysv_rk.f dsysv_rook.f dsysvx.f dsysvxx.f dsyswapr.f dsytd2.f dsytf2.f dsytf2_rk.f dsytf2_rook.f dsytrd_2stage.f dsytrd.f dsytrd_sy2sb.f dsytrf_aa_2stage.f dsytrf_aa.f dsytrf.f dsytrf_rk.f dsytrf_rook.f dsytri2.f dsytri2x.f dsytri_3.f dsytri_3x.f dsytri.f dsytri_rook.f dsytrs2.f dsytrs_3.f dsytrs_aa_2stage.f dsytrs_aa.f dsytrs.f dsytrs_rook.f dtbcon.f dtbrfs.f dtbtrs.f dtfsm.f dtftri.f dtfttp.f dtfttr.f dtgevc.f dtgsja.f dtgsna.f dtgsy2.f dtgsyl.f dtpcon.f dtpmlqt.f dtpmqrt.f dtprfb.f dtprfs.f dtptri.f dtptrs.f dtpttf.f dtpttr.f dtrcon.f dtrevc3.f dtrevc.f dtrexc.f dtrrfs.f dtrsen.f dtrsna.f dtrsyl3.f dtrsyl.f dtrti2.f dtrtri.f dtrtrs.f dtrttf.f dtrttp.f iladiag.f ilaenv.f ilaprec.f ilatrans.f ilauplo.f iparmq.f sbbcsd.f sbdsdc.f sbdsqr.f sbdsvdx.f sdisna.f sgbbrd.f sgbcon.f sgbrfs.f sgbrfsx.f sgbsvx.f sgbsvxx.f sgbtrs.f sgebak.f sgebal.f sgecon.f sgees.f sgeesx.f sgeev.f sgeevx.f sgels.f sgelst.f sgemlq.f sgemlqt.f sgemqr.f sgemqrt.f sgerfs.f sgerfsx.f sgesdd.f sgesvd.f sgesvdq.f sgesvdx.f sgesvx.f sgesvxx.f sgetrs.f sgetsls.f sggbak.f sggbal.f sgges3.f sgges.f sggesx.f sggev3.f sggev.f sggevx.f sgghd3.f sgghrd.f sggsvd3.f sggsvp3.f sgtcon.f sgtrfs.f sgtsvx.f sgttrs.f shgeqz.f shsein.f shseqr.f slacpy.f slaein.f sla_gbrcond.f sla_gbrfsx_extended.f sla_gercond.f sla_gerfsx_extended.f slagtm.f slalsd.f slamswlq.f slamtsqr.f slangb.f slange.f slangt.f slanhs.f slansb.f slansf.f slansp.f slanst.f slansy.f slantb.f slantp.f slantr.f sla_porcond.f sla_porfsx_extended.f slaqgb.f slaqge.f slaqr0.f slaqr4.f slaqsb.f slaqsp.f slaqsy.f slarfb.f slarfb_gett.f slarf.f slarft.f slarfx.f slarfy.f slarrc.f slarrd.f slarre.f slarzb.f slarz.f slarzt.f slascl.f slasdq.f slaset.f slasr.f slasrt.f slasyf_aa.f slasyf.f slasyf_rk.f slasyf_rook.f sla_syrcond.f sla_syrfsx_extended.f slatbs.f slatps.f slatrd.f slatrs3.f slatrs.f slauu2.f slauum.f sopgtr.f sopmtr.f sorbdb.f sorcsd2by1.f sorcsd.f sorgbr.f sorgtr.f sorm22.f sorm2l.f sorm2r.f sormbr.f sormhr.f sorml2.f sormlq.f sormql.f sormqr.f sormr2.f sormr3.f sormrq.f sormrz.f sormtr.f spbcon.f spbequ.f spbrfs.f spbstf.f spbsv.f spbsvx.f spbtf2.f spbtrf.f spbtrs.f spftrf.f spftri.f spftrs.f spocon.f sporfs.f sporfsx.f sposv.f sposvx.f sposvxx.f spotf2.f spotrf2.f spotrf.f spotri.f spotrs.f sppcon.f sppequ.f spprfs.f sppsv.f sppsvx.f spptrf.f spptri.f spptrs.f spstf2.f spstrf.f spteqr.f sptsvx.f ssb2st_kernels.f ssbev_2stage.f ssbevd_2stage.f ssbevd.f ssbev.f ssbevx_2stage.f ssbevx.f ssbgst.f ssbgvd.f ssbgv.f ssbgvx.f ssbtrd.f ssfrk.f sspcon.f sspevd.f sspev.f sspevx.f sspgst.f sspgvd.f sspgv.f sspgvx.f ssprfs.f sspsv.f sspsvx.f ssptrd.f ssptrf.f ssptri.f ssptrs.f sstebz.f sstedc.f sstegr.f sstemr.f ssteqr.f sstevd.f sstev.f sstevr.f sstevx.f ssycon_3.f ssycon.f ssycon_rook.f ssyconv.f ssyconvf.f ssyconvf_rook.f ssyequb.f ssyev_2stage.f ssyevd_2stage.f ssyevd.f ssyev.f ssyevr_2stage.f ssyevr.f ssyevx_2stage.f ssyevx.f ssygs2.f ssygst.f ssygv_2stage.f ssygvd.f ssygv.f ssygvx.f ssyrfs.f ssyrfsx.f ssysv_aa_2stage.f ssysv_aa.f ssysv.f ssysv_rk.f ssysv_rook.f ssysvx.f ssysvxx.f ssyswapr.f ssytd2.f ssytf2.f ssytf2_rk.f ssytf2_rook.f ssytrd_2stage.f ssytrd.f ssytrd_sy2sb.f ssytrf_aa_2stage.f ssytrf_aa.f ssytrf.f ssytrf_rk.f ssytrf_rook.f ssytri2.f ssytri2x.f ssytri_3.f ssytri_3x.f ssytri.f ssytri_rook.f ssytrs2.f ssytrs_3.f ssytrs_aa_2stage.f ssytrs_aa.f ssytrs.f ssytrs_rook.f stbcon.f stbrfs.f stbtrs.f stfsm.f stftri.f stfttp.f stfttr.f stgevc.f stgsja.f stgsna.f stgsy2.f stgsyl.f stpcon.f stpmlqt.f stpmqrt.f stprfb.f stprfs.f stptri.f stptrs.f stpttf.f stpttr.f strcon.f strevc3.f strevc.f strexc.f strrfs.f strsen.f strsna.f strsyl3.f strsyl.f strti2.f strtri.f strtrs.f strttf.f strttp.f zbbcsd.f zbdsqr.f zcposv.f zgbbrd.f zgbcon.f zgbrfs.f zgbrfsx.f zgbsvx.f zgbsvxx.f zgbtrs.f zgebak.f zgebal.f zgecon.f zgees.f zgeesx.f zgeev.f zgeevx.f zgels.f zgelst.f zgemlq.f zgemlqt.f zgemqr.f zgemqrt.f zgerfs.f zgerfsx.f zgesdd.f zgesvd.f zgesvdq.f zgesvdx.f zgesvx.f zgesvxx.f zgetrs.f zgetsls.f zggbak.f zggbal.f zgges3.f zgges.f zggesx.f zggev3.f zggev.f zggevx.f zgghd3.f zgghrd.f zggsvd3.f zggsvp3.f zgtcon.f zgtrfs.f zgtsvx.f zgttrs.f zhb2st_kernels.f zhbev_2stage.f zhbevd_2stage.f zhbevd.f zhbev.f zhbevx_2stage.f zhbevx.f zhbgst.f zhbgvd.f zhbgv.f zhbgvx.f zhbtrd.f zhecon_3.f zhecon.f zhecon_rook.f zheequb.f zheev_2stage.f zheevd_2stage.f zheevd.f zheev.f zheevr_2stage.f zheevr.f zheevx_2stage.f zheevx.f zhegs2.f zhegst.f zhegv_2stage.f zhegvd.f zhegv.f zhegvx.f zherfs.f zherfsx.f zhesv_aa_2stage.f zhesv_aa.f zhesv.f zhesv_rk.f zhesv_rook.f zhesvx.f zhesvxx.f zheswapr.f zhetd2.f zhetf2.f zhetf2_rk.f zhetf2_rook.f zhetrd_2stage.f zhetrd.f zhetrd_he2hb.f zhetrf_aa_2stage.f zhetrf_aa.f zhetrf.f zhetrf_rk.f zhetrf_rook.f zhetri2.f zhetri2x.f zhetri_3.f zhetri_3x.f zhetri.f zhetri_rook.f zhetrs2.f zhetrs_3.f zhetrs_aa_2stage.f zhetrs_aa.f zhetrs.f zhetrs_rook.f zhfrk.f zhgeqz.f zhpcon.f zhpevd.f zhpev.f zhpevx.f zhpgst.f zhpgvd.f zhpgv.f zhpgvx.f zhprfs.f zhpsv.f zhpsvx.f zhptrd.f zhptrf.f zhptri.f zhptrs.f zhsein.f zhseqr.f zlacp2.f zlacpy.f zlaein.f zla_gbrcond_c.f zla_gbrcond_x.f zla_gbrfsx_extended.f zla_gercond_c.f zla_gercond_x.f zla_gerfsx_extended.f zlagtm.f zlahef_aa.f zlahef.f zlahef_rk.f zlahef_rook.f zla_hercond_c.f zla_hercond_x.f zla_herfsx_extended.f zlalsd.f zlamswlq.f zlamtsqr.f zlangb.f zlange.f zlangt.f zlanhb.f zlanhe.f zlanhf.f zlanhp.f zlanhs.f zlanht.f zlansb.f zlansp.f zlansy.f zlantb.f zlantp.f zlantr.f zla_porcond_c.f zla_porcond_x.f zla_porfsx_extended.f zlaqgb.f zlaqge.f zlaqhb.f zlaqhe.f zlaqhp.f zlaqr0.f zlaqr4.f zlaqsb.f zlaqsp.f zlaqsy.f zlarfb.f zlarfb_gett.f zlarf.f zlarft.f zlarfx.f zlarfy.f zlarzb.f zlarz.f zlarzt.f zlascl.f zlaset.f zlasr.f zlasyf_aa.f zlasyf.f zlasyf_rk.f zlasyf_rook.f zla_syrcond_c.f zla_syrcond_x.f zla_syrfsx_extended.f zlat2c.f zlatbs.f zlatps.f zlatrd.f zlatrs3.f zlatrs.f zlauu2.f zlauum.f zpbcon.f zpbequ.f zpbrfs.f zpbstf.f zpbsv.f zpbsvx.f zpbtf2.f zpbtrf.f zpbtrs.f zpftrf.f zpftri.f zpftrs.f zpocon.f zporfs.f zporfsx.f zposv.f zposvx.f zposvxx.f zpotf2.f zpotrf2.f zpotrf.f zpotri.f zpotrs.f zppcon.f zppequ.f zpprfs.f zppsv.f zppsvx.f zpptrf.f zpptri.f zpptrs.f zpstf2.f zpstrf.f zpteqr.f zptrfs.f zptsvx.f zpttrs.f zspcon.f zspmv.f zspr.f zsprfs.f zspsv.f zspsvx.f zsptrf.f zsptri.f zsptrs.f zstedc.f zstegr.f zstemr.f zsteqr.f zsycon_3.f zsycon.f zsycon_rook.f zsyconv.f zsyconvf.f zsyconvf_rook.f zsyequb.f zsymv.f zsyr.f zsyrfs.f zsyrfsx.f zsysv_aa_2stage.f zsysv_aa.f zsysv.f zsysv_rk.f zsysv_rook.f zsysvx.f zsysvxx.f zsyswapr.f zsytf2.f zsytf2_rk.f zsytf2_rook.f zsytrf_aa_2stage.f zsytrf_aa.f zsytrf.f zsytrf_rk.f zsytrf_rook.f zsytri2.f zsytri2x.f zsytri_3.f zsytri_3x.f zsytri.f zsytri_rook.f zsytrs2.f zsytrs_3.f zsytrs_aa_2stage.f zsytrs_aa.f zsytrs.f zsytrs_rook.f ztbcon.f ztbrfs.f ztbtrs.f ztfsm.f ztftri.f ztfttp.f ztfttr.f ztgevc.f ztgsja.f ztgsna.f ztgsy2.f ztgsyl.f ztpcon.f ztpmlqt.f ztpmqrt.f ztprfb.f ztprfs.f ztptri.f ztptrs.f ztpttf.f ztpttr.f ztrcon.f ztrevc3.f ztrevc.f ztrexc.f ztrrfs.f ztrsen.f ztrsna.f ztrsyl3.f ztrsyl.f ztrti2.f ztrtri.f ztrtrs.f ztrttf.f ztrttp.f zunbdb.f zuncsd2by1.f zuncsd.f zungbr.f zungtr.f zunm22.f zunm2l.f zunm2r.f zunmbr.f zunmhr.f zunml2.f zunmlq.f zunmql.f zunmqr.f zunmr2.f zunmr3.f zunmrq.f zunmrz.f zunmtr.f zupgtr.f zupmtr.f
See also https://gcc.gnu.org/PR100799
@jakubjelinek Thanks for pointing this out. Disussions in other pbug trackers than here are mostly out of my scope and I do not realize that they exists in most cases.
Note, not too old gfortran with -fc-prototypes-external option can dump C prototypes from Fortran external procedures. For
subroutine foo (a, b, c, d, e, f, g, h)
character a
integer b, c, d, e, f, g, h
end subroutine
I can see even GCC 4.1 (2005-ish) to pass 9 arguments foo (a, b, c, d, e, f, g, h, _a) In e.g. GCC 4.5 dumped with more details like foo (character(kind=1)[1:1] & a, integer(kind=4) & b, integer(kind=4) & c, integer(kind=4) & d, integer(kind=4) & e, integer(kind=4) & f, integer(kind=4) & g, integer(kind=4) & h, integer(kind=4) _a) to show the actual types (in a mix of Fortran/C++, basic types printed Fortran-ish, but the arrays and references printed C++ish). That also shows the only known ABI change in there which was in GCC 7+ that flexiblas already takes into account, that the hidden lengths were before 32-bit integers and now are size_t. The above is what one gets e.g. from -fdump-tree-gimple
Should be fixed in v3.4.2-rc1.
right, it looks good now - 100% tests passed, 0 tests failed out of 115
This was reported for GCC downstream in Fedora, and later was reassigned to FlexiBLAS after further inspection by Jakub Jelinek. See https://bugzilla.redhat.com/show_bug.cgi?id=2264712, particularly Jakub's analysis here.