URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 297 |
Rev 338 |
/* This does not compile on HC11/HC12 due to the asm which requires
|
/* This does not compile on HC11/HC12 due to the asm which requires
|
two 32-bit registers. */
|
two 32-bit registers. */
|
/* { dg-do assemble } */
|
/* { dg-do assemble } */
|
/* { dg-xfail-if "" { m6811-*-* m6812-*-* } { "*" } { "" } } */
|
/* { dg-xfail-if "" { m6811-*-* m6812-*-* } { "*" } { "" } } */
|
|
|
/* PR optimization/5892 */
|
/* PR optimization/5892 */
|
typedef struct { unsigned long a; unsigned int b, c; } A;
|
typedef struct { unsigned long a; unsigned int b, c; } A;
|
typedef struct { unsigned long a; A *b; int c; } B;
|
typedef struct { unsigned long a; A *b; int c; } B;
|
|
|
static inline unsigned int
|
static inline unsigned int
|
bar (unsigned int x)
|
bar (unsigned int x)
|
{
|
{
|
unsigned long r;
|
unsigned long r;
|
asm ("" : "=r" (r) : "0" (x));
|
asm ("" : "=r" (r) : "0" (x));
|
return r >> 31;
|
return r >> 31;
|
}
|
}
|
|
|
int foo (B *x)
|
int foo (B *x)
|
{
|
{
|
A *y;
|
A *y;
|
y = x->b;
|
y = x->b;
|
y->b = bar (x->c);
|
y->b = bar (x->c);
|
y->c = ({ unsigned int z = 1; (z << 24) | (z >> 24); });
|
y->c = ({ unsigned int z = 1; (z << 24) | (z >> 24); });
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.