| // { dg-do run } |
| // 980945 bkoz |
| // test for correct operators at link time |
| |
| /* |
| /tmp/cca211431.o: In function `void blah<foo<int> >(foo<int> const &)': |
| /tmp/cca211431.o(.void gnu.linkonce.t.blah<foo<int> >(foo<int> const &)+0x1e): undefined reference to `void x<int>(int const &)' |
| */ |
| |
| template<class T> |
| class foo { |
| public: |
| foo () {} |
| friend void x (const T &) { } |
| }; |
| |
| void x(const int &); |
| |
| template<class T> |
| void blah (const T &) { |
| T y; |
| x (4); |
| } |
| |
| int main () { |
| const foo<int> v; |
| blah (v); |
| } |
| |
| /* |
| fno-exceptions -fno-rtti |
| |
| 1.98r1.o: |
| 00000000 W __t3foo1Zi |
| 00000000 W blah__H1Zt3foo1Zi_RCX01_v |
| 00000000 t gcc2_compiled. |
| 00000000 T main |
| U x__H1Zi_RCX01_v |
| |
| 1.egcs.o: |
| 00000000 W __t3foo1Zi |
| 00000000 W blah__H1Zt3foo1Zi_RCX01_v |
| 00000000 t gcc2_compiled. |
| 00000000 T main |
| 00000000 W x__FRCi |
| |
| |
| the reason this goes away at -O is because the U or W function is |
| elided completely. |
| |
| */ |
| |