[Bug tree-optimization/80492] [5/6/7 Regression] Wrong code when unrolling a loop with inline asm and local regs
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Apr 24 15:38:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80492
--- Comment #8 from Uroš Bizjak <ubizjak at gmail dot com> ---
Happens in fre3 pass.
The pass starts with:
do_syscalls ()
{
register int reg __asm__ (*4);
register int reg __asm__ (*4);
int s;
<bb 2> [33.33%]:
reg = 0;
__asm__ __volatile__("/* Some Code %0 */" : : "r" reg);
reg = 1;
__asm__ __volatile__("/* Some Code %0 */" : : "r" reg);
s_11 = 1;
reg = 0;
__asm__ __volatile__("/* Some Code %0 */" : : "r" reg);
reg = 1;
__asm__ __volatile__("/* Some Code %0 */" : : "r" reg);
s_16 = 2;
return;
}
and converts the above to:
do_syscalls ()
{
register int reg __asm__ (*4);
register int reg __asm__ (*4);
int s;
<bb 2> [33.33%]:
reg = 0;
__asm__ __volatile__("/* Some Code %0 */" : : "r" reg);
reg = 1;
__asm__ __volatile__("/* Some Code %0 */" : : "r" reg);
__asm__ __volatile__("/* Some Code %0 */" : : "r" reg);
__asm__ __volatile__("/* Some Code %0 */" : : "r" reg);
return;
}
More information about the Gcc-bugs
mailing list