This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
ignored 'goto *(void*)' insn.
- From: b u <bnulbig at yahoo dot com>
- To: gcc-help at gcc dot gnu dot org
- Date: Thu, 29 Jul 2004 00:08:32 -0700 (PDT)
- Subject: ignored 'goto *(void*)' insn.
I'm wondering if this behavior is a bug or not. The
following code generates the output:
0x8048774
FINISHED
as opposed to the half-expected
0xADDR
REACHED
FINISHED
(The other half of me expects a seg-fault with ebp
being reset and all.) The fact is that it just
ignores the goto all together. There is no jmp
generated between the last two cout's. And yes, I
know it's not real code... Any ideas??
# 2 "interp_test.cpp" 2
void* v;
void func( void )
{
std::cout << "REACHED" << '\n';
std::cout.flush();
goto *v;
}
int main( void )
{
__label__ FINISHED;
v = &&FINISHED;
union pf2po { void (*func)(void); void* object; };
pf2po f;
f.func = func;
std::cout << std::hex << "0x" <<
(unsigned)f.object << '\n';
goto *f.object;
FINISHED:
std::cout << "FINISHED\n";
}
//////////////////////////////////////////////////////
The exact version of GCC;
gcc-3.3.2
the system type;
Linux 2.6.2 #8 SMP Sun Feb 15 00:47:02 EST 2004 i686
(pentium4 c 800 3.01)
the options given when GCC was configured/built;
Configured with: ../gcc-3.3.2/configure
--prefix=/usr
--enable-languages=c,c++,objc --enable-threads=posix
--enable-__cxa_atexit
--enable-clocale=gnu --enable-shared --disable-nls
Thread model: posix
the complete command line that triggers the bug;
g++ interp_test.cpp
the compiler output (error messages, warnings, etc.);
doesn't generate 'jmp' for "goto *f.object;" (When
a.out is run, the
following output is generated:
0x8048774
FINISHED
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com