[LLVMdev] [DragonEgg] Why Fortran's "call flush()" is converted to "call void bitcast (void (...)* @_gfortran_flush_i4 to void (i8*)*)(i8* null) nounwind" ?

Anton Korobeynikov anton at korobeynikov.info
Tue Jul 17 06:06:44 PDT 2012


> Oh, right, now I remember: it's a very old problem I knew 1.5 years ago.
> There were even some bugs on it, here is a common case:
Yes, this is right, fortran frontend produces bogus trees for every
external call.
The problem seems to have roots from the fact that there is no
external function decl here, so frontend has no way even to infer the
type from.

> How do you think what would be the best way to workaround this problem, if
> it seems to be not in focus for anybody for now?
Keep in mind, this not LLVM problem, it's gfortran problem. Also, it's
of pretty low priority for gcc devs since they do almost no type
checking on TREEs, so the varargs decl seems to be only viable
llvm-side fix.

-- 
With best regards, Anton Korobeynikov
Faculty of Mathematics and Mechanics, Saint Petersburg State University



More information about the llvm-dev mailing list