blob: 81b5ff1d5ae65556e8b8f11a7fbc32512192f818 [file] [log] [blame]
/* PR 3967
local-alloc screwed up consideration of high+lo_sum and created
reg_equivs that it shouldn't have, resulting in lo_sum with
uninitialized data, resulting in segv. The test has to remain
relatively large, since register spilling is required to twig
the bug. */
unsigned long *Local1;
unsigned long *Local2;
unsigned long *Local3;
unsigned long *RDbf1;
unsigned long *RDbf2;
unsigned long *RDbf3;
unsigned long *IntVc1;
unsigned long *IntVc2;
unsigned long *IntCode3;
unsigned long *IntCode4;
unsigned long *IntCode5;
unsigned long *IntCode6;
unsigned long *Lom1;
unsigned long *Lom2;
unsigned long *Lom3;
unsigned long *Lom4;
unsigned long *Lom5;
unsigned long *Lom6;
unsigned long *Lom7;
unsigned long *Lom8;
unsigned long *Lom9;
unsigned long *Lom10;
unsigned long *RDbf11;
unsigned long *RDbf12;
typedef struct
{
long a1;
unsigned long n1;
unsigned long local1;
unsigned long local2;
unsigned long local3;
unsigned long rdbf1;
unsigned long rdbf2;
unsigned long milli;
unsigned long frames1;
unsigned long frames2;
unsigned long nonShared;
long newPrivate;
long freeLimit;
unsigned long cache1;
unsigned long cache2;
unsigned long cache3;
unsigned long cache4;
unsigned long cache5;
unsigned long time6;
unsigned long frames7;
unsigned long page8;
unsigned long ot9;
unsigned long data10;
unsigned long bm11;
unsigned long misc12;
}
ShrPcCommonStatSType;
typedef struct
{
unsigned long sharedAttached;
unsigned long totalAttached;
long avgPercentShared;
unsigned long numberOfFreeFrames;
unsigned long localDirtyPageCount;
unsigned long globalDirtyPageCount;
long wakeupInterval;
unsigned long numActiveProcesses;
unsigned long numRecentActiveProcesses;
unsigned long gemDirtyPageKinds[10];
unsigned long stoneDirtyPageKinds[10];
unsigned long gemsInCacheCount;
long targetFreeFrameCount;
}
ShrPcMonStatSType;
typedef struct
{
unsigned long c1;
unsigned long c2;
unsigned long c3;
unsigned long c4;
unsigned long c5;
unsigned long c6;
unsigned long c7;
unsigned long c8;
unsigned long c9;
unsigned long c10;
unsigned long c11;
unsigned long c12;
unsigned long a1;
unsigned long a2;
unsigned long a3;
unsigned long a4;
unsigned long a5;
unsigned long a6;
unsigned long a7;
unsigned long a8;
unsigned long a9;
unsigned long a10;
unsigned long a11;
unsigned long a12;
unsigned long a13;
unsigned long a14;
unsigned long a15;
unsigned long a16;
unsigned long a17;
unsigned long a18;
unsigned long a19;
unsigned long sessionStats[40];
}
ShrPcGemStatSType;
union ShrPcStatUnion
{
ShrPcMonStatSType monitor;
ShrPcGemStatSType gem;
};
typedef struct
{
int processId;
int sessionId;
ShrPcCommonStatSType cmn;
union ShrPcStatUnion u;
} ShrPcStatsSType;
typedef struct
{
unsigned long *p1;
unsigned long *p2;
unsigned long *p3;
unsigned long *p4;
unsigned long *p5;
unsigned long *p6;
unsigned long *p7;
unsigned long *p8;
unsigned long *p9;
unsigned long *p10;
unsigned long *p11;
}
WorkEntrySType;
WorkEntrySType Workspace;
static void
setStatPointers (ShrPcStatsSType * statsPtr, long sessionId)
{
statsPtr->sessionId = sessionId;
statsPtr->cmn.a1 = 0;
statsPtr->cmn.n1 = 5;
Local1 = &statsPtr->cmn.local1;
Local2 = &statsPtr->cmn.local2;
Local3 = &statsPtr->cmn.local3;
RDbf1 = &statsPtr->cmn.rdbf1;
RDbf2 = &statsPtr->cmn.rdbf2;
RDbf3 = &statsPtr->cmn.milli;
*RDbf3 = 1;
IntVc1 = &statsPtr->u.gem.a1;
IntVc2 = &statsPtr->u.gem.a2;
IntCode3 = &statsPtr->u.gem.a3;
IntCode4 = &statsPtr->u.gem.a4;
IntCode5 = &statsPtr->u.gem.a5;
IntCode6 = &statsPtr->u.gem.a6;
{
WorkEntrySType *workSpPtr;
workSpPtr = &Workspace;
workSpPtr->p1 = &statsPtr->u.gem.a7;
workSpPtr->p2 = &statsPtr->u.gem.a8;
workSpPtr->p3 = &statsPtr->u.gem.a9;
workSpPtr->p4 = &statsPtr->u.gem.a10;
workSpPtr->p5 = &statsPtr->u.gem.a11;
workSpPtr->p6 = &statsPtr->u.gem.a12;
workSpPtr->p7 = &statsPtr->u.gem.a13;
workSpPtr->p8 = &statsPtr->u.gem.a14;
workSpPtr->p9 = &statsPtr->u.gem.a15;
workSpPtr->p10 = &statsPtr->u.gem.a16;
workSpPtr->p11 = &statsPtr->u.gem.a17;
}
Lom1 = &statsPtr->u.gem.c1;
Lom2 = &statsPtr->u.gem.c2;
Lom3 = &statsPtr->u.gem.c3;
Lom4 = &statsPtr->u.gem.c4;
Lom5 = &statsPtr->u.gem.c5;
Lom6 = &statsPtr->u.gem.c6;
Lom7 = &statsPtr->u.gem.c7;
Lom8 = &statsPtr->u.gem.c8;
Lom9 = &statsPtr->u.gem.c9;
Lom10 = &statsPtr->u.gem.c10;
RDbf11 = &statsPtr->u.gem.c11;
RDbf12 = &statsPtr->u.gem.c12;
}
typedef struct
{
ShrPcStatsSType stats;
} ShrPcPteSType;
ShrPcPteSType MyPte;
static void
initPte (void *shrpcPtr, long sessionId)
{
ShrPcPteSType *ptePtr;
ptePtr = &MyPte;
setStatPointers (&ptePtr->stats, sessionId);
}
void
InitCache (int sessionId)
{
initPte (0, sessionId);
}
int
main (int argc, char *argv[])
{
InitCache (5);
return 0;
}