URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 297 |
Rev 338 |
/* PR middle-end/13400 */
|
/* PR middle-end/13400 */
|
/* The following test used to fail at run-time with a write to read-only
|
/* The following test used to fail at run-time with a write to read-only
|
memory, caused by if-conversion converting a conditional write into an
|
memory, caused by if-conversion converting a conditional write into an
|
unconditional write. */
|
unconditional write. */
|
|
|
typedef struct {int c, l; char ch[3];} pstr;
|
typedef struct {int c, l; char ch[3];} pstr;
|
const pstr ao = {2, 2, "OK"};
|
const pstr ao = {2, 2, "OK"};
|
const pstr * const a = &ao;
|
const pstr * const a = &ao;
|
|
|
void test1(void)
|
void test1(void)
|
{
|
{
|
if (a->ch[a->l]) {
|
if (a->ch[a->l]) {
|
((char *)a->ch)[a->l] = 0;
|
((char *)a->ch)[a->l] = 0;
|
}
|
}
|
}
|
}
|
|
|
void test2(void)
|
void test2(void)
|
{
|
{
|
if (a->ch[a->l]) {
|
if (a->ch[a->l]) {
|
((char *)a->ch)[a->l] = -1;
|
((char *)a->ch)[a->l] = -1;
|
}
|
}
|
}
|
}
|
|
|
void test3(void)
|
void test3(void)
|
{
|
{
|
if (a->ch[a->l]) {
|
if (a->ch[a->l]) {
|
((char *)a->ch)[a->l] = 1;
|
((char *)a->ch)[a->l] = 1;
|
}
|
}
|
}
|
}
|
|
|
int main(void)
|
int main(void)
|
{
|
{
|
test1();
|
test1();
|
test2();
|
test2();
|
test3();
|
test3();
|
return 0;
|
return 0;
|
}
|
}
|
|
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.