summaryrefslogtreecommitdiff
path: root/includes/compiler/CodeGen.h
diff options
context:
space:
mode:
authorAsh Wolf <ninji@wuffs.org>2022-11-07 03:06:21 +0000
committerAsh Wolf <ninji@wuffs.org>2022-11-07 03:06:21 +0000
commit9a46dd0e2e80790d9848c0bbd718932a27c23269 (patch)
treee7a8e976c7138d50a69ff4778c4e8572efd94452 /includes/compiler/CodeGen.h
parentd0b9848c54e6f85ab713f059dcd1ddef7e57caa6 (diff)
downloadMWCC-9a46dd0e2e80790d9848c0bbd718932a27c23269.tar.gz
MWCC-9a46dd0e2e80790d9848c0bbd718932a27c23269.zip
honk
Diffstat (limited to '')
-rw-r--r--includes/compiler/CodeGen.h79
1 files changed, 79 insertions, 0 deletions
diff --git a/includes/compiler/CodeGen.h b/includes/compiler/CodeGen.h
new file mode 100644
index 0000000..3954d51
--- /dev/null
+++ b/includes/compiler/CodeGen.h
@@ -0,0 +1,79 @@
+#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