local-alloc.c (contains_replace_regs): LO_SUM may contain replace regs.
* local-alloc.c (contains_replace_regs): LO_SUM may contain replace regs. * gcc.c-torture/execute/20020402-2.c: New. From-SVN: r51773
This commit is contained in:
parent
d32c91705d
commit
7a145e929d
@ -1,3 +1,9 @@
|
|||||||
|
2002-04-02 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
|
PR opt/3967
|
||||||
|
* local-alloc.c (contains_replace_regs): LO_SUM may contain
|
||||||
|
replace regs.
|
||||||
|
|
||||||
2002-04-02 Richard Henderson <rth@redhat.com>
|
2002-04-02 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
* doc/standards.texi: Document required freestanding libc entry points.
|
* doc/standards.texi: Document required freestanding libc entry points.
|
||||||
|
@ -664,7 +664,6 @@ contains_replace_regs (x)
|
|||||||
case PC:
|
case PC:
|
||||||
case CC0:
|
case CC0:
|
||||||
case HIGH:
|
case HIGH:
|
||||||
case LO_SUM:
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case REG:
|
case REG:
|
||||||
|
230
gcc/testsuite/gcc.c-torture/execute/20020402-2.c
Normal file
230
gcc/testsuite/gcc.c-torture/execute/20020402-2.c
Normal file
@ -0,0 +1,230 @@
|
|||||||
|
/* 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;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user