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 ) );};