Skip to content

Commit

Permalink
cg: change cg_init_info structure to be up-to-date
Browse files Browse the repository at this point in the history
  • Loading branch information
jmalak committed Apr 13, 2024
1 parent 3013daa commit d3401ff
Show file tree
Hide file tree
Showing 8 changed files with 48 additions and 58 deletions.
6 changes: 3 additions & 3 deletions bld/cc/c/cgen.c
Original file line number Diff line number Diff line change
Expand Up @@ -1895,7 +1895,7 @@ void DoCompile( void )
{
jmp_buf *old_env;
jmp_buf env;
cg_init_info cgi_info;
cg_init_info cg_info;

old_env = Environment;
if( setjmp( env ) == 0 ) {
Expand All @@ -1914,8 +1914,8 @@ void DoCompile( void )
if( CompFlags.rent ) {
GenSwitches |= CGSW_GEN_POSITION_INDEPENDANT;
}
cgi_info = BEInit( GenSwitches, TargetSwitches, OptSize, ProcRevision );
if( cgi_info.success ) {
cg_info = BEInit( GenSwitches, TargetSwitches, OptSize, ProcRevision );
if( cg_info.revision != 0 || cg_info.target != 0 ) {
#if _CPU == 386
if( TargetSwitches & (CGSW_X86_P5_PROFILING | CGSW_X86_NEW_P5_PROFILING) ) {
FunctionProfileSegId = AddSegName( "TI", "DATA", SEGTYPE_INITFINI );
Expand Down
17 changes: 8 additions & 9 deletions bld/cg/c/be.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ extern cg_init_info BEInit( cg_switches cg_data, cg_target_switches tg_data,
uint opt_size, proc_revision proc ) {
//===================================================================

cg_init_info info;
cg_init_info cg_info;
int i;

Model = cg_data;
Expand Down Expand Up @@ -132,22 +132,21 @@ extern cg_init_info BEInit( cg_switches cg_data, cg_target_switches tg_data,
CodeSeg = -1;
TargTypeInit();
Action( "BEInit%n" );
info.version.is_large = true;
info.version.revision = II_REVISION;
cg_info.revision = II_REVISION;
#if _TARGET & _TARG_8086
info.version.target = II_TARG_8086;
cg_info.target = II_TARG_8086;
#elif _TARGET & _TARG_80386
info.version.target = II_TARG_80386;
cg_info.target = II_TARG_80386;
#elif _TARGET & _TARG_AXP
info.version.target = II_TARG_AXP;
cg_info.target = II_TARG_AXP;
#elif _TARGET & _TARG_PPC
info.version.target = II_TARG_PPC;
cg_info.target = II_TARG_PPC;
#elif _TARGET & _TARG_MIPS
info.version.target = II_TARG_MIPS;
cg_info.target = II_TARG_MIPS;
#else
#error UNKNOWN TARGET
#endif
return( info );
return( cg_info );
}
extern void BECloseFiles()
{
Expand Down
12 changes: 6 additions & 6 deletions bld/cg/c/bestub.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,15 @@ typedef union hdl_type {

extern cg_init_info BEInit(cg_switches switches, cg_target_switches tg_switches,
uint size,proc_revision proc) {
cg_init_info info;
info.version.is_large = true;
info.version.revision = II_REVISION;
cg_init_info cg_info;

cg_info.revision = II_REVISION;
#if _TARGET & _TARG_8086
info.version.target = II_TARG_8086;
cg_info.target = II_TARG_8086;
#else
info.version.target = II_TARG_80386;
cg_info.target = II_TARG_80386;
#endif
return( info );
return( cg_info );
}
extern void BEStart() {}
extern void BEStop() {}
Expand Down
23 changes: 11 additions & 12 deletions bld/cg/c/intrface.c
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ cg_init_info _CGAPI BEInitCg( cg_switches switches,
proc_revision proc )
/**************************************************************/
{
cg_init_info info;
cg_init_info cg_info;

OptForSize = (byte)optsize;
CGProcessorVersion = proc; /* so _CPULevel works */
Expand Down Expand Up @@ -153,26 +153,25 @@ cg_init_info _CGAPI BEInitCg( cg_switches switches,
TypeInit();
TInit();
if( !CGOpenf() ) {
info.success = 0;
cg_info.revision = 0;
cg_info.target = 0;
} else {
info.success = 1;
info.version.is_large = true;
cg_info.revision = II_REVISION;
#if _TARGET & _TARG_8086
info.version.target = II_TARG_8086;
cg_info.target = II_TARG_8086;
#elif _TARGET & _TARG_80386
info.version.target = II_TARG_80386;
cg_info.target = II_TARG_80386;
#elif _TARGET & _TARG_370
info.version.target = II_TARG_370; /* NYI -- for now */
cg_info.target = II_TARG_370; /* NYI -- for now */
#elif _TARGET & _TARG_AXP
info.version.target = II_TARG_AXP;
cg_info.target = II_TARG_AXP;
#elif _TARGET & _TARG_PPC
info.version.target = II_TARG_PPC;
cg_info.target = II_TARG_PPC;
#elif _TARGET & _TARG_MIPS
info.version.target = II_TARG_MIPS;
cg_info.target = II_TARG_MIPS;
#endif
info.version.revision = II_REVISION;
}
return( info );
return( cg_info );
}

cg_init_info _CGAPI BEInit( cg_switches switches,
Expand Down
10 changes: 3 additions & 7 deletions bld/cg/doc/cgref.gml
Original file line number Diff line number Diff line change
Expand Up @@ -340,13 +340,9 @@ SET_WTK( proc, WTK_3167 );
The return value structure is defined as follows:
.np
:XMP.
typedef union cg_init_info {
struct {
unsigned revision : 10; /* contains II_REVISION */
unsigned target : 5; /* has II_TARG_??? */
unsigned is_large : 1; /* 1 if 16 bit host */
} version;
int success;
typedef struct cg_init_info {
unsigned short revision; /* contains II_REVISION */
unsigned short target; /* has II_TARG_??? */
} cg_init_info;

enum {
Expand Down
20 changes: 8 additions & 12 deletions bld/cg/h/cg.h
Original file line number Diff line number Diff line change
Expand Up @@ -204,13 +204,9 @@ typedef enum {
#define DBG_NIL_TYPE ((dbg_type)0)
#define DBG_FWD_TYPE ((dbg_type)-1)

typedef union cg_init_info {
struct {
unsigned revision : 10;
unsigned target : 5;
unsigned is_large : 1;
} version;
int success;
typedef struct cg_init_info {
unsigned short revision;
unsigned short target;
} cg_init_info;

enum {
Expand All @@ -229,16 +225,16 @@ enum {
/*
Front end should do
cg_init_info info;
cg_init_info cg_info;
info = BEInit(...);
if( info.success == 0 ) {
cg_info = BEInit(...);
if( cg_info.revision == 0 && cg_info.target == 0 ) {
// The code generator didn't initialize! terminate (dnpg,dncthd)
} else {
if( info.version.revision != II_REVISION ) {
if( cg_info.revision != II_REVISION ) {
// crap out --- wrong version of code generator
}
// look at info.version.is_large and info.version.target
// look at cg_info.target
}
*/
Expand Down
14 changes: 7 additions & 7 deletions bld/f77/wfc/c/fcgmain.c
Original file line number Diff line number Diff line change
Expand Up @@ -347,21 +347,21 @@ static void CGStart( void )
}
cg_info = BEInit( cg_gen_opts, cg_target_opts, space_time, cpu );

if( cg_info.success != 0 ) {
if( ( cg_info.version.target == II_TARG_STUB ) ||
( cg_info.version.target == II_TARG_CHECK ) ) {
if( cg_info.target != 0 || cg_info.revision != 0 ) {
if( ( cg_info.target == II_TARG_STUB ) ||
( cg_info.target == II_TARG_CHECK ) ) {
InitCG();
#if _CPU == 8086
} else if( cg_info.version.target == II_TARG_8086 ) {
} else if( cg_info.target == II_TARG_8086 ) {
InitCG();
#elif _CPU == 386
} else if( cg_info.version.target == II_TARG_80386 ) {
} else if( cg_info.target == II_TARG_80386 ) {
InitCG();
#elif _CPU == _AXP
} else if( cg_info.version.target == II_TARG_AXP ) {
} else if( cg_info.target == II_TARG_AXP ) {
InitCG();
#elif _CPU == _PPC
} else if( cg_info.version.target == II_TARG_PPC ) {
} else if( cg_info.target == II_TARG_PPC ) {
InitCG();
#else
#error no or invalid target specified
Expand Down
4 changes: 2 additions & 2 deletions bld/plusplus/c/cgbkmain.c
Original file line number Diff line number Diff line change
Expand Up @@ -3143,11 +3143,11 @@ void CgBackEnd( // BACK-END CONTROLLER
CtxSetCurrContext( CTX_CG_FUNC );
if( BELoad( NULL ) ) {
cg_info = BEInitCg( GenSwitches, TargetSwitches, OptSize, CpuSwitches );
if( !cg_info.success ) {
if( cg_info.revision == 0 && cg_info.target == 0 ) {
CErr1( ERR_CODEGEN_CANT_INITIALIZE );
CSuicide();
#ifdef DEVBUILD
} else if( cg_info.version.revision != II_REVISION ) {
} else if( cg_info.revision != II_REVISION ) {
CFatal( "Incorrect Code Generator version" );
#endif
} else {
Expand Down

0 comments on commit d3401ff

Please sign in to comment.