MWCC/includes/compiler/TOC.h

61 lines
1.8 KiB
C

#ifndef COMPILER_TOC_H
#define COMPILER_TOC_H
#include "compiler/common.h"
#ifdef __MWERKS__
#pragma options align=mac68k
#endif
typedef struct CodeLabelList {
struct CodeLabelList *next;
Object *object;
CLabel *label;
} CodeLabelList;
extern ObjectList *toclist;
extern ObjectList *exceptionlist;
extern void *descriptorlist;
extern void *floatconstpool;
extern void *doubleconstpool;
extern ObjectList *floatconstlist;
extern void *vectorconstpool;
extern ObjectList *vectorconstlist;
extern Object toc0;
extern Boolean no_descriptors;
extern Object pic_base;
extern VarInfo pic_base_varinfo;
extern short pic_base_reg;
extern CodeLabelList *codelabellist;
extern void setupaddressing(void);
extern void createNonLazyPointer(Object *obj);
extern void referenceIndirectPointer(Object *obj);
extern Object *createIndirect(Object *obj, Boolean flag1, Boolean flag2);
extern Object *createfloatconstant(Type *type, Float *data);
extern Object *createvectorconstant(Type *type, MWVector128 *data);
extern void DeclarePooledConstants();
extern Object *CreateFloatConst(Type *type, Float *data, SInt32 *unkptr);
extern void dumpcodelabels(Object *func);
typedef struct COVCResult {
// this struct might be used in other places too???
short op1;
short op2;
unsigned char arg;
} COVCResult;
extern Boolean canoptimizevectorconst(MWVector128 *vecp, Type *type, COVCResult *result);
extern Boolean TOC_use_fsel(ENode *expr);
extern Boolean TOC_use_isel(ENode *expr, Boolean flag);
extern SInt32 GetSizeSkip(ENode *expr);
extern void Optimize64bitMath(ENode *expr);
extern void expandTOCreferences(Statement **stmts);
extern void resetTOCvarinfo(void);
extern Boolean needdescriptor(void);
extern Object *createstaticinitobject(void);
#ifdef __MWERKS__
#pragma options align=reset
#endif
#endif