• [^] # Re: Flang

    Posté par (site web personnel, Mastodon) . En réponse à la dépêche Sortie de LLVM, Clang, lld, lldb 8.0.0. Évalué à 1.

    Je viens d'installer le paquet flang-7 sur une Debian Sid. Ca marche bien sur les petits programmes que j'ai essayés. Par contre avec mon projet gtk-fortran, il compile (longuement) quelques fichiers puis affiche des erreurs :

    F90-S-0087-Non-constant expression where constant expression required (/home/osboxes/gtk-fortran/src/gtkenums-auto.f90: 355)
    ...
    C'est un fichier qui contient des énumérateurs Fortran dont la valeur est pour quelques-uns définie par une expression:

    enum, bind(c) !GModuleFlags
    enumerator :: G_MODULE_BIND_LAZY = ISHFTC(1, 0)
    enumerator :: G_MODULE_BIND_LOCAL = ISHFTC(1, 1)
    enumerator :: G_MODULE_BIND_MASK = INT(z'03')
    end enum
    D'après la norme Fortran (>=2003), on peut utiliser des scalar-int-constant-expr pour définir les énumérateurs. Et une telle expression est définie ainsi :

    A constant expression is an expression with limitations that make it suitable for use as initializer, or named constant. It is an expression in which each operation is intrinsic...

    Les fonctions ISHFTC() et INT() sont pourtant des fonctions intrinsèques du langage. Avec gfortran, ça passe sans problème. Avec ifort 2015 également.

    J'imagine qu'il me faudra attendre un peu que le nouveau compilateur f18 soit opérationnel et disponible sous forme de paquet.