[Bug c++/14950] New: always_inline does not mix with templates and -O0
veksler at il dot ibm dot com
gcc-bugzilla@gcc.gnu.org
Wed Apr 14 08:06:00 GMT 2004
The following does not compile with -O0, but does with -O2. It used to
work well on gcc-3.2 and gcc-3.1
$ cat t.cc
template <class T> inline void Foo(T) __attribute__((always_inline));
template <class T> inline void Foo(T) {}
int main()
{
int i;
Foo(i);
}
$ $gcc34/bin/g++ -c t.cc
t.cc: In function `int main()':
t.cc:2: sorry, unimplemented: inlining failed in call to 'void Foo(T)
[with T = int]': function body not available
t.cc:6: sorry, unimplemented: called from here
When compiled with -O, it works OK. When the same is done without
templates it works OK:
$ cat t2.cc
inline void Foo(int) __attribute__((always_inline));
inline void Foo(int) {}
int main()
{
int i;
Foo(i);
}
This is inconsistent.
$ $gcc34/bin/g++ -v
Reading specs from /home/veksler/gcc/lib/gcc/i686-pc-linux-gnu/3.4.0/specs
Configured with: ../gcc-3.4.0-20040406/configure --prefix=/home/veksler/gcc
--enable-languages=c++
Thread model: posix
gcc version 3.4.0 20040407 (prerelease)
--
Summary: always_inline does not mix with templates and -O0
Product: gcc
Version: 3.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: veksler at il dot ibm dot com
CC: gcc-bugs at gcc dot gnu dot org
GCC host triplet: i686-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14950
More information about the Gcc-bugs
mailing list