🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Mike Stump Tue, 21 Jul 1992 00:11
WRONG LIST (was: Re: Bugreport on GCC 2.2.2 running as C++ compiler...)
#173
Author: Mike Stump
Date: Tue, 21 Jul 1992 00:11
100 lines
3226 bytes
In the future please report all g++ bugs to the
        bug-g++@prep.ai.mit.edu
list, thanks.  If they are back-end bugs, they can be reported here,
but please let us know if you think the problem is in the back-end.

You don't need to resubmit this one.

> From: d9hh@dtek.chalmers.se
> Message-Id: <9207192148.AA09547@hacke0.dtek.chalmers.se>
> To: bug-gcc@prep.ai.mit.edu
> Date: Sun, 19 Jul 92 23:48:19 MET DST

> Hi, I think I've found a bug, even though I'm not a 100% sure, this is
> probably something you can figure out in a split second.

> Here we go...

> Version:
> GCC 2.1 and 2.2.2 (these are the versions I've seen the error (?) in).

> Running on machine:
> Some kind of Unix machine (GCC2.2.2), but I've also seen it on my Amiga and on
> a Sun (version 2.1)

> This is what I think is wrong:
> When compiling C++ programs: When assigning a function pointer to
> the adress of another function something in the type checking fails.

> Ok to see it clearly here are some sourcecodes:

> file one (C++)
> --------------

> // Yeah I know I should use iostream.h instead, but I'm trying to
> // make a point here that's all...
> #include "stdio.h"

> void foo(int&);

> void (*bar)(char);

> main() {
> 	int e = 34;
> 	bar = &foo;     // *** Compiler should complain here
> 	bar(e);         // ...booom!!
> }


> void foo(int& a) {
> 	printf("output: %d\n",a);
> }

> EOF


> file two (still C++)
> --------------------

> #include "stdio.h"

> void foo(int*);

> void (*bar)(char);

> main() {
> 	int e = 34;
> 	bar = &foo;    // **** Compiler should complain here
> 	bar(e);
> }


> void foo(int* a) {
> 	printf("output: %d\n",*a);
> }

> EOF

> Ok. when compiling these two files doing 'gcc file1.cc' or 
> 'gcc file2.cc' the compiler says nothing at all about the difference in
> type for bar and foo. See? bar takes a char and foo takes an int reference
> or in file two, an int pointer, still, the compiler says nothing at all.
> When running the programs, all I get is 'bus error' or 'segmentation 
> fault'... (Or a nice crash on my Amiga.. :-).

> Trying to compile with 'gcc -ansi -pedantic -Wall' makes no difference.

> When trying to compile the same thing on CC instead, the compiler
> says this is clearly an error. The most interesting thing, though
> that kind of convinces me is that when compiling file two as plain C
> (which it is) GCC gives a warning about 'assignment from incompatible
> pointer type'.

> Hope this helps. And thanks for providing the world with the best
> compiler ever!


> -- 
> Henrik Harmsen     Internet:  d9hh@dtek.chalmers.se
>                Chalmers University of Technology, Sweden. 
>       "I haven't lost my mind -- it's backed up on tape somewhere."
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads