UpNext

14.5.1  Anormcode_Form

The compiler Anormcode_Form api defines access to the “A-Normal” intermediate code form used briefly for early optimizations in the back end top half, before conversion to the FPS (“fate passing style”) intermediate code form used by the bulk of the back end top half.

The Anormcode_Form api is implemented by the anormcode_form package.

The Anormcode_Form api source code is src/lib/compiler/back/top/anormcode/anormcode-form.api.

The above information is manually maintained and may contain errors.

api {   Inlining_Hint
        = INLINE_IF_SIZE_SAFE
        |
        INLINE_MAYBE
        (Int , List(Int ))
        |
        INLINE_ONCE_WITHIN_ITSELF
        |
        INLINE_WHENEVER_POSSIBLE;
    Loop_Kind  = OTHER_LOOP | PREHEADER_WRAPPED_LOOP | TAIL_RECURSIVE_LOOP;
    Call_As  = CALL_AS_FUNCTION ?.highcode_uniq_types::Calling_Convention | CALL_AS_GENERIC_PACKAGE;
          Function_Notes  =
                {call_as:Call_As, inlining_hint:Inlining_Hint,
                loop_info:Null_Or(((List(?.highcode_uniq_types::Uniqtypoid ) , Loop_Kind)) ), private:Bool};
    Typefun_Notes  = {inlining_hint:Inlining_Hint};
        Record_Kind
        = RK_PACKAGE
        |
        RK_TUPLE
        ?.highcode_uniq_types::Useless_Recordflag
        |
        RK_VECTOR
        ?.highcode_uniq_types::Uniqtype;
    Valcon  = (symbol::Symbol , varhome::Valcon_Form , ?.highcode_uniq_types::Uniqtypoid);
        Casetag
        = FLOAT64_CASETAG
        String
        |
        INT1_CASETAG
        one_word_int::Int
        |
        INT_CASETAG
        Int
        |
        STRING_CASETAG
        String
        |
        UNT1_CASETAG
        one_word_unt::Unt
        |
        UNT_CASETAG
        Unt
        |
        VAL_CASETAG
        (Valcon , List(?.highcode_uniq_types::Uniqtype ) , highcode_codetemp::Codetemp)
        |
        VLEN_CASETAG
        Int;
        Value
        = FLOAT64
        String
        |
        INT
        Int
        |
        INT1
        one_word_int::Int
        |
        STRING
        String
        |
        UNT
        Unt
        |
        UNT1
        one_word_unt::Unt
        |
        VAR
        highcode_codetemp::Codetemp;
        Expression
        = APPLY
        (Value , List(Value ))
        |
        APPLY_TYPEFUN
        (Value , List(?.highcode_uniq_types::Uniqtype ))
        |
        BASEOP
        (Baseop , List(Value ) , highcode_codetemp::Codetemp , Expression)
        |
        BRANCH
        (Baseop , List(Value ) , Expression , Expression)
        |
        CONSTRUCTOR
        (Valcon , List(?.highcode_uniq_types::Uniqtype ) , Value , highcode_codetemp::Codetemp , Expression)
        |
        EXCEPT
        (Expression , Value)
        |
        GET_FIELD
        (Value , Int , highcode_codetemp::Codetemp , Expression)
        |
        LET
        (List(highcode_codetemp::Codetemp ) , Expression , Expression)
        |
        MUTUALLY_RECURSIVE_FNS
        (List(Function ) , Expression)
        |
        RAISE
        (Value , List(?.highcode_uniq_types::Uniqtypoid ))
        |
        RECORD
        (Record_Kind , List(Value ) , highcode_codetemp::Codetemp , Expression)
        |
        RET
        List(Value )
        |
        SWITCH
        (Value , varhome::Valcon_Signature , List(((Casetag , Expression)) ) , Null_Or(Expression ))
        |
        TYPEFUN
        (Typefun , Expression);
          Function  =   (   Function_Notes , highcode_codetemp::Codetemp ,
                            List(((highcode_codetemp::Codetemp , ?.highcode_uniq_types::Uniqtypoid)) ) , Expression
                        );
          Typefun  =    (   Typefun_Notes , highcode_codetemp::Codetemp ,
                            List(((highcode_codetemp::Codetemp , ?.highcode_uniq_types::Uniqkind)) ) , Expression
                        );
          Dictionary  =         {default:highcode_codetemp::Codetemp,
                                table:List(((List(?.highcode_uniq_types::Uniqtype ) , highcode_codetemp::Codetemp)) )};
          Baseop  =     (   Null_Or(Dictionary ) , ?.highcode_baseops::Baseop , ?.highcode_uniq_types::Uniqtypoid ,
                            List(?.highcode_uniq_types::Uniqtype )
                        );};

Comments and suggestions to: bugs@mythryl.org

UpNext