mirror of
https://github.com/nArnoSNES/tcc-65816.git
synced 2025-02-21 11:29:01 +00:00
73 lines
1.1 KiB
C
73 lines
1.1 KiB
C
/* PR middle-end/30262 */
|
|
extern void abort (void);
|
|
|
|
int
|
|
foo (void)
|
|
{
|
|
unsigned int x = 0;
|
|
|
|
void nested (void)
|
|
{
|
|
x = 254;
|
|
}
|
|
|
|
nested ();
|
|
asm volatile ("" :: "r" (x));
|
|
asm volatile ("" :: "m" (x));
|
|
asm volatile ("" :: "mr" (x));
|
|
asm volatile ("" : "=r" (x) : "0" (x));
|
|
asm volatile ("" : "=m" (x) : "m" (x));
|
|
return x;
|
|
}
|
|
|
|
int
|
|
bar (void)
|
|
{
|
|
unsigned int x = 0;
|
|
|
|
void nested (void)
|
|
{
|
|
asm volatile ("" :: "r" (x));
|
|
asm volatile ("" :: "m" (x));
|
|
asm volatile ("" :: "mr" (x));
|
|
x += 4;
|
|
asm volatile ("" : "=r" (x) : "0" (x));
|
|
asm volatile ("" : "=m" (x) : "m" (x));
|
|
}
|
|
|
|
nested ();
|
|
return x;
|
|
}
|
|
|
|
int
|
|
baz (void)
|
|
{
|
|
unsigned int x = 0;
|
|
|
|
void nested (void)
|
|
{
|
|
void nested2 (void)
|
|
{
|
|
asm volatile ("" :: "r" (x));
|
|
asm volatile ("" :: "m" (x));
|
|
asm volatile ("" :: "mr" (x));
|
|
x += 4;
|
|
asm volatile ("" : "=r" (x) : "0" (x));
|
|
asm volatile ("" : "=m" (x) : "m" (x));
|
|
}
|
|
nested2 ();
|
|
nested2 ();
|
|
}
|
|
|
|
nested ();
|
|
return x;
|
|
}
|
|
|
|
int
|
|
main (void)
|
|
{
|
|
if (foo () != 254 || bar () != 4 || baz () != 8)
|
|
abort ();
|
|
return 0;
|
|
}
|