[Bug target/58391] New: avr-gcc: Certain functions with computed goto could be inlined
semicontinuity at yandex dot ru
gcc-bugzilla@gcc.gnu.org
Wed Sep 11 13:48:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58391
Bug ID: 58391
Summary: avr-gcc: Certain functions with computed goto could be
inlined
Product: gcc
Version: 4.7.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: semicontinuity at yandex dot ru
Certain functions with computed goto could be inlined.
Currently, if a function contains computed goto it is not inlined.
Here, the function and the address variable are static and function is called
from one place only, so the compiler could have inlined the function, just like
functions without computed goto.
// ---------------------------------------------------------------------
static void* address;
static void test(void) {
char flag = 1;
goto *address; // address is computed properly beforehand (left out for
brevity)
for(;;) {
asm volatile("nop\t\n");
flag = 0;
L1: (void)&&L1;
if (flag==0) { address = &&L1; return; }
asm volatile("nop\t\n");
flag = 0;
L2: (void)&&L2;
if (flag==0) { address = &&L2; return; }
}
}
int main(void) {
for(;;) {
test();
}
return 0;
}
// ---------------------------------------------------------------------
Compiling C: main.c
avr-gcc -c -mmcu=atmega8535 -I. -gdwarf-2 -I../../bsp -I../../../.. -O3
-save-temps -v -ffixed-r2 -ffixed-r3 -funsigned-char -funsigned-bitfields
-fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef
-Wa,-adhlns=.obj/main.lst -std=gnu99 -Wundef -MD -MP -MF .dep/main.o.d main.c
-o .obj/main.o
Using built-in specs.
COLLECT_GCC=avr-gcc
Target: avr
Configured with: ../../gcc.gnu.org/gcc-4_7-branch/configure --target=avr
--prefix=/local/gnu/install/gcc-4.7-mingw32 --host=i386-mingw32
--build=i686-linux-gnu --enable-languages=c,c++ --disable-nls --disable-shared
--with-dwarf2 --with-avrlibc=yes
Thread model: single
gcc version 4.7.2 (GCC)
More information about the Gcc-bugs
mailing list