mirror of https://git.wuffs.org/MWCC
80 lines
2.5 KiB
C
80 lines
2.5 KiB
C
|
#ifndef COMPILER_CODEGEN_H
|
||
|
#define COMPILER_CODEGEN_H
|
||
|
|
||
|
#include "compiler/common.h"
|
||
|
#include "compiler/CPrep.h"
|
||
|
|
||
|
#ifdef __MWERKS__
|
||
|
#pragma options align=mac68k
|
||
|
#endif
|
||
|
|
||
|
extern Macro vecM;
|
||
|
extern Macro altivecM;
|
||
|
extern Object *gFunction;
|
||
|
extern PCodeLabel *returnlabel;
|
||
|
extern PCodeLabel *cleanreturnlabel;
|
||
|
extern Boolean needs_cleanup;
|
||
|
extern Statement *current_statement;
|
||
|
extern int has_catch_blocks;
|
||
|
extern int disable_optimizer;
|
||
|
extern SInt32 current_linenumber;
|
||
|
extern Boolean has_altivec_arrays;
|
||
|
extern short high_reg;
|
||
|
extern short low_reg;
|
||
|
extern short high_offset;
|
||
|
extern short low_offset;
|
||
|
extern short low_reg2;
|
||
|
extern short high_reg2;
|
||
|
extern PCodeLabel *pic_base_pcodelabel;
|
||
|
extern Object *dyld_stub_binding_helper;
|
||
|
extern Object *rt_cvt_fp2unsigned;
|
||
|
extern Object *rt_profile_entry;
|
||
|
extern Object *rt_profile_exit;
|
||
|
extern Object *rt_div2i;
|
||
|
extern Object *rt_div2u;
|
||
|
extern Object *rt_mod2i;
|
||
|
extern Object *rt_mod2u;
|
||
|
extern Object *rt_shr2i;
|
||
|
extern Object *rt_shr2u;
|
||
|
extern Object *rt_shl2i;
|
||
|
extern Object *rt_cvt_ull_dbl;
|
||
|
extern Object *rt_cvt_sll_dbl;
|
||
|
extern Object *rt_cvt_ull_flt;
|
||
|
extern Object *rt_cvt_sll_flt;
|
||
|
extern Object *rt_cvt_dbl_usll;
|
||
|
|
||
|
extern VarInfo *CodeGen_GetNewVarInfo(void);
|
||
|
extern Object *maketemporary(Type *type);
|
||
|
typedef void (*ArgumentProcessor)(Object *obj, short reg);
|
||
|
extern void process_arguments(ArgumentProcessor func, Boolean flag);
|
||
|
extern void move_assigned_argument(Object *obj, short reg);
|
||
|
extern void assign_labels();
|
||
|
extern void CodeGen_Generator();
|
||
|
extern void CodeGen_GenVDispatchThunk();
|
||
|
extern void CodeGen_SetupRuntimeObjects();
|
||
|
extern Boolean CodeGen_ReInitRuntimeObjects(Boolean is_precompiler);
|
||
|
extern Boolean CodeGen_IsPublicRuntimeObject(Object *obj);
|
||
|
extern void CodeGen_SOMStub();
|
||
|
extern void CodeGen_ParseDeclSpec(HashNameNode *identifier, DeclInfo *declinfo);
|
||
|
extern void CodeGen_ParsePragma(HashNameNode *name);
|
||
|
extern void CodeGen_UpdateObject(Object *object);
|
||
|
extern void CodeGen_UpdateBackEndOptions();
|
||
|
extern void CodeGen_objc_method_self_offset();
|
||
|
extern void CodeGen_objc_method_sel_offset();
|
||
|
extern void CodeGen_objc_method_arg_offset();
|
||
|
extern void CodeGen_objc_method_args_size();
|
||
|
extern void CodeGen_HandleIntrinsicCall();
|
||
|
extern void CodeGen_HandleTypeCast();
|
||
|
extern short CodeGen_AssignCheck(ENode *expr, Type *type, Boolean flag1, Boolean flag2);
|
||
|
extern void CodeGen_CollapseVectorExpression();
|
||
|
extern void CodeGen_InsertSpecialMacros();
|
||
|
extern char *CodeGen_ExpandSpecialMacro(Macro *macro);
|
||
|
extern void CodeGen_reportheapinfo();
|
||
|
extern void CodeGen_InitialSanityCheck();
|
||
|
|
||
|
#ifdef __MWERKS__
|
||
|
#pragma options align=reset
|
||
|
#endif
|
||
|
|
||
|
#endif
|