This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
c++/498: Passing template function pointers to function
- To: gcc-gnats at gcc dot gnu dot org
- Subject: c++/498: Passing template function pointers to function
- From: piotr at diku dot dk
- Date: 31 Aug 2000 11:34:25 -0000
- Reply-To: piotr at diku dot dk
- Resent-Cc: gcc-prs at gcc dot gnu dot org, gcc-bugs at gcc dot gnu dot org, jason at gcc dot gnu dot org
- Resent-Reply-To: gcc-gnats@gcc.gnu.org, piotr@diku.dk
>Number: 498
>Category: c++
>Synopsis: Passing template function pointers to function
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: ice-on-legal-code
>Submitter-Id: net
>Arrival-Date: Thu Aug 31 04:36:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator: Piotr Czarny
>Release: gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
>Organization:
>Environment:
RedHat Linux 6.1, K6-2 300MHz, 192 megs RAM
>Description:
Line 59 in the attached file makes the egcs go down like this:
icegpp.cc: In method `int PCthreads<int>::start<int>(void (*)(void *), void *)':
icegpp.cc:86: instantiated from here
icegpp.cc:64: Internal compiler error 980715.
I try to pass a pointer to a template function to
pthread_create from pthread library (POSIX threads). If I
change the function to common non template function
everything seems to be OK.
Another strange thing is, that if I try to pass function
"this->run" to the pthread_create, than I get a strange
warning and the void* PCThreads::run(void*) function gets
a wrong pointer to the arguments structure. But that might
be a whole different story.
Keep up the great work.
>How-To-Repeat:
g++ -lpthreads icegpp.cc
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="icegpp.cc"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="icegpp.cc"
I2luY2x1ZGU8cHRocmVhZC5oPgojaW5jbHVkZTxpb3N0cmVhbS5oPgoKdGVtcGxhdGU8Y2xhc3Mg
Uz4Kdm9pZCAqIHBjdGhyZWFkX3J1bih2b2lkKik7CgovL1RlbXBsYXRlIGNsYXNzZXMgbXVzdCBi
ZSBkZWZpbmVkIGluIGhlYWRlciBmaWxlCi8vYmVjYXVzZSBvZiBidWdneSBnbnUgY29tcGlsZXIK
dGVtcGxhdGUgPGNsYXNzIFM+CmNsYXNzIFBDdGhyZWFkcyB7CiAgZnJpZW5kIHZvaWQgKiBwY3Ro
cmVhZF9ydW4odm9pZCAqKTsKIHB1YmxpYzoKICBpbnQgc3RhcnQodm9pZCAoKikodm9pZCopLCB2
b2lkICopOyAKICBpbnQgdGVzdChpbnQpOwogcHJpdmF0ZToKICB2b2xhdGlsZSBpbnQgdGNvdW50
OwogIC8vQ29tYmluZWQgc3RydWN1cmUgZm9yIFRocmVhZCBEYXRhIGFuZCBhcmdzCiAgc3RydWN0
IHN1YlQgewogICAgdm9pZCAoKmZ1bmN0aW9uKSh2b2lkICopOyAgICAvL0Z1bmN0aW9uIHBvaW50
ZXIKICAgIFMgKiBmdW5jdGlvbl9hcmdzOyAvL0Z1bmN0aW9uIGFyZ3VtZW50IHBvaW50ZXIKICAg
IHB0aHJlYWRfdCBwdDsgICAgICAvL1RocmVhZCBkYXRhCiAgICBwdGhyZWFkX2F0dHJfdCBwYTsg
Ly9UaHJlYWQgYXR0cmlidXRlcwogICAgaW50IGNpdW50OwogIH07CiAgLy9TIGZ1bmN0aW9uX2Fy
Z3M7CiAgdm9pZCpydW4odm9pZCp0aHJlYWRfZGF0YSk7Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBTPgp2
b2lkICogUEN0aHJlYWRzPFM+OjpydW4odm9pZCp0aHJlYWRfZGF0YSkgewogIGNvdXQgPDwgInRo
cmVhZF9kYXRhIDogIiA8PCB0aHJlYWRfZGF0YSA8PCAiXG4iOwogIHN1YlQgKiB0ZCA9IChzdWJU
Kil0aHJlYWRfZGF0YTsKICB2b2lkKCpmdW4pKHZvaWQqKSA9IHRkLT5mdW5jdGlvbjsKICBpbnQg
YSA9IHRkLT5jdW50OwogIGNvdXQgPDwgIkFuZCBoZXJlOiAiIDw8ICh2b2lkKilmdW4gPDwgIlx0
IGNvbnRyb2wgOiIgPDwgYSAgPDwiXG4iOwogIGRlbGV0ZSB0ZDsKICByZXR1cm4gMDsKfQoKdGVt
cGxhdGU8Y2xhc3MgUz4Kdm9pZCAqIHBjdGhyZWFkX3J1biAodm9pZCp0aHJlYWRfZGF0YSkgewog
IGNvdXQgPDwgInRocmVhZF9kYXRhIDogIiA8PCB0aHJlYWRfZGF0YSA8PCAiXG4iOwogIGNvdXQg
PDwgIlRocmVhZFxuIjsKICByZXR1cm4gMDsKfQoKdGVtcGxhdGU8Y2xhc3MgUz4KaW50IFBDdGhy
ZWFkczxTPjo6c3RhcnQodm9pZCAoKmZ1bmN0aW9uKSh2b2lkICopLCB2b2lkKmFyZ3MpIHsKICAg
IHN1YlQgKiB0aHJlYWREYXRhID0gbmV3IHN1YlQ7CiAgICB0aHJlYWREYXRhLT5jaXVudCA9IDQz
MjE7CiAgICB0aHJlYWREYXRhLT5mdW5jdGlvbj1mdW5jdGlvbjsKICAgIHZvaWQoKmZmZikodm9p
ZCopPXRocmVhZERhdGEtPmZ1bmN0aW9uOwogICAgKCpmZmYpKCh2b2lkKikzKTsKICAgIGNvdXQg
PDwgIlRocmVhZERhdGE6ICIgPDwgdGhyZWFkRGF0YSA8PCAiXG4iOwogICAgY291dCA8PCAiRi1w
b2ludDoiIDw8ICh2b2lkKilmdW5jdGlvbiA8PCAiXHQgYW5kICIgCgkgPDwodm9pZCopKHRocmVh
ZERhdGEtPmZ1bmN0aW9uKTw8ICJcbiI7CiAgICBwdGhyZWFkX2F0dHJfaW5pdCgmKHRocmVhZERh
dGEtPnBhKSk7CiAgICBwdGhyZWFkX2F0dHJfc2V0ZGV0YWNoc3RhdGUoJih0aHJlYWREYXRhLT5w
YSksUFRIUkVBRF9DUkVBVEVfREVUQUNIRUQpOwogICAgcHRocmVhZF9jcmVhdGUoJih0aHJlYWRE
YXRhLT5wdCksJih0aHJlYWREYXRhLT5wYSkscGN0aHJlYWRfcnVuPFM+LHRocmVhZERhdGEpOyAg
CiAgICBzbGVlcCgxKTsKICAgIHJldHVybiAwOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBTPgppbnQgUEN0
aHJlYWRzPFM+Ojp0ZXN0KGludCBhKSB7CiAgY291dCA8PCAiQUFBOiIgPDwgYSA8PCAiXG4iOwp9
CgojaW5jbHVkZTxzdHJpbmcuaD4KCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQoKdm9pZCBoYWxsbyh2b2lkKnBvaW50KSB7CiAgY291dCA8PCAiSGFs
bG8iIDw8ICJcbiI7Cn0KCmludCBtYWluKCkgewogIGludCBjb3VudD0wOwogIFBDdGhyZWFkczxp
bnQ+IHBjdDsKICBwY3Quc3RhcnQoaGFsbG8sKHZvaWQqKTApOwogIHJldHVybiAwOwp9Cg==